zabbix4.0環境構築、zabbix-snmptrapsも。

公開日:2019-07-08
最終更新:2019-07-14

前回の結果から、elasticsearchは使わないでいいやと。と言うことで今回はelasticsearch未使用。
今回はググってもいまいちよく分からなかったzabbix-snmptrapsと言うイメージの実験。

下記は前回同様のメモ。

windows(のpowershellコンソール)からphotonOSのdockerをつついてるため文の改行区切りに`を使ってます。linuxなら\だろうし、そこら辺は環境にあわせて。

以後何度か出てくる 192.168.1.210 ってIPはdocker実行しているphotonOSのIPです。

zabbix-snmptrapsについて結論から

snmptrapdでtrap受信したあと、snmptrapfmthdlrで加工して、ファイル出力するだけ。
これってsnmpttの実行ファイル名だっけ?まあ違うものだとしても、やってる事は同じだけど。

なのでzabbix-snmptrapsコンテナ内のファイルを、zabbix本体コンテナが読めるようにしてあげる必要あり。

ここから構築

mysql

PS D:\> docker run --rm --name mysql-server `    
-e MYSQL_DATABASE="zabbix" `    
-e MYSQL_USER="zabbix" `    
-e MYSQL_PASSWORD="sqlpassword" `    
-e MYSQL_ROOT_PASSWORD="sqlrootpassword" `    
-d mysql `    
--character-set-server=utf8mb4 --character-set-server=utf8mb4_bin `    
--default-authentication-plugin=mysql_native_password  

前回と同じ。テストおわったらデータ永続化しないと、、、

zabbix-snmptraps

PS D:\> docker run --rm --name zabbix-snmptraps `  
-v zabbix-vol:/var/lib/zabbix `  
-p 162:162/tcp -p 162:162/udp `  
-d zabbix/zabbix-snmptraps  

-vオプションでデータ永続化。
zabbix-volというボリュームを作って、それをコンテナの /var/lib/zabbix にマウント。
なおsnmptrapのデータが保存されるパスは/var/lib/zabbix/snmptrapsで、mibファイル置くパスは/var/lib/zabbix/mibs。
docker volume コマンドでzabbix-vol を削除しない限りはデータ保持される。
ボリューム=vsphereでいう仮想ディスクという感じで理解しました。

-v オプションではdockerホストのディレクトリ/ファイルに直接リダイレクトすることも出来るようだけど取りあえず保留。
そっちの方が編集とかはしやすそうだけど可搬性落ちる感じなのかな、たぶん。

zabbix本体

PS D:\> docker run --rm --name zabbix-server `  
-e ZBX_ENABLE_SNMP_TRAPS="true" `  
-e ZBX_STARTDISCOVERERS="2" `  
-e DB_SERVER_HOST="mysql-server" `  
-e MYSQL_DATABASE="zabbix" `  
-e MYSQL_USER="zabbix" `  
-e MYSQL_PASSWORD="sqlpassword" `  
-e MYSQL_ROOT_PASSWORD="sqlrootpassword" `  
-e TZ="Asia/Tokyo" `  
--link mysql-server `  
--link zabbix-snmptraps `  
--volumes-from zabbix-snmptraps `  
-p 10051:10051 `  
-d zabbix/zabbix-server-mysql  

ZBX_ENABLE_SNMP_TRAPS オプションを追加、おそらくzabbix_server.conf内でStartSNMPTrapper=1とかが有効になるのかと。
--volumes-from zabbix-snmptraps は、zabbix-snmptrapsとボリュームマウント状況同じにするオプション(たぶん)
これにより、zabbix-volボリュームがこのコンテナの/var/lib/zabbixにマウントされ、ファイル触ることが可能に。排他制御とか大丈夫なんだろうか、、、?

後から考えると、通信するわけではないので、--link zabbix-snmptraps は多分要らなかった気がします。

webサーバ

PS D:\> docker run --rm --name zabbix-web `  
-e DB_SERVER_HOST="mysql-server" `  
-e MYSQL_DATABASE="zabbix" `  
-e MYSQL_USER="zabbix" `  
-e MYSQL_PASSWORD="sqlpassword" `  
-e MYSQL_ROOT_PASSWORD="sqlrootpassword" `  
-e PHP_TZ="Asia/Tokyo" `  
--link mysql-server `  
--link zabbix-server `  
-p 80:80 -p 443:443 `  
-d zabbix/zabbix-web-nginx-mysql  

テスト

  1. http://192.168.1.210 でzabbixにアクセスし、snmptrap コマンド使えるホストを適当に登録
  2. Template Module Generic SNMPv2 がsnmptrapアイテム有ったので、取りあえず登録したホストにこれを適用
  3. 1で登録したホストで書きコマンド実行
    snmptrap -v 2c -c public 192.168.1.210 '' .1.3.6.1.4.1.8072.9999 .1.3.6.1.4.1.8072.9999 s 'TEST'  
  4. zabbixの監視データ->最新データでtrap確認
    ダメそうなら、まず/var/lib/zabbix/snmptraps にファイルがまず吐かれるのを確認して切り分けを。

まとめと次回

zabbix-snmptrapsをググっても全然情報無くて、苦戦するかと思ったが、やってみたら思ったよりさらっと出来た。
既存環境はzabbix アクティブでログファイル見ているが、方法変えようかなー、、、やるならfluentdかlogstash?そしたらtrapもfluentd or logstashで処理すべきだよね多分

記事が少しでもいいなと思ったらクラップを送ってみよう!
0
+1
藤枝の技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする