ZABBIXのSNMP監視について

今回初の試みで、SNMP監視設定を実施予定です。
(以前、zabbix-serverとzabbix-agent間での監視環境の構築の経験あり)

やりたいこととしては、Windows Server環境(複数台)から、
SNMPを使用して、Disk 容量等で閾値を超えた際に
Zabbix上にてアラートを出力し、メールにて通知を送信する想定をしております。

今回、zabbix-serverのWebUI上にSNMPの情報が反映されず(エージェントの状態もグレーのまま)、
行き詰ってしまった為、解決方法を模索中です。

尚、環境・構成は以下の通りです。
◆環境・構成
・zabbix-server 2.2.3 (RHEL6.5 x64)
perl
 snmptrapd
snmptt (standaloneモードで設定)

・Windows Server 2008R2
SNMP Service(トラップ送信、SNMPパケット受付設定済)

※SNMPコミュニティ名は、"public" としております。

◆/etc/zabbix/zabbix_server.conf
StartSNMPTrapper=1
SNMPTrapperFile=/var/log/snmptt/snmptt.log

◆/etc/snmp/snmptrapd.conf
authCommunity log,execute,net public
traphandle default /usr/sbin/snmptt

◆/etc/snmp/snmptt.ini
mode = standalone
multiple_event = 0
dns_enable = 1
net_snmp_perl_enable = 1
net_snmp_perl_best_guess = 2
translate_log_trap_oid = 1
log_system_enable = 1
unknown_trap_log_enable = 1
syslog_enable = 0
syslog_system_enable = 0
/etc/snmp/snmptt.conf
/etc/snmp/snmptt-standard.conf
date_time_format = %H:%M:%S %Y/%m/%d

◆/etc/snmp/snmptt.conf
#
# SNMP-General event
#
EVENT general .* “General event” Normal
FORMAT ZBXTRAP $aA $ar

◆/etc/snmp/snmptt-standard.conf
#
# TEST
#
EVENT enterpriseSpecific .1.3.6.* "Status Events Normal"
FORMAT ZBXTRAP $aA Windows_Power_Shellが起動しました。
#
# SNMPv2-MIB
#
EVENT coldStart .1.3.6.1.6.3.1.1.5.1 "Status Events" Normal
FORMAT ZBXTRAP $aA エージェントが再起動しました。種別:coldStart
#
EVENT warmStart .1.3.6.1.6.3.1.1.5.2 "Status Events" Normal
FORMAT ZBXTRAP $aA エージェントが再起動しました。種別:warmStart
#
EVENT authenticationFailure .1.3.6.1.6.3.1.1.5.5 "Status Events" Warning
FORMAT ZBXTRAP $aA コミュニティ名が不正です。
#
# IF-MIB
#
EVENT linkDown .1.3.6.1.6.3.1.1.5.3 "Status Events" Critical
FORMAT ZBXTRAP $aA インターフェース $1 が停止しました。状態:$2/$3
<省略>

※Windows側からのSNMPトラップは、取り敢えず、
WIndows Power Shellを起動した際にSNMPトラップを送信するようにしています。

◆テンプレート
・テンプレート名: Template SNMP Traps
・所属グループ: Templates
・利用中: Windows Server, Zabbix Server

◆アプリケーション
・名前: SNMPTraps

◆アイテム
・名前: TEST
・タイプ: SNMPトラップ
・キー: snmptrap["General"]
・ホストインターフェース: WindowsServerのIP:161
・データ型:ログ
・ログの時間の形式: hh:mm:ss yyyy/MM/dd
・アプリケーション: SNMPTraps

下記のブログを参考に設定し、 "snmptt.log" にSNMPトラップ情報が
記載されるところまでは、確認出来ていることから、
Zabbix側のアイテムあたりの設定が間違えているような気がしています。
http://ricemalt.blog98.fc2.com/blog-entry-20.html

長文失礼いたしました。
大変お見苦しいとは思いますが、
どうぞよろしくお願いいたします。

コメント表示オプション

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

halser_seさん

snmp監視じゃなく、snmptrap監視したいということでしょうか?

で、snmpttを使いたいということでしょうか?

ユーザー halser_se の写真

KAZさん

早速の返信、ありがとうございます。

言葉足らずで申し訳ございません。
仰るとおり、snmpttを使用し、snmptrap監視をしたいということです。

よろしくお願いいたします。

ユーザー KAZ の写真

halser_seさん

snmptt.iniですが、ログ出力先が指定されてないような?

↓Zabbix2.0のマニュアルですが参考になりますか?
https://www.zabbix.com/documentation/jp/2.0/manual/config/items/itemtype...

ユーザー halser_se の写真

KAZさん

返信ありがとうございます。
snmptt.iniのログ出力先は設定していた気がしており、
実際にsnmptt.iniを開いて確認してみたところ、既に出力設定済でした。
投稿したsnmptt.iniの箇所へのログ出力部分の記載漏れでした。
失礼いたしました。

