プライベートMIBのSNMPトラップ受信でのアラーム表示方法について

いつも参考にしています。

エージェントからのSNMPトラップ受信を契機にZabbixのWeb画面で
アラーム表示させたいと考えています。
トラップはプライベートMIBのものになります。

Zabbixからエージェントにポーリングするのではなく、
エージェントからトラップ送信する場合にそれを表示させる
ことは出来るのでしょうか。(MIBに記載されているメッセージ
をWeb表示させる場合と、SNMPトラップ上にのってくるメッセージを
Web表示させる場合の2パターンの監視が出来ればと考えています)

実現可能であれば、MIBの登録方法と、Zabbixでの設定について
ご教示頂けないでしょうか。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー kodai の写真

こんにちは。

ZabbixでSNMPトラップを受信する場合、いちどsnmptrapdを介してデータをZabbixサーバに渡す形になります。

Zabbixサーバ自体はMIBの登録やトラップ文字列の変換機能は備えていないので、MIBをOIDからオブジェクト名に変換するのはsnmptrapd側で行う必要があります。

Linux(CentOS)ではsnmptrapdはnet-snmpの一部の機能として提供されているので、/usr/share/snmp/mibsの下にMIB定義ファイルを置けば自動的に変換されるようになっていたと思います。

ユーザー tomotomo の写真

kodai様
ご教示ありがとうございます。
(返信遅くなり大変申し訳ありません)

いろいろと実施してみてなんとかSNMPトラップ受信時にzabbix上で
アラームを出力させる事は出来たのですが、下記がまだ実現出来て
いない状態です。
下記について実現方法があればご教示頂けないでしょうか。

?.Hex-STRINGで送信されるSNMPトラップのメッセージを日本語表示にする

監視対象機器からは、SNMPトラップのメッセージはHex-STRINGの形式で
送信されるのですが、現状zabbix上ではHexの状態のままアラーム表示
されてしまいます。
Hexから通常のstringに変換した形でzabbix上に表示させる事は
出来るのでしょうか。(ご教示頂いているMIBは指定のディレクトリに
配置はしてます)

?.複数の障害アラームを連続してzabbix上で出力させる

監視対象機器からは多数のSNMPトラップが送信されるため、zabbix上
ではアラームのイベントやアイテムの設定は個別に行わずに、受信した
アラームのメッセージをそのまま表示し(Hexから変換はする)、
アラームの重要度でのみ障害レベルを分けるという使い方をしたいと
考えています。
ですが、現状では障害アラームは複数続けてzabbixのイベント画面に
表示されません。
(正常アラーム受信するなど、状態が変わる時しか表示されない)
複数のアラームを1つのイベント設定で処理したいのですが上記の
動きをするため最初の1つしかアラームが表示がされません。
回避策があればご教示頂けないでしょうか。

ユーザー KAZ の写真

tomotomoさん

横からすいません。

Hexから通常のstringに変換した形でzabbix上に表示させる事は
出来るのでしょうか。(ご教示頂いているMIBは指定のディレクトリに配置はしてます)

snmptrapdの再起動はされましたか?

(正常アラーム受信するなど、状態が変わる時しか表示されない)

トリガー作成時に「イベント生成」で「ノーマル」「ノーマル+障害イベントを継続して生成」の2つが選べます。
デフォルトは「ノーマル」ですが「ノーマル+障害イベントを継続して生成」を選べば良いかと。

トリガー条件にnodataを含めるても良いかと。
詳細はフォーラムを検索すると色々出てくると思います。

ユーザー tomotomo の写真

KAZ様

ご教示ありがとうございます。

?.について、snmptrapdの再起動は実施していますがzabbix上
での表示はhexのままです。
どこかのログで変換されている事を確認出来るものなのでしょうか。

?.は本日複数の種類のアラームを出力する環境がなかったので、
改めて確認してみます。
フォーラムも改めて確認致します。

ユーザー KAZ の写真

tomotomoさん

snmptrapdでログが出せます。
「snmptrapd」「ログ」のキーワードでググルと参考にできるサイトが見つかるかと。

また、snmptrap.shを改造すればログが出力出来ます。
snmptrap.shはsnmptrapdから渡ってきたデータを加工してzabbix_senderに渡すシェルです。

zabbix_senderはzabbix_serverにデータを渡すだけなので、zabbix_senderにわたる前に変換されていないとまずいと思います。

ユーザー kodai の写真

Hex-STRINGで送信されるSNMPトラップのメッセージを日本語表示にする

Zabbix側にはそのような機能はないので、やるとすればsnmptrapd側で変換してからzabbix_senderでZabbixサーバに渡してやる必要があります。

変換ができるかどうかや、どのようにするかは私も分からないのですが...

�.複数の障害アラームを連続してzabbix上で出力させる

KAZさんの通り、トリガー設定で「ノーマル+障害イベントを継続して生成」を選択してください。

今回の場合nodata()は利用しない方がいいです。上記の障害イベントを継続して生成の設定と相性がとても悪いですし、多用するとパフォーマンスが悪くなります。

ユーザー heya の写真

こんにちは。
横から失礼します。

Hexの件についてですが、snmptrapdの(というか“snmpなんとか”系全般の)オプションには、出力形式を決める-Oオプションがあります。そして、man snmpcmdを見ると、
<code>-OT If values are printed as Hex strings, display a printable ver-
sion as well.
-Ox Display string values as Hex strings (unless there is a DISPLAY-
HINT defined for the corresponding MIB object). By default, the
library attempts to determine whether the value is a printable
or binary string, and displays it accordingly.</code>なんてのがありました(※)。snmptrapdを起動するときに、この辺のオプションが付いていたりしませんか?一回psコマンドで確認してみるといいと思います。
もし付いているようならこのオプションを外すとか、-Oa(アスキー文字で表示する)にしてみるとかすればお望みの動作になるかもしれません。

※いまいち英語がよく分かっていないのですが、とにかくHexという単語が出てきたので。見た感じ、-OTは-Oxを指定したときに初めて意味が出てくるもののような気もします。

おまけ:CentOSなら、起動時のオプションは/etc/sysconfig/snmptrapd.optionsというファイルで設定できます。

・・・と、ここまで書いて気づいてしまった。
> Hex-STRINGで送信されるSNMPトラップのメッセージを日本語表示にする
「日本語」だったんですね。それだと、上に書いたのは見当違いかもしれません。
Hex-STRINGのデータと日本語との対応表がどこかにあって、それにしたがって変換する、という感じでしょうか?それなら、snmptrap.shを改造するのが素直なやり方かなと思います。変換プログラムがすでにあるなら、snmptrap.shの中から呼び出すのが一番手っ取り早そうです。