プライベートMIBのSNMPトラップ受信でのアラーム表示方法について
いつも参考にしています。
エージェントからのSNMPトラップ受信を契機にZabbixのWeb画面で
アラーム表示させたいと考えています。
トラップはプライベートMIBのものになります。
Zabbixからエージェントにポーリングするのではなく、
エージェントからトラップ送信する場合にそれを表示させる
ことは出来るのでしょうか。(MIBに記載されているメッセージ
をWeb表示させる場合と、SNMPトラップ上にのってくるメッセージを
Web表示させる場合の2パターンの監視が出来ればと考えています)
実現可能であれば、MIBの登録方法と、Zabbixでの設定について
ご教示頂けないでしょうか。
kodai - 投稿数: 1341
こんにちは。
ZabbixでSNMPトラップを受信する場合、いちどsnmptrapdを介してデータをZabbixサーバに渡す形になります。
Zabbixサーバ自体はMIBの登録やトラップ文字列の変換機能は備えていないので、MIBをOIDからオブジェクト名に変換するのはsnmptrapd側で行う必要があります。
Linux(CentOS)ではsnmptrapdはnet-snmpの一部の機能として提供されているので、/usr/share/snmp/mibsの下にMIB定義ファイルを置けば自動的に変換されるようになっていたと思います。
tomotomo - 投稿数: 3
kodai様
ご教示ありがとうございます。
(返信遅くなり大変申し訳ありません)
いろいろと実施してみてなんとかSNMPトラップ受信時にzabbix上で
アラームを出力させる事は出来たのですが、下記がまだ実現出来て
いない状態です。
下記について実現方法があればご教示頂けないでしょうか。
?.Hex-STRINGで送信されるSNMPトラップのメッセージを日本語表示にする
監視対象機器からは、SNMPトラップのメッセージはHex-STRINGの形式で
送信されるのですが、現状zabbix上ではHexの状態のままアラーム表示
されてしまいます。
Hexから通常のstringに変換した形でzabbix上に表示させる事は
出来るのでしょうか。(ご教示頂いているMIBは指定のディレクトリに
配置はしてます)
?.複数の障害アラームを連続してzabbix上で出力させる
監視対象機器からは多数のSNMPトラップが送信されるため、zabbix上
ではアラームのイベントやアイテムの設定は個別に行わずに、受信した
アラームのメッセージをそのまま表示し(Hexから変換はする)、
アラームの重要度でのみ障害レベルを分けるという使い方をしたいと
考えています。
ですが、現状では障害アラームは複数続けてzabbixのイベント画面に
表示されません。
(正常アラーム受信するなど、状態が変わる時しか表示されない)
複数のアラームを1つのイベント設定で処理したいのですが上記の
動きをするため最初の1つしかアラームが表示がされません。
回避策があればご教示頂けないでしょうか。
KAZ - 投稿数: 1085
tomotomoさん
横からすいません。
snmptrapdの再起動はされましたか?
トリガー作成時に「イベント生成」で「ノーマル」「ノーマル+障害イベントを継続して生成」の2つが選べます。
デフォルトは「ノーマル」ですが「ノーマル+障害イベントを継続して生成」を選べば良いかと。
トリガー条件にnodataを含めるても良いかと。
詳細はフォーラムを検索すると色々出てくると思います。
tomotomo - 投稿数: 3
KAZ様
ご教示ありがとうございます。
?.について、snmptrapdの再起動は実施していますがzabbix上
での表示はhexのままです。
どこかのログで変換されている事を確認出来るものなのでしょうか。
?.は本日複数の種類のアラームを出力する環境がなかったので、
改めて確認してみます。
フォーラムも改めて確認致します。
KAZ - 投稿数: 1085
tomotomoさん
snmptrapdでログが出せます。
「snmptrapd」「ログ」のキーワードでググルと参考にできるサイトが見つかるかと。
また、snmptrap.shを改造すればログが出力出来ます。
snmptrap.shはsnmptrapdから渡ってきたデータを加工してzabbix_senderに渡すシェルです。
zabbix_senderはzabbix_serverにデータを渡すだけなので、zabbix_senderにわたる前に変換されていないとまずいと思います。
kodai - 投稿数: 1341
Zabbix側にはそのような機能はないので、やるとすればsnmptrapd側で変換してからzabbix_senderでZabbixサーバに渡してやる必要があります。
変換ができるかどうかや、どのようにするかは私も分からないのですが...
�.複数の障害アラームを連続してzabbix上で出力させる
KAZさんの通り、トリガー設定で「ノーマル+障害イベントを継続して生成」を選択してください。
今回の場合nodata()は利用しない方がいいです。上記の障害イベントを継続して生成の設定と相性がとても悪いですし、多用するとパフォーマンスが悪くなります。
heya - 投稿数: 319
こんにちは。
横から失礼します。
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の中から呼び出すのが一番手っ取り早そうです。