snmptt.iniのロギング部分については以下の通りに設定しており、
監視対象のWindowsサーバからのテストトラップを送信した際に問題なく
snmptt.logへ出力されることを確認しております。

◆/etc/snmp/snmptt.ini
[Logging]
stdout_enable = 0
log_enable = 1
log_file = /var/log/snmptt/snmptt.log
log_system_enable = 1
log_system_file = /var/log/snmptt/snmpttsystem.log
unknown_trap_log_enable = 1
unknown_trap_log_file = /var/log/snmptt/snmpttunknown.log
statistics_interval = 0
<以下省略>

よろしくお願いいたします。

ユーザー KAZ の写真

halser_seさん

先ほど書いたマニュアルの内容は読まれましたか?
date_time_formatもないようですが…

↓これも参考にしてみてください。
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
http://www.slideshare.net/qryuu/zabbix20snm-ptt

ユーザー halser_se の写真

KAZさん

返信・アドバイス頂きありがとうございます。

先ほどのマニュアルは読んで設定しております。
date_time_formatについては、
一番最初の投稿で記載しておりましたが、
記載の仕方が微妙で見辛かったかと思います、
大変失礼いたしました。

尚、date_time_formatへは、以下の通り設定しております。

◆/etc/snmp/snmptt.ini

date_time_format = %H:%M:%S %Y/%m/%d

[TrapFiles]
snmptt_conf_files = <<END
/etc/snmp/snmptt.conf
/etc/snmp/snmptt-standard.conf
END

よろしくお願いいたします。

ユーザー KAZ の写真

halser_seさん

