はじめに
NSO scheduler は NSO 4.5.2 から追加されたアクションのスケジューリング機能です。
crontab ライクなアクションの定期実行や、指定した時間に1回だけ実行するアクションをスケジューリングすることができます。
定期的に実施するアクション
定期的なアクションのスケジューリングでは、アクションの実行タイミング(scheduler)と、アクションの対象(action-node)、実行するアクション(action-name)を設定します。幾つか設定例を記載します。
- いつ(schedule):毎月1日の午前2時
対象(action-node):全てのデバイス
アクション(action-name):check-sync
scheduler task periodic-check-sync
schedule "0 2 1 * *"
action-node /devices
action-name check-sync
- いつ(schedule):毎週日曜日の午前4時30分
対象(action-node):全てのデバイス
アクション(action-name):NEDトレースファイルをリフレッシュ
scheduler task periodic-clear-trace
schedule "30 4 * * 0"
action-node /devices
action-name clear-trace
各設定コマンドについて説明します。
schedule
アクションの実行タイミングを crontab と同様のフォーマットで指定します。
フィールドの順番は以下のとおりです。
---------- minute (0 - 59)
| ---------- hour (0 - 23)
| | ---------- day of month (1 - 31)
| | | ---------- month (1 - 12)
| | | | ---------- day of week (0 - 6) (Sunday to Saturday)
| | | | |
* * * * *
各フィールドに指定可能な値は以下の通りです。
Field |
Allowed Values |
Allowed Special Characters |
Minutes |
0 - 59 |
* , - / |
Hours |
0 - 23 |
* , - / |
Day of month |
1 - 31 |
* , - / |
Month |
1 - 12 or JAN-DEC |
* , - / |
Day of week |
0 - 6 or SUN-SAT |
* , - / |
- アスタリスク( * ) は全ての値を意味します。
(例) 毎分は、Minutes に * を設定します。
- カンマ( , ) は複数の値を列挙するときに使います。
(例) 月・水・金は、Day of Week に MON,WED,FRI を設定します。
- ハイフン( - ) は値の範囲を指定するときに使います。
(例) 毎月1~5日は、Day of month に 1-5 を設定します。
- スラッシュ( / ) は間隔を指定するときに使います。
(例) 5分毎は、Minutes に */5 を設定します。
action-node
アクションを実行する対象となるノードを指定します。
設定可能な action-node は以下のとおりです。
admin@ncs(config)# scheduler task test action-node ?
Possible completions:
aaa alarms alias cluster compliance
customers devices java-vm nacm policy
python-vm scheduler services smart-license snmp
snmp-notification-receiver software ssh user webui
以下のように XPathを使って対象のノードを絞りこむこともできます。
scheduler task periodic-sync-from action-node /devices/device-group[name='ios']
action-name
実行するアクションを指定します。 設定した action-node に付随するアクションを設定することができます。
action-params
オプションでアクションに渡すパラメータを設定することができます。 パラメータのフォーマットは XMLです。
( 例 ) ステータスが cleared で 3日以上前のアラームを定期的に削除
scheduler task periodic-purge-alarms
schedule "* 0 * * *"
action-node /alarms
action-name purge-alarms
action-params <alarm-status>cleared</alarm-status><older-than><days>3</days></older-than>
1回だけ実施するアクション
1回だけ実施するアクションのスケジューリングでは、scheduler のかわりに time コマンドを使います。その他は定期的なアクションの設定と同様です。
- いつ(time):2018年1月24日の12時30分
対象(action-node):全てのデバイス( パラメータを使って対象デバイスを限定 )
アクション(action-name):sync-from
パラメータ(action-params):ios1 と ios2
scheduler task onetime-sync-from
time 2018-01-24T12:30:00
keep
action-node /devices
action-name sync-from
action-params <device>ios1</device><device>ios2</device>
各設定コマンドについて説明します。
time
アクションを実行する日時を YYYY-MM-DDTHH:MM:SS 形式で設定します。
keep
ワンタイムのタスクは、実行終了後にコンフィグから削除されます。
実行終了後もコンフィグを残しておきたい場合は keep オプションを設定してください。
Scheduler のトラブルシューティング
Scheduler のトラブルシューティングに有用なコマンドを紹介します。
show scheduler
過去の実行結果を表示します。
admin@ncs# show scheduler
scheduler suspended false
IS
NAME RUNNING WHEN DURATION SUCCEEDED INFO
---------------------------------------------------------------------------------------------
misconfig false 2018-01-24T04:26:00.525777+00:00 0.002 false Error when parsing params...
periodic-check-sync false 2018-01-24T04:08:00.452076+00:00 2.244 true -
scheduler task [name] get-next-run-times
次の実行タイミングを表示します。
admin@ncs# scheduler task periodic-check-sync get-next-run-times
next-run-time [ "2018-02-01 02:00:00" "2018-03-01 02:00:00" "2018-04-01 02:00:00" "2018-05-01 02:00:00" "2018-06-01 02:00:00" ]
suspend / resume
スケジューラは以下のコマンドで一時的に停止することができます。
admin@ncs# scheduler suspend
以下のコマンドで再開することができます。
admin@ncs# scheduler resume
ログファイル
スケジューラに関するログは主に devel.log、xpath.trace に出力されます。
リファレンス