組み込みイベントマネージャの概要
EEM は主なシステム イベントをモニタし、set ポリシーに従って動作します。このポリシーは、プログラムされたスクリプトで、これを使用して、特定の一連のイベントの発生に基づいて、アクションを呼び出すように、スクリプトをカスタマイズできます。スクリプトは、カスタム syslog または Simple Network Management Protocol(SNMP; 簡易ネットワーク管理プロトコル)トラップの生成、CLI コマンドの呼び出し、フェールオーバーの適用などのアクションを生成します。スイッチからすべてのイベント管理を管理できるわけではなく、何らかの問題によって、スイッチと外部ネットワーク管理デバイス間の通信に障害が発生することがあるため、EEM のイベント管理機能は役立ちます。スイッチを再起動することなく、自動回復アクションが実行される場合、ネットワークのアベイラビリティが向上します。
図 32-1 に EEM サーバ、コア イベント パブリッシャ(イベント検出器)、イベント サブスクライバ(ポリシー)の関係を示します。イベントパブリッシャはイベントを選別し、イベント サブスクライバによって提供されたイベント仕様と一致するときに、それらをパブリッシュします。イベント検出器は、イベントの発生時に EEM サーバに通知します。次に、EEM ポリシーによって、現在のシステムのステートと指定されたイベントのポリシーに指定されたアクションに基づいて、回復が実装されます。
図 32-1 組み込みイベント マネージャのコア イベント検出器
EEM 展開の例については、『 EEM Configuration for Cisco Integrated Services Router Platforms Guide 』を参照してください。
• 「イベント検出器」
• 「組み込みイベント マネージャの処理」
• 「組み込みイベント マネージャ ポリシー」
• 「組み込みイベント マネージャの環境変数」
• 「EEM 3.2」
イベント検出器
EEM ソフトウェアはイベント検出器と呼ばれ、EEM イベントの発生時を判断します。イベント検出器は、SNMP などのモニタ対象のエージェントとアクションを実装可能な EEM ポリシー間のインターフェイスを提供する個別のシステムです。
• アプリケーション固有のイベント検出器:任意の EEM ポリシーでイベントをパブリッシュできます。
• IOS CLI イベント検出器:CLI を通じて入力されたコマンドに基づいてポリシーを生成します。
• Generic Online Diagnostics(GOLD; 汎用オンライン診断)イベント検出器:指定したカードやサブカードで GOLD 失敗イベントが検出されると、イベントをパブリッシュします。
• カウンタ イベント検出器:名前付きカウンタが指定したしきい値を超えると、イベントをパブリッシュします。
• インターフェイス カウンタ イベント検出器:指定したインターフェイスの汎用 Cisco IOS インターフェイス カウンタが定義したしきい値を超えると、イベントをパブリッシュします。しきい値は絶対値か増分値で指定できます。たとえば、増分値を 50 に設定した場合、インターフェイス カウンタが 50 増えると、イベントがパブリッシュされます。
この検出器は、初期値と終了値の変化率に基づいて、インターフェイスに関するイベントもパブリッシュします。
• None イベント検出器:event manager run CLI コマンドで EEM ポリシーが実行されると、イベントをパブリッシュします。EEM は、ポリシー内のイベント仕様に基づいて、ポリシーをスケジュールし、実行します。EEM ポリシーは、event manager run コマンドを実行する前に、手動で指定し、登録する必要があります。
• Online Insertion and Removal(OIR; 活性挿抜)イベント検出器:ハードウェアの挿入または取り外し(OIR)イベントの発生時にイベントをパブリッシュします。
• リソースしきい値イベント検出器:グローバル プラットフォームの値およびしきい値に基づいて、ポリシーを生成します。CPU の使用率およびバッファ残量などのリソースを含みます。
• リモート プロシージャ コール(RPC)イベント検出器:Secure Shell(SSH; セキュア シェル)を使用した暗号化接続によってスイッチ外部から EEM ポリシーを呼び出し、XML ベースのメッセージ交換に SOAP(Simple Object Access Protocol)データ符号化を使用します。さらに、EEM ポリシーを実行し、SOAP XML 形式の応答で出力を受け取ります。
• SNMP イベント検出器:次の場合に、標準 SNMP MIB オブジェクトをモニタし、イベントを生成できます。
– オブジェクトが指定した値と一致するか指定したしきい値を超える。
– 期間の最初のモニタ対象のオブジェクト識別子(OID)値とイベントのパブリッシュ時の実際の OID 値の差である SNMP デルタ値が指定した値に一致する。
• SNMP 通知イベント検出器:SNMP トラップを代行受信し、スイッチで受信されたメッセージを通知します。着信メッセージが指定した値に一致するか、定義したしきい値を超えた場合に、イベントが生成されます。
• Syslog イベント検出器:正規表現パターンに一致する syslog メッセージを選別できます。選択したメッセージはさらに絞り込むことができます。指定した期間内で、特定数の発生が記録される必要があります。指定したイベント基準に一致すると、設定済みのポリシー アクションが実行されます。
• タイマー イベント検出器:次のイベントをパブリッシュします。
– absolute-time-of-day タイマーは、指定した絶対日時が発生したとき、イベントをパブリッシュします。
– カウントダウン タイマーは、タイマーが 0 にカウント ダウンされたときに、イベントをパブリッシュします。
– ウォッチドッグ タイマーは、タイマーが 0 にカウント ダウンされたときに、イベントをパブリッシュします。タイマーは初期値に自動リセットされ、再びカウントダウンを開始します。
– CRON タイマーは、UNIX 標準 CRON 仕様を使用して、イベントがパブリッシュされるタイミングを定義して、イベントをパブリッシュします。CRON タイマーは 1 分間に 2 回以上イベントをパブリッシュしません。
• ウォッチドック イベント検出器(IOSWDSysMon):次の場合に、イベントをパブリッシュします。
– Cisco IOS プロセスでの CPU の使用率がしきい値を超えた。
– Cisco IOS プロセスでのメモリの使用率がしきい値を超えた。
同時に 2 つのイベントをモニタすることができ、イベントをパブリッシュする基準は、いずれかまたは両方のイベントが指定したしきい値を超えた場合です。
組み込みイベント マネージャの処理
イベントに反応して、次の処理が行われいます。
• 名前付きカウンタの変更
• アプリケーション固有イベントのパブリッシュ
• SNMP トラップの生成
• 優先 syslog メッセージの生成
• Cisco IOS ソフトウェアのリロード
組み込みイベント マネージャ ポリシー
EEM はイベントをモニタして情報を提供したり、モニタ対象のイベントが発生するかしきい値に達した場合に、対処方法を実行したりすることができます。EEM ポリシーはイベントと、そのイベントの発生時に行われる処理を定義するエンティティです。
EEM ポリシーにはアプレットとスクリプトの 2 つのタイプがあります。アプレットは、CLI 設定内に定義する簡単なポリシーです。イベントの選別基準とイベントの発生時に行う処理を定義するための簡便な方法です。スクリプトは、ASCII エディタを使用して、ネットワーキング デバイス上に定義します。スクリプトはバイトコード(.tbc)およびテキスト(.tcl)スクリプトで指定でき、その後ネットワーキング デバイスにコピーされ、EEM に登録されます。.tcl ファイルには複数のイベントを登録することもできます。
EEM では、EEM ポリシー ツール コマンド言語(TCL)スクリプトを使用して、独自のポリシーを書いて、実装します。
キーワード拡張という形式のシスコの TCL 機能拡張は、EEM ポリシーの開発を容易にします。これらのキーワードは、検出されたイベント、その後の処理、ユーティリティ情報、カウンタ値、およびシステム情報を識別します。
EEM ポリシーおよびスクリプトの設定の詳細については、『Cisco IOS Network Management Configuration Guide, Release 12.4T』を参照してください。
組み込みイベント マネージャの環境変数
EEM は EEM ポリシーの環境変数を使用します。これらの変数は、CLI コマンドと event manager environment コマンドを実行することにより、EEM ポリシー TCL スクリプトに定義されます。
• ユーザ定義の変数
ユーザ定義のポリシーにユーザが定義します。
• シスコ定義の変数
特定のサンプル ポリシーにシスコが定義します。
• シスコ組み込み変数(EEM アプレットで使用可能)
シスコが定義し、読み取り専用または読み取りと書き込みに設定できます。読み取り専用変数は、アプレットが実行を開始する前に、システムによって設定されます。1 つの読み取りと書き込み変数 _exit_status により、同期イベントからトリガーされるポリシーの終了ステータスを設定できます。
シスコ定義の環境変数とシスコのシステム定義環境変数は、特定のイベント検出器またはすべてのイベント検出器に適用できます。ユーザ定義の環境変数またはシスコがサンプル ポリシーに定義した環境変数は、event manager environment グローバル コンフィギュレーション コマンドを使用して設定します。ポリシーを登録する前に、変数を EEM ポリシーに定義する必要があります。
EEM がサポートする環境変数の詳細については、『Cisco IOS Network Management Configuration Guide, Release 12.4T』を参照してください。
EEM 3.2
Cisco IOS Release 12.2(52)SE 以降のリリースは EEM 3.2 をサポートしています。EEM 3.2 には次のイベント検出器が追加されています。
• ネイバー探索:ネイバー探索イベント検出器は、次の場合にポリシーをパブリッシュして、自動ネイバー検出に応答します。
– Cisco Discovery Protocol(CDP; シスコ検出プロトコル)キャッシュ エントリを追加、削除、または更新した。
– Link Layer Discovery Protocol(LLDP; リンク層検出プロトコル)キャッシュ エントリを追加、削除、または更新した。
– インターフェイスのリンク ステータスが変化した。
– インターフェイスのライン ステータスが変化した。
• ID:ID イベント検出器は、ポートで AAA 許可および認証に成功したとき、失敗したとき、または通常のユーザ トラフィックが通過を許可されたときにイベントを生成します。
• Mac アドレス テーブル:Mac アドレス テーブル イベント検出器は、MAC アドレス テーブル内で MAC アドレスが学習されたときにイベントを生成します。
(注) Mac アドレス テーブル イベント検出器は、スイッチ プラットフォームだけでサポートされ、MAC アドレスが学習されたレイヤ 2 インターフェイス上だけで使用できます。レイヤ 3 インターフェイスはアドレスを学習せず、ルータは通常、学習された MAC アドレスを EFM に通知するために必要な MAC アドレス テーブル インフラストラクチャをサポートしません。
EEM 3.2 には、新しいイベント検出器と連携して動作するアプレットをサポートするための CLI コマンドも追加されています。
EEM 3.2 の機能の詳細については、『Embedded Event Manager 3.2』( http://www.cisco.com/en/US/docs/ios/netmgmt/configuration/guide/nm_eem_3.2.html )を参照してください。
組み込みイベント マネージャの設定
• 「組み込みイベント マネージャ アプレットの登録と定義」
• 「組み込みイベントマネージャの TCL スクリプトの登録と定義」
組み込みイベントマネージャの設定の詳細については、『Cisco IOS Network Management Configuration Guide, Release 12.4T』を参照してください。
組み込みイベント マネージャ アプレットの登録と定義
EEM にアプレットを登録し、event applet および action applet コンフィギュレーション コマンドを使用して、EEM アプレットを定義するには、特権 EXEC モードで次の手順を実行します。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
event manager applet applet-name |
EEM にアプレットを登録し、アプレット コンフィギュレーション モードを開始します。 |
ステップ 3 |
event snmp oid oid-value get-type { exact | next } entry-op { gt | ge | eq | ne | lt | le } entry-val entry-val [ exit-comb { or | and }] [ exit-op { gt | ge | eq | ne | lt | le }] [ exit-val exit-val ] [ exit-time exit-time-val ] poll-interval poll-int-val |
EEM アプレットを実行させるイベント基準を指定します。 (任意)終了基準。終了基準を指定しない場合、イベント モニタリングがすぐに再イネーブルになります。 |
ステップ 4 |
action label syslog [ priority priority-level ] msg msg-text |
EEM アプレットがトリガーされたときの処理を指定します。この処理を繰り返して、アプレットに他の CLI コマンドを追加します。 • (任意)priority キーワードは、Syslog メッセージのプライオリティ レベルを指定します。選択した場合、priority-level 引数を定義する必要があります。 • msg-text の場合、引数は文字テキスト、環境変数、またはこの 2 つを組み合わせて指定できます。 |
ステップ 5 |
end |
アプレット コンフィギュレーション モードを終了し、特権 EXEC モードに戻ります。 |
次に、SNMP オブジェクト ID によって指定されたフィールドの 1 つが、定義されたしきい値を超えた場合の EEM の出力例を示します。
Switch(config-applet)# event snmp oid 1.3.6.1.4.1.9.9.48.1.1.1.6.1 get-type exact entry-op lt entry-val 5120000 poll-interval 10
次に、EEM イベントに反応して行われる処理の例を示します。
Switch(config-applet)# action 1.0 syslog priority critical msg "Memory exhausted; current available memory is $_snmp_oid_val bytes"
Switch (config-applet)# action 2.0 force-switchover
組み込みイベントマネージャの TCL スクリプトの登録と定義
EEM に TCL スクリプトを登録し、TCL スクリプトとポリシー コマンドを定義するには、特権 EXECモードで次の手順を実行します。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 1 |
show event manager environment [all | variable-name] |
(任意)show event manager environment コマンドは、EEM 環境変数の名前と値を表示します。 (任意)all キーワードは、EEM 環境変数を表示します。 (任意)variable-name 引数は、指定された環境変数に関する情報を表示します。 |
ステップ 2 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 3 |
event manager environment variable-name string |
指定した EEM 環境変数の値を設定します。必要なすべての環境変数について、この手順を繰り返します。 |
ステップ 4 |
event manager policy policy-file-name [ type system ] [ trap] |
EEM ポリシーを登録し、ポリシー内に定義された特定のイベントが発生した場合に実行されるようにします。 |
ステップ 5 |
exit |
グローバル コンフィギュレーション モードを終了し、特権 EXEC モードに戻ります。 |
次に、show event manager environment コマンドの出力例を示します。
Switch# show event manager environment all
1 _cron_entry 0-59/2 0-23/1 * * 0-6
3 _syslog_pattern .*UPDOWN.*Ethernet1/0.*
4 _config_cmd1 interface Ethernet1/0
次に、ソフトウェアによって割り当てられた CRON タイマー環境変数を毎日の毎時間、毎分、毎秒に設定する方法を示します。
Switch (config)# event manager environment_cron_entry 0-59/2 0-23/1 * * 0-6
次に、システム ポリシーとして登録された tm_cli_cmd.tcl という名前の EEM ポリシーの例を示します。システム ポリシーは Cisco IOS イメージの一部です。ユーザ定義の TCL スクリプトは、最初にフラッシュ メモリにコピーする必要があります。
Switch (config)# event manager policy tm_cli_cmd.tcl type system