組み込みイベント マネージャの概要
EEM はキー システムのイベントをモニタし、セット ポリシーを通してイベントに作用します。このポリシーはプログラムされたスクリプトで、これを使用して、発生した特定の一連のイベントに基づいて処理を呼び出すように、スクリプトをカスタマイズできます。このスクリプトは、カスタム Syslog または Simple Network Management Protocol(SNMP; 簡易ネットワーク管理プロトコル)トラップの生成、CLI(コマンドライン インターフェイス)コマンドの呼び出し、フェールオーバーの強制などの処理を生成します。スイッチからすべてのイベント管理を行うことはできず、問題の発生により、スイッチと外部ネットワーク管理デバイス間の通信に支障をきたすため、EEM のイベント管理機能は有益です。スイッチをリブートすることなく自動回復処理が行われる場合、ネットワークのアベイラビリティは向上します。
図 36-1 に、EEM サーバ、コア イベント パブリッシャ(イベント検出器)、およびイベント サブスクライバ(ポリシー)の関係を示します。イベント パブリッシャはイベントを選別し、イベント サブスクライバによって提供されたイベント仕様と一致するイベントがいつ発生するかを決定します。イベントが発生すると、イベント検出器が EEM サーバに通知します。次に、システムの現在の状態と特定のイベントに対してポリシーで指定された処理に基づいて、EEM ポリシーが回復を実行します。
図 36-1 組み込みイベント マネージャ コア イベント検出器
EEM の導入例については、『 EEM Configuration for Cisco Integrated Services Router Platforms Guide 』を参照してください。
• 「イベント検出器」
• 「組み込みイベント マネージャの処理」
• 「組み込みイベント マネージャ ポリシー」
• 「組み込みイベント マネージャの環境変数」
• 「EEM 3.2」
イベント検出器
イベント検出器として知られる EEM ソフトウェアは、EEM イベントがいつ発生するかを決定します。イベント検出器は、モニタされるエージェント(SNMP など)と処理を実行できる EEM ポリシーの間のインターフェイスを提供する別個のシステムです。イベント検出器は、マスター スイッチだけが生成します。また、CLI とルーティング プロセスが稼動するのは、マスター スイッチからだけです。
(注) スタック メンバ スイッチはイベントを生成せず、メモリしきい値の通知または IOSWdSysmon イベント検出器をサポートしません。
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 の利用率および残りのバッファ容量などのリソースを含みます。マスター スイッチにだけ適用されます。
• Remote Procedure Call(RPC; リモート プロシージャ コール):Secure Shell(SSH; セキュア シェル)を使用した暗号化接続を介してスイッチの外側から EEM ポリシーを起動し、XML ベースのメッセージ交換に、Simple Object Access Protocol(SOAP)データ符号化を使用します。さらに、EEM ポリシーを実行してから、SOAP XML フォーマットの応答内の出力を取得します。
• SNMP イベント検出器:オブジェクトが指定された値と一致するか指定されたしきい値を超えた場合、標準 SNMP MIB(管理情報ベース)オブジェクトをモニタし、イベントを生成できます。
– オブジェクトが指定した値と一致するか指定したしきい値を超える。
– 期間の開始時におけるモニタ対象の Object Identifier(OID; オブジェクト ID)値と、イベントがパブリッシュされたときの実際の OID 値の違いである SNMP デルタ値が、指定された値と一致する。
• SNMP 通知イベント検出器:スイッチが受信した SNMP トラップおよび通知メッセージを代行受信します。着信メッセージが指定された値と一致するか、定義されたしきい値を超えたとき、イベントがパブリッシュされます。
• Syslog イベント検出器:正規表現パターンマッチを持つ Syslog メッセージを選別できます。選別されたメッセージをさらに限定し、指定された時間内に特定の回数の発生を記録するように要求できます。指定されたイベント基準での一致により、設定されたポリシー処理がトリガーされます。
• タイマー イベント検出器:次のようにイベントをパブリッシュします。
– absolute-time-of-day タイマーは、指定された絶対的な日時が発生したとき、イベントをパブリッシュします。
– カウントダウン タイマーは、タイマーがゼロにカウントダウンされたとき、イベントをパブリッシュします。
– ウォッチドッグ タイマーは、タイマーがゼロにカウントダウンされたとき、イベントをパブリッシュします。タイマーは初期値に自動リセットされ、再びカウントダウンを開始します。
– CRON タイマーは、UNIX 標準 CRON 仕様を使用して、イベントをパブリッシュする時期を定義することによって、イベントをパブリッシュします。CRON タイマーは、1 分間にイベントを複数回パブリッシュすることはありません。
• Watchdog event detector(IOSWDSysMon; ウォッチドッグ イベント検出器):マスター スイッチに関するイベントだけをパブリッシュします。
次のいずれかのイベントが発生したとき、イベントをパブリッシュします。
– Cisco IOS プロセスでの CPU の利用率がしきい値を超えたとき
– Cisco IOS プロセスでのメモリの利用率がしきい値を超えたとき
同時に 2 つのイベントをモニタでき、イベントがパブリッシュされる基準は、いずれかまたは両方のイベントが指定されたしきい値を超えた場合です。
組み込みイベント マネージャの処理
イベントに反応して次の処理が発生します。
• ネームド カウンタの修正
• アプリケーション特有のイベントのパブリッシュ
• SNMP トラップの生成
• 優先される Syslog メッセージの生成
• Cisco IOS ソフトウェアのリロード
• スイッチ スタックのリロード
• マスター切り替え時のマスター スイッチのリロード。この場合、新しいマスター スイッチが選択されます。
組み込みイベント マネージャ ポリシー
EEM はイベントをモニタして情報を提供するか、またはモニタされたイベントが発生するかしきい値に達した場合に是正措置を行うことができます。EEM ポリシーは、イベントおよびイベントが発生した場合に行う処理を定義するエンティティです。
EEM ポリシーにはアプレットとスクリプトの 2 つのタイプがあります。アプレットは、CLI 設定内で定義される簡易なポリシーです。イベントの選別基準とイベントが発生した場合に行う処理を定義する簡易な方法です。スクリプトは、ASCII エディタを使用して、ネットワーキング デバイス上で定義されます。スクリプト(バイトコード(.tbc)とテキスト(.tcl)スクリプトで作成できます)は、次に、ネットワーキング デバイスにコピーされ、EEM によって登録されます。さらに、1 つの .tcl ファイルに複数のイベントを登録できます。
EEM を使用して、EEM ポリシー Tool Command Language(TCL; ツール コマンド言語)スクリプトを使用する独自のポリシーを記述して実行します。マスター スイッチに TCL スクリプトを設定すると、ファイルは自動的にメンバ スイッチに送信されます。マスター スイッチが変わった場合に TCL スクリプト ポリシーが機能し続けるように、メンバ スイッチでユーザ定義の 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 により、同期イベントからトリガーされるポリシーの終了ステータスを設定できます。
シスコ定義の環境変数とシスコ システム定義環境変数は、特定の 1 つのイベント検出器またはすべてのイベント検出器に適用されます。ユーザ定義の環境変数またはサンプル ポリシーでシスコにより定義される環境変数は、event manager environment グローバル コンフィギュレーション コマンドを使用して設定されます。ポリシーを登録する前に、変数を EEM ポリシーに定義する必要があります。
EEM がサポートする環境変数の詳細については、『Cisco IOS Network Management Configuration Guide, Release 12.4T』を参照してください。
EEM 3.2
EEM 3.2 は、Cisco IOS Release 12.2(52)SE 以降でサポートされており、次のイベント検出器が導入されています。
• ネイバー探索:ネイバー探索イベント検出器によって、次の場合に自動ネイバー検出に応答するポリシーをパブリッシュできます。
– Cisco Discovery Protocol(CDP; Cisco Discovery Protocol)のキャッシュ エントリが追加、削除、または更新された場合。
– Link Layer Discovery Protocol(LLDP)キャッシュ エントリが追加、削除、または更新された場合。
– インターフェイスのリンク ステータスが変更された場合。
– インターフェイスのライン ステータスが変更された場合。
• ID:ID イベント検出器は、AAA の許可および認証が成功した場合、障害が発生した場合、またはポート上で通常のユーザ トラフィックの送信が許可された後にイベントを生成します。
• Mac-Address-Table:Mac-Address-Table イベント検出器は、MAC アドレスが MAC アドレス テーブルで学習された場合にイベントを生成します。
(注) Mac-Address-Table イベント検出器は、スイッチ プラットフォームでだけサポートされており、MAC アドレスが学習されたレイヤ 2 インターフェイスだけで使用できます。レイヤ 3 インターフェイスはアドレスを学習しません。ルータは通常、学習された MAC アドレスの EEM を通知する必要がある MAC address-table インフラストラクチャをサポートしません。
EEM 3.2 では、新しいイベント検出器で動作するアプレットをサポートするための CLI コマンドも導入されています。
EEM 3.2 機能の詳細については、次の URL で入手可能な 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 を設定するには、スイッチに IP サービス フィーチャ セットをインストールする必要があります。
組み込みイベント マネージャ アプレットの登録と定義
EEM でアプレットを登録し、event applet および action applet コンフィギュレーション コマンドを使用して EEM アプレットを定義するには、特権 EXEC モードで次の手順を実行します。
(注) EEM アプレットでは、1 つのイベント アプレット コマンドしか使用できません。複数の処理アプレット コマンドが使用できます。no event および no action コマンドを指定しない場合、コンフィギュレーション モードを終了すると、アプレットは削除されます。
|
|
|
ステップ 1 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
event manager applet applet-name |
EEM でアプレットを登録し、アプレット コンフィギュレーション モードを開始します。 |
ステップ 3 |
event snmp oid oid-value get-type { exact | next } entry-op { eq | ge | gt | le | lt | ne } entry-val entry-val [ exit-comb { or | and }] [ exit-op { eq | ge | gt | le | lt | ne }] [ 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 コマンドを追加します。 • (任意)プライオリティ キーワードは、Syslog メッセージのプライオリティ レベルを指定します。選択した場合、プライオリティ レベル引数を定義する必要があります。 • 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 |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
show event manager environment [all | variable-name] |
(任意)show event manager environment コマンドは、EEM 環境変数の名前と値を表示します。 (任意)all キーワードは、EEM 環境変数を表示します。 (任意)variable-name 引数は、指定された環境変数に関する情報を表示します。 |
ステップ 3 |
configure terminal |
グローバル コンフィギュレーション モードを開始します。 |
ステップ 4 |
event manager environment variable-name string |
指定された EEM 環境変数の値を設定します。要求されたすべての環境変数でこのステップを繰り返します。 |
ステップ 5 |
event manager policy policy-file-name [ type system ] [ trap ] |
EEM ポリシーを登録し、ポリシー内で定義された特定のイベントが発生した場合に実行されるようにします。 |
ステップ 6 |
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