snmpttの環境つくるのに、ちょっと手間取ってます。
ようやくhalser_seさんと同じくらいの所まで来ました。A(^^;
※:snmpttのログが出力される所まで来ました。

本業が忙しいのでちょっと遅くなりますがご容赦を…m(__)m

ユーザー halser_se の写真

KAZさん

いつもご丁寧に返信・対応頂きありがとうございます。

お忙しいところ、対応頂きまして申し訳ございません。

お手数お掛けし、大変恐縮ではございますが、
何卒よろしくお願いいたします。

ユーザー KAZ の写真

halser_seさん

新しく建てた環境(Zabbix2.2.3)で取得出来ました。A(^^;

snmpttが出力しているログですが、Zabbixサーバが読めるパーミッション&フォーマットでしょうか?

■Zabbixサーバが読めないパーミッション
Zabbixサーバに以下のログが出ます。

2363:20140616:003727.234 cannot open [/var/log/snmptt/snmptt.log]: [13] Permission denied

■Zabbixサーバが読めないフォーマット

2473:20140616:003905.657 invalid trap found [hogehoge〜hogehoge〜hogehoge〜]

マニュアルわかりづらいかもしれませんが、「Zabbixが解析できるフォーマット」でログを出してやらないとデータが取得出来ません。

2回めに書いた参考URLの18-19頁を読むとフォーマットがわかるかと…
http://www.slideshare.net/qryuu/zabbix20snm-ptt

ちなみにアイテムの設定は間違ってないと思います。

ユーザー halser_se の写真

KAZさん

早速の返信ありがとうございます。

KAZさんのご指摘の通り、
パーミッションの設定が誤っていたが為に、
完全にZabbixサーバがsnmptt.logを読めない状態となっておりました。
---------------------------------------------------------------------------------------------------------------------------------------------
# tail -3 /var/log/zabbix/zabbix_server.log
2032:20140617:202311.354 cannot open [/var/log/snmptt/snmptt.log]: [13] Permission denied
2032:20140617:202312.355 cannot open [/var/log/snmptt/snmptt.log]: [13] Permission denied
2032:20140617:202313.355 cannot open [/var/log/snmptt/snmptt.log]: [13] Permission denied
---------------------------------------------------------------------------------------------------------------------------------------------

また、フォーマットについては特にエラーは出力されておらず、問題は無さそうでした。
アイテムの設定も問題が無いとのことでしたので、パーミッションの設定(SELinux)を変更して試してみます。

ユーザー KAZ の写真

halser_seさん


パーミッションの設定が誤っていたが為に、
完全にZabbixサーバがsnmptt.logを読めない状態となっておりました。

問題ないならSElinuxはDisabledにしたほうが楽です。A(^^;

↓参考にどうぞ
http://tnk77.blogspot.jp/2013/04/zabbixselinux_16.html
http://moriya.xrea.jp/tdiary/20131130.html
http://d.hatena.ne.jp/ike-dai/20110719/1311079676

ユーザー halser_se の写真

KAZさん

返信・アドバイスありがとうございます。

実は、Zabbixをインストールする前より先に
SELinuxは最初からDisabledに設定しておりました。
(以前、Zabbixをインストールする際には無効ないし、
確実に設定にしないと上手く動かないと聞いておりましたので。)

しかし、パーミッションの設定でsnmptt.logを読めていないことから、
/var/log/snmptt/ディレクトリまたは、snmptt.logのread権限が無いのかと思いましたが、
755/644に設定されているので特に問題があるようには見受けられませんでした。
ここで、調べた際に出てきた「SELinux」が無効化していても何かしら関与しているのでは?
と思い、SELinuxの設定を見直してみたりしておりました。
(※私はSELinuxについてはあまり詳しくありません。)

SELinuxも無効化済ですし、他に思い当たるのはユーザぐらいでしょうか。
尚、ユーザ作成は極力避けたい思いがあり、SNMPTTをdaemonモードじゃなく、
standaloneモードで実行しているのもそのためなのです。
---------------------------------------------------------------------------------------------------------------------------------------------
# pwd
/var/log/snmptt
# ls -la
合計 24
drwxr-xr-x. 2 root root 4096 6月 17 19:18 2014 .
drwxr-xr-x. 23 root root 4096 6月 18 10:05 2014 ..
-rw-r--r--. 1 root root 5713 6月 17 20:30 2014 snmptt.log
-rw-r--r--. 1 root root 1078 6月 15 03:46 2014 snmptt.log-20140615.gz
-rw-r--r--. 1 root root 0 6月 15 03:46 2014 snmpttunknown.log
-rw-r--r--. 1 root root 884 6月 15 03:46 2014 snmpttunknown.log-20140615.gz
---------------------------------------------------------------------------------------------------------------------------------------------

よろしくお願いいたします。

ユーザー KAZ の写真
halser_seさん

私はsnmpttユーザ作って動かしました。
で、daemonモードです。

パーミッションは以下の通りです。

]# ls -la
合計 16
drwxr-xr-x  2 snmptt snmptt 4096  6月 16 00:24 2014 .
drwxr-xr-x. 6 root   root   4096  6月 16 16:54 2014 ..
-rw-r--r--  1 snmptt snmptt 1356  6月 16 17:00 2014 snmptt.log
-rw-r--r--  1 root   root   1004  6月 16 16:54 2014 snmpttsystem.log
ユーザー halser_se の写真

KAZさん

返信・アドバイス頂きありがとうございます。

あの後、SELinuxをenforcing→再起動 disabled→再起動してみたところ、
zabbix_server.logに 「cannot open [/var/log/snmptt/snmptt.log]: [13] Permission denied」
が出力されなくなり、Zabbixフロントエンド上からも監視が出来ていることを確認出来ました。

詳細の理由が分からずモヤモヤしますが、
取り敢えず現状の問題点が解決出来たので今回はこれでいきたいと思います。
(なんとか、snmpttユーザは作成せず、standaloneモードで監視出来そうです。
公式のマニュアルでは、daemonモードを推奨しておりましたが。。。)

色々とご教授頂きとても助かりました。
ここまで来れたのもKAZさんのお力をお借りできたので
解決することが出来たと思っております。
本当にありがとうございました!

ユーザー freeman88 の写真

パーミッションの後にドットが付与されているのでselinuxが有効だったとおもわれます。

ユーザー halser_se の写真

freeman88さん

返信ありがとうございます。

言われて気づきました。
確かにパーミッションの後にドットが付与されていますね。

ただ、/etc/selinux/configは、
事前にSELINUX=disabledにしており、その問題が発生した際にも念のため確認しておりますが、
その時もSELINUX=disabledになっていたことを確認しております。

SELINUX=disabledだったにも関わらず、enforcingの様な状態となっていたことが不思議です。

このことは、Zabbixには直接関係の無い部分ですので、これ以上ここで追求しないことにします。

また、時間が経っていたこの投稿に
ご丁寧に返信頂きましてありがとうございました。

原因がSELinuxだということが分かり、少しモヤモヤは解けました。
今後、Zabbix構築時にSELinuxのパーミッション周りは意識する様、
教訓として今後に生かしていきたいと思います。
ありがとうございました。

ユーザー KAZ の写真

halser_seさん

SElinuxは/etc/selinux/configファイルを変えただけでは反映せず、OS再起動が必要です。

ご参考まで
http://pocketstudio.jp/linux/?FC4%2FSELinux%2F%C6%B0%BA%EE%A5%E2%A1%BC%A...

ユーザー halser_se の写真

KAZさん

返信・アドバイス頂き、ありがとうございます。

言葉足らずで申し訳ございません。
実は、SELinux設定をdisableに変更後、再起動は実施し、
且つ、その後何度かOSを再起動することはありました。
※ 尚、これらはZabbixインストール前に実施済です。

それでも "Permission denied" が出てしまっていたので、
解せない思いでした。。。

SELinuxの参考ページありがとうございます!
とても解りやすく細かく載っているようですので、
SELinuxについて勉強する際に参考にいたします。

いつも、色々教えて頂き、とても助かっています。
ありがとうございます。