EEM (Embedded Event Manager)

 

EEMの概要

EEM (Embedded Event Manager)は、Ciscoが扱っている各OS
(IOS、IOS XR、IOS XE、NX-OS)に搭載された運用管理機能の1つです。

事前にイベントとアクションを設定し、イベントを検出すると、
設定しておいたアクションを実行
してくれます。

EEMを使うことで、今まで不可能だった細かい動作を、運用者が
カスタマイズして作り込むことが可能になりました。

日々の運用管理業務の効率化や、障害の早期発見などに効果を
発揮してくれます。

例えば、

  • あるインタフェースを監視して、インタフェースがダウンしたら、管理者へメールを送信する
  • CPU使用率を監視して、事前に決めた閾値を超えた場合に、CPU使用率を取得してsyslogで送信
  • インタフェースのエラー率を監視して、事前に決めたエラー率を超えた場合に、該当のインタフェースをダウンさせて、SNMP Trapを送信

といった細かい制御を行うことが出来ます。

 

EEMのアーキテクチャ

EEM「Event Detector」、「Policy」、「EEMサーバ」の3つの要素から
成り立っています。
事前に定義したイベントとアクションをPolicyと呼び、
Event DetectorでPolicyに則ってイベントを監視し、
アクションを実行させる場合にEEMサーバへ通知します。

Event Detectorで監視可能な主なイベントは以下の通り。

  • SNMP
    SNMP MIBオブジェクトを監視し、オブジェクトの値が任意の値と
    マッチするか、任意の閾値を越えた場合にイベント通知
  • Syslog
    事前に定義した文字列をトリガーにイベント通知
  • Timer
    absolute-time-of-day、countdown、watchdog、CRON の 4 タイプの
    タイマーをサポートし、それぞれイベントを通知
  • Interface Counter
    インタフェースカウンタが閾値を超えた際にイベントを通知
  • CLI
    CLIを正規表現で検査し、マッチした場合にイベントを通知
  • OIR
    モジュール等のOIRを検知した場合にイベント通知
  • SNMP Proxy
    外部からのSNMPトラップを受けてイベントを通知
  • Routing
    ルーティングテーブルの変化を検知した際にイベントを通知
  • NetFlow
    NetFlow情報監視し、オブジェクトの値が任意の値とマッチ、
    あるいは任意の閾値を越えた場合にイベント通知
  • Neighbor Discovery
    CDPまたはLLDPによる情報を受けてイベントを通知
  • Mac Address Table
    MACアドレステーブルの変化を検知した際にイベントを通知

イベントを受けた後に実行出来る主なアクション以下の通り。

  • コマンドの実行や結果の取得
  • SNMPへのアクセス
  • 再起動
  • EEM Policyの呼び出し
  • スイッチオーバー
  • Eメール送信
  • SNMP Trap送信
  • Syslog送信
  • などなど。。。

EEMはCLIを使った設定と、Tcl スクリプトを使ってプログラミングする
方法の2種類があります。
CLIベースは設定が簡単である反面、細かい制御をすることは出来ません。
逆にTclベースだと、細かい制御をすることが出来ますが、Tclスクリプトを
扱えないといけませんので、若干敷居が高いかもしれません。

 

ここでは、CLIベースの設定例をいくつかご紹介しておきます。

 

設定例 1

「Interface FastEthernet 0/0 の LineProtocol 状態を監視して、
LineProtocolがDownになった場合に、Syslogを送信させる」

設定例は以下の通りです。

track 1 interface FastEthernet0/0 line-protocol
event manager applet eem
event track 1 state down
action 1.0 syslog msg "### Interface is Doooooooooown!! ###"

上記設定をした状態で、FE0/0をDownさせてみます。

RT1#conf t
RT1(config)#interface fastEthernet 0/0
RT1(config-if)#shutdown

*May 19 14:40:46.819: %TRACKING-5-STATE: 1 interface Fa0/0 line-protocol Up->Down
*May 19 14:40:46.955: %HA_EM-6-LOG: eem: ### Interface is Doooooooooown ###
*May 19 14:40:48.815: %LINK-5-CHANGED: Interface FastEthernet0/0, changed state to administratively down
*May 19 14:40:49.815: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to down

無事に「%HA_EM-6-LOG: eem: ### Interface is Doooooooooown!! ###」という
Syslogが出力されました。

 

設定例 2

「Interface FastEthernet 0/0 の Input Error を 60secごとに監視して、
エラー数が1000を超えた場合に再起動を実施」

インタフェースのエラーカウンタを監視して、上限値を超えた場合に
機器の再起動を実施する場合の設定例です。

設定例は以下の通りです。

event manager applet error
event interface name "FastEthernet0/0" parameter input_errors entry-val 1000 entry-op ge entry-val-is-increment true poll-interval 60
action 1.0 reload

 

設定例 3

「OSPFネイバーダウンを検知し、ダウン時に各種ログを自動取得する」

Syslogを監視して、OSPFのネイバーダウンのSyslogが出力されたら、
各種ログを取得してFlashに保存させるようにしてみます。

設定例は以下の通りです。

event manager applet OSPF
event syslog pattern ".*OSPF-5-ADJCHG*.*Neighbor Down*"
action 1.0 syslog msg "### OSPF neighbor down!! ###"
action 2.0 cli command "en"
action 3.0 cli command "show ip ospf nei | append flash:/OSPFLog.txt"
action 4.0 cli command "show tech | append flash:/OSPFLog.txt"
action 5.0 cli command "end"
action 6.0 syslog msg "### Archived done ###"

 

EEM関連コマンド

EEMを使用する時に便利なコマンドをご紹介しておきましょう。

  • show event manager version
    EEMのバージョンを表示
  • show event manager detector all
    利用できるEvent Detectorの種類とバージョンを表示
  • show event manager policy registered
    設定したポリシーの動作情報を表示

以上、設定例をご紹介しましたが、EEMはアイデア次第で様々な用途がありますので、
ぜひ一度試してみて下さい。

 

最後に

EEMを動作させると、当然機器のCPUやメモリを消費しますので、
事前に十分な検証が必要です。

関連記事

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス: