SNMP監視における注意点について
投稿日: / 更新日:
今回は、HinemosにてSNMP監視を行う際に注意したい点について、紹介したいと思います。 SNMP監視がうまく検知されない時など、少しでも参考になればと思います。
SNMP監視について
HinemosでSNMP監視を行う場合、最低限以下の情報がそろっている必要があります。
- 監視したいOID
- [数値監視]重要度危険・警告・情報と判断するための閾値
- [文字列監視]検知したい文字列
・内部仕様
HinemosではSNMP監視を行う際に、コマンド「snmpget」を利用して取得しています。
snmpwalkを利用して、取得しているわけではないので、注意してください。
Hinemosではsnmpgetで取得に失敗した場合に、重要度”不明”と検知します。
・気を付けたい点
SNMP監視に設定したOIDから取得できる結果に、複数のインスタンスがある場合、
SNMP監視を実行すると、Hinemosでは重要度”不明”と検知します。
・例
インタフェースのポート状態確認できる。”ifOperStatus”を例に説明します。
“ifOperStatus”は、「.1.3.6.1.2.1.2.2.1.8」で取得することが可能です。
このOIDをSNMP監視に設定した場合、重要度”不明”と検知されます。
筆者の環境でsnmpwalkで、”ifOperStatus”を取得してみると、以下の結果になりました。
1 2 3 |
(root)# snmpwalk -v 2c -c public [対象のホスト名] 1.3.6.1.2.1.2.2.1.8 IF-MIB::ifOperStatus.1 = INTEGER: up(1) IF-MIB::ifOperStatus.2 = INTEGER: up(1) |
インスタンスが2つありますね。
これをsnmpgetで実行してみると…。
1 2 |
(root)# snmpget -v 2c -c public [対象のホスト名] 1.3.6.1.2.1.2.2.1.8 IF-MIB::ifOperStatus = No Such Instance currently exists at this OID |
はい。ご覧の通り、失敗します。
そのため、Hinemosでは重要度”不明”と検知します。
・回避策
察しのいい方は気づかれているかと思いますが、複数インスタンスがある場合、SNMP監視に設定するOIDには、インスタンスまで指定した形で設定する必要があります。
今回の例でいうと、1つ目のインスタンスを監視したい場合、「1.3.6.1.2.1.2.2.1.8.1」と指定しなくてはならなりません。
1 2 |
(root)# snmpget -v 2c -c public [対象のホスト名] 1.3.6.1.2.1.2.2.1.8.1 IF-MIB::ifOperStatus.1 = INTEGER: up(1) |
「インスタンス数が大量にあって、ひとつずつSNMP監視を設定するのが面倒!」という方は、
独自にシェルスクリプトを作成し、カスタム監視で監視を行うしか、現状方法はありません。
※このシェルスクリプトについても作ったので、またの機会に紹介できればと思います。
おわりに
「ちゃんとpingも通ってるし、snmpwalkで取得もできるのに!監視できない!」なんて方もいるのではないでしょうか。この内部仕様については、気づきにくい箇所かと思ったので記事にしてみました。
少しでも参考になれば幸いです。