Embedded Event Manager の概要
EEM は主要なシステム イベントをモニタし、セット ポリシーを通してイベントに作用します。このポリシーはプログラムされたスクリプトで、これを使用して、発生した特定の一連のイベントに基づいてアクションを呼び出すように、スクリプトをカスタマイズできます。このスクリプトは、カスタム Syslog または Simple Network Management Protocol(SNMP; 簡易ネットワーク管理プロトコル)トラップの生成、CLI(コマンドライン インターフェイス)コマンドの呼び出し、フェールオーバーの強制などのアクションを生成します。スイッチからすべてのイベント管理を行うことはできず、問題の発生により、スイッチと外部ネットワーク管理装置間の通信に支障をきたすので、EEM のイベント管理機能は有益です。スイッチを再起動することなく自動回復アクションが行われる場合、ネットワークのアベイラビリティは向上します。
図 37-1 に、EEM サーバ、コア イベント パブリッシャ(イベント検出器)、およびイベント サブスクライバ(ポリシー)の関係を示します。イベント パブリッシャはイベントを選別し、イベント サブスクライバによって提供されたイベント仕様と一致するとそれらのイベントをパブリッシュします。イベントが発生すると、イベント検出器が EEM サーバに通知します。次に、システムの現在の状態と特定のイベントに対してポリシーで指定されたアクションに基づいて、EEM ポリシーが回復を実行します。
図 37-1 Embedded Event Manager のコア イベント検出器
EEM の配置の例については、『 EEM Configuration for Cisco Integrated Services Router Platforms Guide 』を参照してください。
• 「イベント検出器」
• 「Embedded Event Manager のアクション」
• 「Embedded Event Manager ポリシー」
• 「Embedded Event Manager の環境変数」
イベント検出器
イベント検出器と呼ばれる EEM ソフトウェア プログラムは、EEM イベントがいつ発生するかを決定します。イベント検出器は、モニタ対象のエージェント(SNMP など)とアクションを実行できる EEM ポリシーの間のインターフェイスを提供する別個のシステムです。
• アプリケーション固有のイベント検出器:任意の EEM ポリシーがイベントをパブリッシュできます。
• IOS CLI イベント検出器:CLI によって入力されたコマンドに基づいてポリシーを生成します。
• カウンタ イベント検出器:名前付きカウンタが指定されたスレッシュホールドを超えたときにイベントをパブリッシュします。
• インターフェイス カウンタ イベント検出器:指定されたインターフェイスの汎用 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 ポリシーを呼び出し、Simple Object Access Protocol(SOAP)データ符号化を使用して XML ベースのメッセージを交換します。また、EEM ポリシーを実行し、SOAP XML 形式の応答の出力を取得します。
• SNMP イベント検出器:標準 SNMP MIB オブジェクトをモニタし、次の場合にイベントを生成することができます。
– オブジェクトが指定された値と一致するか指定されたスレッシュホールドを超えた場合
– SNMP のデルタ値(モニタ期間の開始時の Object Identifier(OID; オブジェクト ID)値とイベントのパブリッシュ時の実際の OID 値の差)が指定された値と一致する場合
• SNMP 通知イベント検出器:スイッチで受信される SNMP トラップと inform メッセージを代行受信します。着信メッセージが指定された値と一致するか定義されたスレッシュホールドを超えたときにイベントが生成されます。
• Syslog イベント検出器:正規表現パターン マッチを持つ Syslog メッセージを選別できます。選別されたメッセージをさらに限定し、指定された時間内に特定の回数の発生を記録するように要求できます。指定されたイベント基準での一致により、設定されたポリシー アクションがトリガーされます。
• タイマー イベント検出器:次のイベントをパブリッシュします。
– absolute-time-of-day タイマーは、指定された絶対的な日時になったときにイベントをパブリッシュします。
– カウントダウン タイマーは、タイマーがゼロまでカウントダウンされたときにイベントをパブリッシュします。
– ウォッチドッグ タイマーは、タイマーがゼロまでカウントダウンされたときにイベントをパブリッシュします。タイマーは初期値に自動的にリセットされ、再びカウントダウンを開始します。
– CRON タイマーは、UNIX 標準 CRON 仕様を使用して、イベントをパブリッシュする時期を定義することによって、イベントをパブリッシュします。CRON タイマーは、1 分間にイベントを複数回パブリッシュすることはありません。
• ウォッチドッグ イベント検出器(IOSWDSysMon):次の場合にイベントをパブリッシュします。
– Cisco IOS プロセスでの CPU の使用率がスレッシュホールドを超えた場合
– Cisco IOS プロセスでのメモリの使用率がスレッシュホールドを超えた場合
同時に 2 つのイベントをモニタすることができ、イベントがパブリッシュされる基準は、1 つまたは両方のイベントが指定されたスレッシュホールドを超えた場合です。
Embedded Event Manager のアクション
イベントに応じて次のようなアクションが実行されます。
• 名前付きカウンタの修正
• アプリケーション固有のイベントのパブリッシュ
• SNMP トラップの生成
• 優先される Syslog メッセージの生成
• Cisco IOS ソフトウェアのリロード
Embedded Event Manager ポリシー
EEM はイベントをモニタして情報を提供するか、またはモニタ対象のイベントが発生するかスレッシュホールドに達した場合に修正措置を行うことができます。EEM ポリシーは、イベントおよびイベントが発生した場合に行うアクションを定義するエンティティです。
EEM ポリシーにはアプレットとスクリプトの 2 つのタイプがあります。アプレットは、CLI 設定内で定義される簡易なポリシーです。イベントの選別基準とイベントが発生した場合に行うアクションを定義する簡易な方法です。スクリプトは、ASCII エディタを使用して、ネットワーキング装置上で定義されます。バイトコード(.tbc)およびテキスト(.tcl)のスクリプトとして定義され、ネットワーキング装置にコピーされて EEM に登録されます。.tcl ファイルの複数のイベントを登録することもできます。
EEM を使用して、EEM ポリシー Tool Command Language(TCL; ツール コマンド言語)スクリプトを使用する独自のポリシーを記述して実行します。
キーワード拡張という形式のシスコの TCL 拡張機能は、EEM ポリシーの開発を容易にします。これらのキーワードは、検出されたイベント、その後のアクション、ユーティリティ情報、カウンタ値、およびシステム情報を識別します。
EEM のポリシーおよびスクリプトの設定の詳細については、『Cisco IOS Network Management Configuration Guide, Release 12.4T』を参照してください。
Embedded Event Manager の環境変数
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』を参照してください。
Embedded Event Manager の設定
• 「Embedded Event Manager アプレットの登録と定義」
• 「Embedded Event Manager TCL スクリプトの登録と定義」
Embedded Event Manager の設定の詳細については、『Cisco IOS Network Management Configuration Guide, Release 12.4T』を参照してください。
Embedded Event Manager アプレットの登録と定義
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
Embedded Event Manager 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 |
グローバル コンフィギュレーション モードを終了し、特権 EXECE モードに戻ります。 |
次に、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