2014-01-22 02:00 PM - 最終編集日: 2021-07-21 11:17 PM 、編集者: kaihosok
Nexus には Scheduler と呼ばれる機能があります。
この機能は Unix における cron と似たものであり、特定のコマンドを定期的に発行するといったことが可能です。
本コンテンツでは「機器の監視目的で定期的にCPUの使用状況を記録する」というシナリオのもとでNexusのScheduler機能を解説いたします。
今回は説明を簡単にするために bootflash のファイルに対してログを上書きしていくという方法で記録をとります。
本番環境で同様の手法を取られる場合は bootflash の容量に注意してください。
Nexus 7000 の全バージョンで利用可能です。
本ドキュメントでは Nexus 7000 version 6.1(2) を利用して確認しております。
Nexus において Scheduler 機能はデフォルトで無効になっています。
有効化するには以下のコマンドを発行する必要があります。
SWITCH# conf t
SWITCH(config)# feature scheduler
スケジューラを走らせるには「どのような処理」を「どのようなタイミング」で動かすか決める必要があります。
タイミングの設定の際に「定義した処理」を登録する必要があるため、先に処理の定義を行います。
これは job の定義で行います。
job 名を決めたあとで、発行するコマンドを一行ずつ入力していきます。
以下の例では
- 現在時刻を出力
- コマンド名を echo でファイルに出力
- コマンドの実行結果をファイルに出力
- echo で空行をファイルに出力
をしております。
SWITCH(config)# scheduler job name TEST_JOB
SWITCH(config-job)# show clock >> bootflash:TEST.log
SWITCH(config-job)# echo "#show processes cpu history" >> bootflash:TEST.log
SWITCH(config-job)# show processes cpu history >> bootflash:TEST.log
SWITCH(config-job)# echo >> bootflash:TEST.log
SWITCH(config-job)# echo "#show processes cpu sort" >> bootflash:TEST.log
SWITCH(config-job)# show processes cpu sort >> bootflash:TEST.log
SWITCH(config-job)# echo >> bootflash:TEST.log
SWITCH(config-job)# exit
処理を定義したので、次にそれをどのようなルールで動かすかを定義します。
これは schedule の定義で行います。
まず schedule の名の定義を行い、そこで実行するジョブ名を選択し、次にどのような間隔で取るかを記載しています。
scheduler の時間の設定の詳細についてはドキュメントの最後に記載する弊社CCOをご参照ください。
ここでは1分ごとに、先に定義した job TEST_JOB を走らせるという設定を行っております。
SWITCH(config)# scheduler schedule name TEST_SCHEDULE
SWITCH(config-schedule)# job name TEST_JOB
SWITCH(config-schedule)# time start now repeat 1
Schedule starts from Wed Jan 22 14:11:50 2014
SWITCH(config-schedule)# exit
以上で設定は終了しました。
ファイルを確認してみます。
SWITCH(config)# show file bootflash:TEST.log
14:17:01.764 JST Wed Jan 22 2014
#show processes cpu history
1 1 11 11 2 11 1112 1 1 11 1 51 2
472776576371151695276141846651867394464445865165705635755168
100
90
80
70
60 #
50 #
40 #
30 # #
20 # # # # # # # #
10 ######################## ######### # ###################
0....5....1....1....2....2....3....3....4....4....5....5....
0 5 0 5 0 5 0 5 0 5
CPU% per second (last 60 seconds)
# = average CPU%
<省略>
#show processes cpu sort
PID Runtime(ms) Invoked uSecs 1Sec Process
----- ----------- -------- ----- ------ -----------
1 7335 105991 69 0.0% init
2 3 303 12 0.0% kthreadd
3 360 44487 8 0.0% migration/0
4 58694 10996251 5 0.0% ksoftirqd/0
5 16583 71851 230 0.0% watchdog/0
<省略>
14:18:03.915 JST Wed Jan 22 2014
#show processes cpu history
2 1 131 2 11 11 1 11 111 1 1 11 1
157598656473568514584552346566007733144557679617266968297974
100
90
80
70
60
50
40 #
30 #
20 # # ## # # # #
10 ######### ####### ####### ########### #####################
0....5....1....1....2....2....3....3....4....4....5....5....
0 5 0 5 0 5 0 5 0 5
CPU% per second (last 60 seconds)
# = average CPU%
<省略>
上記より、ほぼ1分間隔で
- show process cpu history
- show process cpu process
が取得できていることがわかります。
schedule の設定、及び実行状況は以下のコマンドで取得可能です。
SWITCH(config)# show scheduler config
config terminal
feature scheduler
scheduler logfile size 1024
end
config terminal
scheduler job name TEST_JOB
show clock >> bootflash:TEST.log
echo "#show processes cpu history" >> bootflash:TEST.log
show processes cpu history >> bootflash:TEST.log
echo >> bootflash:TEST.log
echo "#show processes cpu sort" >> bootflash:TEST.log
show processes cpu sort >> bootflash:TEST.log
echo >> bootflash:TEST.log
end
config terminal
scheduler schedule name TEST_SCHEDULE
time start 2014:01:22:14:11 repeat 1
job name TEST_JOB
end
SWITCH(config)# show scheduler schedule
Schedule Name : TEST_SCHEDULE
-----------------------------------
User Name : admin
Schedule Type : Run every 0 Days 0 Hrs 1 Mins
Start Time : Wed Jan 22 14:11:50 2014
Last Execution Time : Wed Jan 22 14:58:28 2014
Last Completion Time: Wed Jan 22 14:58:30 2014
Execution count : 46
-----------------------------------------------
Job Name Last Execution Status
-----------------------------------------------
TEST_JOB Success (0)
==============================================================================
本設定を応用して「設定ファイルを定期的にFTPサーバに保存する」といったことや「経路情報が変更されていないか確認する」といったことも実現できます。
定期的に実行する処理がある場合は是非、ご活用を検討してください。
なお、最新の Nexus での定期的な処理であれば、 scheduler 機能ではなく Python をバックグラウンドで実行することでも実現可能です。
Scheduler の詳しい設定方法につきましては以下のドキュメントが参考になります。
Cisco Nexus 7000 Series NX-OS System Management Configuration Guide, Release 5.x
Configuring the Scheduler
検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう
シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします