|
|||||||||||||||||
|
テストでSNMPエージェントに任意の値を返させたいアラートが正常動作するか、トライアンドエラーしたいことがあります。例 CPU使用率「90%」が継続したらメールを試験したい 稼働しているウェブサーバが残り「3台」になったらアラートを発生させたい ネットワークトラフィックが「95%以上」を三回継続したらアラートを発生させたい Ping監視であればケーブルを抜くことで疑似的に障害を発生させられますが、数値系の場合はそうもいきません。 現用システムに意図的に障害を発生させるわけにはいかないので、偶発的に発生するのを待つか、疑似環境で試験したりします。 しかしSNMPエージェント側でポーリングに対して「30」「70」「90」と自由に回答させることができれば、CPU高負荷アラートを検証するのは容易です。 SNMPポーリングされるたびにシェルスクリプトを実行し、そのシェルスクリプトで数字を出力すれば、SNMPポーリングに好きな値を返すことが可能です。 イメージ 検証対象として、Net-SNMPのインストールされたLinuxサーバを用意します。 監視モジュールと監視コンポーネントのテストなら、PandoraFMS自身のOSを使ってもいいでしょう。 1.スクリプトを作成する SNMPポーリングされるエージェント側へ、値を返すシェルスクリプトを作成します。 テキトーに/rootに作ってますが、適宜お気に入りの箇所へ保存してください。 #vi /root/ec.sh ec.shの内容 #!/bin/sh echo 90 見ての通り、90をechoしてるだけです。 実行権を加え、動作試験もしておきます。 #chmod +x /root/ec.sh #/root/ec.sh 90 2.SNMPを設定する マネージャからのSNMPポーリングを受け付けるよう、エージェントの/etc/snmp/snmpd.confを修正します。 /etc/snmp/snmpd.conf 編集 #Publicコミュニティに対して、許可アドレスを追加 com2sec notConfigUser 192.168.1.0/24 public #SNMPバージョンのグループを定義します。デフォルトで入ってます group notConfigGroup v1 notConfigUser #とりあえず全ての値が取得できるようにします view systemview included .1 #定義したものを結合して、有効化します access notConfigGroup "" any noauth exact systemview none none #実行するシェルスクリプトを定義します extend echo-int /root/ec.sh ↑ここ重要 サービスを再起動します。 #systemctl restart snmpd 「extend echo-int /root/ec.sh」 これは見ての通り、extendディレクティブに、「ec.shスクリプトを実行します」と定義しています。 数字を返すスクリプトなので、テキトーに「echo-int」なんて名前つけてます。もちろん名前は任意です。 詳しい説明はRedhatの「Net-SNMPを利用したパフォーマンスのモニタリング」の、「18.7.5. Net-SNMP の拡張」の項にあります。 3.動作を確認する Linux自身で自分にsnmpwalkし、設定を確認します。 # snmpwalk -v 1 -c public localhost nsExtendOutputFull NET-SNMP-EXTEND-MIB::nsExtendOutputFull."echo-int" = STRING: 90 定義されている nsExtend を全て表示するコマンドです。 echo-intがコンソールに表示されました。 90と表示されていることから、すでにスクリプトは実行されているようです。 次に外部から取得可能なOIDを調べます。さきほどのsnmpwalkにオプション付けます。 # snmpwalk -v 1 -c public localhost nsExtendOutputFull -On .1.3.6.1.4.1.8072.1.3.2.3.1.2.8.101.99.104.111.45.105.110.116 = STRING: 90 従って、スクリプトを実行するOIDは「.1.3.6.1.4.1.8072.1.3.2.3.1.2.8.101.99.104.111.45.105.110.116 」と 分かりました。 #snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.8072. (→続き)1.3.2.3.1.2.8.101.99.104.111.45.105.110.116 NET-SNMP-EXTEND-MIB::nsExtendOutputFull."echo-int" = STRING: 90 結果が取得できました。 その他 以下のコマンドで、nsExtendに関してその他の情報も表示する事ができます。 #snmpwalk -v 1 -c public localhost NET-SNMP-EXTEND-MIB::nsExtendObjects 略式として以下でも同じです #snmpwalk -v 1 -c public localhost nsExtendObjects NET-SNMP-EXTEND-MIB::nsExtendNumEntries.0 = INTEGER: 1 NET-SNMP-EXTEND-MIB::nsExtendCommand."echo-int" = STRING: /root/ec.sh NET-SNMP-EXTEND-MIB::nsExtendArgs."echo-int" = STRING: NET-SNMP-EXTEND-MIB::nsExtendInput."echo-int" = STRING: NET-SNMP-EXTEND-MIB::nsExtendCacheTime."echo-int" = INTEGER: 5 NET-SNMP-EXTEND-MIB::nsExtendExecType."echo-int" = INTEGER: exec(1) NET-SNMP-EXTEND-MIB::nsExtendRunType."echo-int" = INTEGER: run-on-read(1) NET-SNMP-EXTEND-MIB::nsExtendStorage."echo-int" = INTEGER: permanent(4) NET-SNMP-EXTEND-MIB::nsExtendStatus."echo-int" = INTEGER: active(1) NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."echo-int" = STRING: 90 NET-SNMP-EXTEND-MIB::nsExtendOutputFull."echo-int" = STRING: 90 ←コレ NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."echo-int" = INTEGER: 1 NET-SNMP-EXTEND-MIB::nsExtendResult."echo-int" = INTEGER: 0 NET-SNMP-EXTEND-MIB::nsExtendOutLine."echo-int".1 = STRING: 90 4.監視テストする PandoraFMSで目的の監視デバイスへ、CPU監視を追加します。 エージェントの監視項目追加でSNMPウィザードを選択します。 SNMPコミュニティ名を入力し、snmpwalkを実行します。 他のSNMPデータから、CPU使用率5分平均の「ロードアベレージ5分」を選択し、追加します このロードアベレージ5分という表記は、PandoraFMSのバージョンによって異なるかもしれません。 先ほど追加したロードアベレージ5分モジュールの監視条件を編集します。 ロードアベレージ5分の変更点
ec.shスクリプトが以下の内容であれば #!/bin/sh echo 90 CPU使用率として90の値が疑似的に得られます。 CPU90%超えが3回続けば、障害イベントが発生します。 スクリプトの内容を書き換えます。 #!/bin/sh echo 70 CPU70%超えが3回続けば、警告イベントが発生します。 スクリプトの内容を書き換えます。 #!/bin/sh echo 30 CPU70%を下回れば、正常に戻ります。 イベント発生の条件が正常に試験できれば、監視の項目を元に戻します。 ロードアベレージ5分のOIDを、本来のOIDへ戻します。 監視間隔も5分に戻します。 |
|
|||||||||||||||