組み込みイベント マネージャの概要
EEM は、主要なシステム イベントをモニタして、セット ポリシーによってこれらに対する処理を行います。このポリシーはプログラミングされたスクリプトで、スクリプトをカスタマイズするために使用でき、発生するイベント セットに基づいて操作を呼び出します。スクリプトによって、カスタム Syslog または Simple Network Management Protocol(SNMP; 簡易ネットワーク管理プロトコル)トラップの生成、CLI コマンドの呼び出し、フェールオーバーの強制などの操作が行われます。イベント管理の中にはスイッチから実行できないものがあり、問題によってはスイッチと外部ネットワーク管理デバイスの間で信頼のおけないコミュニケーションが行われることがあるので、EEM のイベント管理機能は便利です。スイッチをリブートしなくても自動回復処理を実行できれば、ネットワークのアベイラビリティが向上します。
図 33-1 に、EEM サーバ、コア イベント パブリッシャ(イベント ディテクタ)、およびイベント サブスクライバ(ポリシー)間の関係を示します。イベント パブリッシャは、イベント サブスクライバによって示されるイベント指定と一致した場合、イベントをスクリーニングしてパブリッシュします。イベント ディテクタは、イベントが発生すると EEM サーバに通知します。そして EEM ポリシーは、システムと、指定のイベントについてポリシーに指定されている操作の現在の状態に基づいて回復を行います。
図 33-1 組み込みイベント マネージャのコア イベント ディテクタ
EEM 配置の例については、『 EEM Configuration for Cisco Integrated Services Router Platforms Guide 』を参照してください。
• 「イベント ディテクタ」
• 「組み込みイベント マネージャの操作」
• 「組み込みイベント マネージャ ポリシー」
• 「組み込みイベント マネージャの環境変数」
• 「EEM 3.2」
イベント ディテクタ
イベント ディテクタは EEM ソフトウェア プログラムであり、EEM イベントの発生を検知します。イベント ディテクタは独立したシステムであり、モニタ対象のエージェント(たとえば SNMP)とアクションが実行される EEM ポリシーとの間のインターフェイスとなります。イベント ディテクタはマスター スイッチによってのみ生成されます。また、CLI およびルーティング処理もマスター スイッチからのみ実行されます。
(注) スタック メンバー スイッチはイベントを生成せず、メモリしきい値の通知および IOSWdSysmon イベント ディテクタをサポートしません。
• アプリケーション固有のイベント ディテクタ:どの EEM ポリシーでもイベントをパブリッシュできます。
• IOS CLI イベント ディテクタ:CLI を使用して入力されたコマンドに基づいてポリシーを生成します。
• Generic Online Diagnostics(GOLD; 汎用オンライン診断)イベント ディテクタ:特定のカードおよびサブカードで GOLD 障害イベントが検出されると、イベントをパブリッシュします。
• カウンタ イベント ディテクタ:特定のカウンタが特定のしきい値を超えると、イベントをパブリッシュします。
• インターフェイス カウンタ イベント ディテクタ:特定のインターフェイスの汎用 Cisco IOS インターフェイス カウンタが定義されたしきい値を超えると、イベントをパブリッシュします。しきい値は絶対値または差分値として指定できます。たとえば、差分値を 50 に設定すると、インターフェイス カウントが 50 増えるとイベントがパブリッシュされます。
このディテクタは、エントリ値と終了値に対する変更の比率に基づいて、インターフェイスに関するイベントもパブリッシュします。
• None イベント ディテクタ:event manager run CLI コマンドが EEM ポリシーを実行すると、イベントをパブリッシュします。EEM は、ポリシー自身でのイベント指定に基づいてポリシーをスケジュールして実行します。event manager run コマンドを実行する前に、EEM ポリシーを手動で指定し、登録する必要があります。
• Online Insertion and Removal(OIR; ホットスワップ)イベント ディテクタ:ハードウェアの OIR イベントが発生すると、イベントをパブリッシュします。
• リソースしきい値イベント ディテクタ:グローバル プラットフォーム値およびしきい値に基づいてポリシーを生成します。リソースには CPU 使用率および残りのバッファ容量などがあります。これはマスター スイッチにだけ適用されます。
• Remote Procedure Call(RPC; リモート プロシージャ コール)イベント ディテクタ:Secure Shell(SSH; セキュア シェル)を使用する暗号化された接続を介してスイッチの外部から EEM ポリシーを呼び出し、Simple Object Access Protocol(SOAP)データ符号化を使用して XML ベースのメッセージを交換します。また、EEM ポリシーを実行した後、SOAP XML 形式の応答で出力を取得します。
• SNMP イベント ディテクタ:標準 SNMP Management Information Base(MIB; 管理情報ベース)オブジェクトがモニタされ、次の場合にイベントが生成されます。
– オブジェクトが、指定された値と一致するか指定されたしきい値を超えている場合。
– SNMP デルタ値(期間の開始時にモニタされた Object Identifier(OID; オブジェクト識別子)値とイベントがパブリッシュされた時点での実際の OID 値の差異)が、指定された値と一致する場合。
• SNMP 通知イベント ディテクタ:SNMP トラップを代行受信し、スイッチが受信したメッセージを通知します。着信メッセージが指定されている値と一致するか、定義されているしきい値を超えると、イベントが生成されます。
• Syslog イベント ディテクタ:正規表現のパターン マッチにより Syslog メッセージがスクリーニングされます。選択されたメッセージにはさらに条件を設定して、特定の時間内に特定の回数の発生が記録されることを必要とするようにできます。特定のイベント条件での一致により、設定されたポリシー アクションがトリガーされます。
• タイマー イベント ディテクタ:次のタイマーによってイベントがパブリッシュされます。
– absolute-time-of-day タイマーは、特定の絶対日時の場合にイベントをパブリッシュします。
– カウントダウン タイマーは、タイマーがゼロになるとイベントをパブリッシュします。
– Watchdog タイマーは、タイマーがゼロになるとイベントをパブリッシュします。タイマーは自動的に初期値にリセットされ、再度カウントダウンを開始します。
– CRON タイマーは、イベントをパブリッシュする時間を定義するために UNIX 標準 CRON 仕様を使用してイベントをパブリッシュします。CRON タイマーは 1 秒に 1 つしかイベントをパブリッシュしません。
• Watchdog イベント ディテクタ(IOSWDSysMon):マスター スイッチが次のときにだけイベントをパブリッシュします。
– Cisco IOS 処理の CPU 使用率がしきい値を超える場合。
– Cisco IOS 処理のメモリ使用率がしきい値を超える場合。
2 つのイベントを同時にモニタできます。イベントのパブリッシング条件では、1 つまたは両方のイベントが特定のしきい値を超える必要があります。
組み込みイベント マネージャの操作
イベントに応じて次のアクションが発生します。
• 特定のカウンタの変更
• アプリケーション固有のイベントのパブリッシュ
• SNMP トラップの生成
• 優先 Syslog メッセージの生成
• Cisco IOS ソフトウェアのリロード
• スイッチ スタックのリロード
• マスター スイッチオーバー発生時のマスター スイッチのリロード。これが行われると、新しいマスター スイッチが選択されます。
組み込みイベント マネージャ ポリシー
EEM はイベントをモニタして情報を提供したり、モニタ対象のイベントが発生するかしきい値に到達したときに修正操作を行ったりすることができます。EEM ポリシーは、イベントおよびイベントが発生したときに実行する操作を定義するエンティティです。
EEM ポリシーにはアプレットとスクリプトの 2 種類があります。アプレットは CLI コンフィギュレーションで定義される単純なポリシーで、イベントのスクリーニング条件およびイベント発生時に実行する操作を定義する簡単な方法です。スクリプトは ASCII エディタを使用してネットワーキング装置に定義されます。スクリプトにはバイトコード(.tbc)スクリプトとテキスト(.tcl)スクリプトがあり、ネットワーキング装置にコピーされて EEM に登録されます。1 つの .tcl ファイルで複数のイベントを登録することもできます。
EEM は、EEM ポリシーのツール コマンド言語(TCL)スクリプトを使用して独自のポリシーを作成および実装します。マスター スイッチ上で TCL スクリプトを設定すると、スクリプト ファイルがメンバー スイッチに自動的に送信されます。マスター スイッチが変わっても TCL スクリプト ポリシーが引き続き動作するようにするためには、ユーザが定義した TCL スクリプトは、メンバー スイッチで利用可能である必要があります。
シスコはキーワード拡張の形で TCL を拡張したため、EEM ポリシーの開発は容易になっています。これらのキーワードを使用して、検出されたイベント、その後の操作、ユーティリティ情報、カウンタ値、およびシステム情報を特定します。
EEM ポリシーおよびスクリプトの設定の詳細については、『Cisco IOS Network Management Configuration Guide, Release 12.4T』を参照してください。
組み込みイベント マネージャの環境変数
EEM は、EEM ポリシーで環境変数を使用します。環境変数は、EEM ポリシーの TCL スクリプトで CLI コマンドおよび event manager environment コマンドを実行して定義します。
• ユーザ定義の変数
ユーザがユーザ定義のポリシー用に定義します。
• シスコ定義の変数
シスコが特定のサンプル ポリシー用に定義します。
• シスコの組み込み変数(EEM アプレットで使用可能)
シスコが定義する読み取り専用または読み取りと書き込みが可能な変数です。読み取り専用変数は、アプレットが実行を開始する前にシステムによって設定されます。_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; シスコ検出プロトコル)キャッシュ エントリの追加、削除、または更新。
– 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 にアプレットを登録して、イベント アプレットおよびアクション アプレット コンフィギュレーション コマンドを使用して 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 によって指定されたフィールドのいずれかが、定義されたしきい値を超える場合の 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