概要
このドキュメントでは、Cisco Catalyst シリーズ スイッチで高い CPU 使用率を監視するために Cisco IOS® Embedded Event Manager(EEM)サブシステムを使用する方法について説明します。
前提条件
要件
このドキュメントでは、ユーザに Cisco IOS Embedded Event Manager(EEM)に関する知識があることを前提としています。
使用するコンポーネント
このドキュメントの情報は、Cisco Catalyst シリーズ スイッチに基づくものです。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。
表記法
ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。
背景説明
EEM は、期間が短く、コマンドライン インターフェイスを使用して手動でトラブルシューティングを行うのが困難である偶発的かつ散発的な CPU 使用率の急激な上昇のトラブルシューティングを行うのに非常に便利なツールです。CPU 使用率の急激な上昇の例を次に示します。
Switch#show process cpu history
<snip>
11111822511 11 111277711111 124111 11 1211111112161116
143342171209994090111878458239607111981270283361362429475
100
90
80 * ***
70 * *** *
60 * *** * *
50 * * *** * * *
40 * * *** * * *
30 * ** *** * * *
20 **** **** ** *** ** * ** ** **
10 *********************************************************
0....5....1....1....2....2....3....3....4....4....5....5....6....6....7.
0 5 0 5 0 5 0 5 0 5 0 5 0
CPU% per hour (last 72 hours)
* = maximum CPU% # = average CPU%
トラブルシュート
このセクションでは、CPU 使用率を監視するために EEM スクリプトを使用するいくつかの例について説明します。Catalyst 2960 および 3750 スイッチを使用すると、EEM で不揮発性 RAM(NVRAM)を使用できます。Catalyst 4500 スイッチを使用すると、EEM でブートフラッシュへの書き込みが可能になります。Catalyst 6500 を使用すると、EEM で disk0 および sup-bootdisk を使用できます。
注:このセクションで使用されるコマンドの詳細については、Command Lookup Tool(登録ユーザ専用)を使用してください。
2960XでCPU使用率が急上昇した場合にデータをキャプチャするEEM。
Catalyst 2960Xでは、フラッシュへの追加はサポートされていません。次のEEMは、フラッシュ:/TAC内の各ファイルにキャプチャされたデータをEEMの最後の実行からリダイレクトします。
logging buffered 8192 informational
process cpu threshold type total rising 80 interval 5
!
event manager applet High_CPU authorization bypass
event syslog pattern "CPURISINGTHRESHOLD"
action 001 syslog msg "EEM: HIGH CPU detected. Writing info to flash:"
action 002 cli command "enable"
action 003 cli command "term exec prompt timestamp"
action 004 cli command "term len 0"
action 005 cli command "mkdir TAC" pattern "Create.*"
action 006 cli command "TAC" pattern "Create.*"
action 007 cli command " "
action 008 cli command "show process cpu sorted | redirect flash:TAC/TAC_CPU.txt"
action 009 cli command "show buffers | redirect flash:TAC/TAC_Buffers.txt"
action 010 cli command "show interfaces summary | redirect flash:TAC/TAC_IntSumm.txt"
action 011 cli command "show interfaces stats | redirect flash:TAC/TAC_IntStat.txt"
action 012 cli command "show ip traffic | redirect flash:TAC/TAC_IPTraffic.txt"
action 013 cli command "show ip cef switching statistics | redirect flash:TAC/TAC_IPCef.txt"
action 014 cli command "show controllers cpu-interface | redirect flash:TAC/TAC_Controllers.txt"
action 015 cli command "show platform port-asic stats drop | redirect flash:TAC/TAC_Port-Asic.txt"
action 016 cli command "show platform ip unicast statistics | redirect flash:TAC/TAC_UnicastStats.txt"
action 017 cli command "show platform ip unicast counts | redirect flash:TAC/TAC_UnicastCounts.txt"
action 018 cli command "show platform tcam utilization | redirect flash:TAC/TAC_TCAM.txt"
action 019 syslog msg "EEM: Self-removing applet from configuration..."
action 020 cli command "configure terminal"
action 021 cli command "no event manager applet High_CPU"
action 022 syslog msg "EEM: Finished removing from configuration!"
action 023 cli command "end"
電子メール アラート
CPU 使用率が 50 % を超えると、次のスクリプトによって電子メールでアラートが送信されます。電子メールの本文には、show process cpu sorted コマンドの出力です。
event manager applet highcpu
event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.3.1 get-type exact entry-op ge entry-val 50 poll-interval 0.5
action 1.0 cli command "enable"
action 2.0 cli command "show proc cpu sorted"
action 3.0 mail server "192.168.1.1" to "user-to@domain.com" from "user-from@domain.com" subject "High CPU Alert" body "$_cli_result"
斜体の変数の定義は次のとおりです。
- highcpu – イベントマネージャアプリの名前
- let/script
- 1.3.6.1.4.1.9.9.109.1.1.1.1.3.1 - ルート プロセッサ(RP)の合計 CPU 使用率をポーリングするためのオブジェクト ID(OID)
- 50 - スクリプトを開始する CPU 使用率
- poll-interval 0.5 - スクリプトで CPU を監視する頻度(0.5 秒ごと)
- 192.169.1.1 - メール サーバの IP
ローカル ファイルへの出力の追加
次のスクリプトにより、必要な出力がローカル ファイル システムのファイルに追加されます。file system をスイッチ上の適切なファイル システムに置き換えてください。
event manager scheduler script thread class default number 1
event manager applet High_CPU
event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.3.1 get-type exact entry-op ge entry-val 50 poll-interval 0.5
action 0.0 syslog msg "High CPU DETECTED. Please wait - logging Information to file system:high_cpu.txt"
action 0.1 cli command "enable"
action 0.2 cli command "show clock | append file system:high_cpu.txt"
action 1.2 cli command "term length 0"
action 1.3 cli command "show process cpu sorted | append file system:high_cpu.txt"
action 1.4 cli command "show log | append file system:high_cpu.txt"
action 1.5 cli command "show interfaces | append file system:high_cpu.txt"
action 1.6 cli command "term length 24"
ローカル ファイルへの出力の追加とスクリプトの削除
このスクリプトにより、show process cpu sorted コマンドの出力がローカル ファイル システムのファイルに追加され、完了すると、それ自体が削除されます。file system をスイッチ上の適切なファイル システムに置き換えてください。
event manager scheduler script thread class default number 1
event manager applet High_CPU
event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.3.1 get-type exact entry-op gt entry-val 50 poll-interval 0.5
action 0.0 syslog msg "High CPU DETECTED. Please wait - logging Information to flash:high_cpu.txt"
action 0.1 cli command "enable"
action 0.2 cli command "term exec prompt timestamp"
action 1.3 cli command "show process cpu sorted | append file system:high_cpu.txt"
action 1.4 cli command "show process cpu sorted | append file system:high_cpu.txt"
action 1.4 cli command "show process cpu sorted | append file system:high_cpu.txt"
action 5.1 syslog msg "Finished logging information to file system:high_cpu.txt..."
action 5.1 syslog msg "Self-removing applet from configuration..."
action 5.2 cli command "term no exec prompt timestamp"
action 9.1 cli command "configure terminal"
action 9.2 cli command "no event manager applet High_CPU"
action 9.3 cli command "end"
出力の収集とローカル ファイルへの書き込み
このスクリプトでは、必要な出力を実行および収集して、それらの出力をローカル ファイル システムに書き込むために syslog ベースのトリガーを使用します。file system をスイッチ上の適切なファイル システムに置き換えてください。
process cpu threshold type total rising 70 interval 15
event manager applet DETECT_CPU
event syslog pattern ".*SYS-1-CPURISINGTHRESHOLD.*"
action 1 cli command "en"
action 2 cli command "show clock | append file system:cpuinfo"
action 3 cli command "show proc cpu sort | append file system:cpuinfo"
action 4 cli command "show line | append file system:cpuinfo"
モジュラ IOS での CPU 使用率の監視
また、Cisco EEM を使用して、モジュラ IOS で CPU 使用率を監視することもできます。モジュラ IOS で CPU を監視する方法に違いがあるため、IOS ベースのプロセスで CPU 使用率をチェックするために簡易ネットワーク管理プロトコル(SNMP)の OID(1.3.6.1.4.1.9.9.109.1.1.1.1.3.1)を使用できます。
このスクリプトでは、トリガーとして OID を使用して、必要な出力をローカル ファイル システムに書き込みます。file system をスイッチ上の適切なファイル システムに置き換えてください。
event manager scheduler script thread class default number 1
event manager applet High_CPU
event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.10.1 get-type exact entry-op ge entry-val 50 poll-interval 0.5
action 0.0 syslog msg "High CPU DETECTED. Please wait - logging Information to file system:high_cpu.txt"
action 0.1 cli command "enable"
action 0.2 cli command "show clock | append file system:high_cpu.txt"
action 1.2 cli command "term length 0"
action 1.3 cli command "show process cpu sorted | append file system:high_cpu.txt"
action 1.4 cli command "show log | append file system:high_cpu.txt"
action 1.5 cli command "show interfaces | append file system:high_cpu.txt"
action 1.6 cli command "term length 24"
スクリプトの削除
EEM スクリプトを削除するには、次のコマンドを入力してください。
Switch(config)#no event manager applet applet name
関連情報