VyOSのEvent_Handlerとzabbix_senderで独自監視を実装する
この記事VyOS AdventCalendar2014の3日目の記事です。
以前にZabbix Agentをインストールしたエントリを書いたのですが、ずっとzabbix senderがうまく使えないか気になっていたところでEvent Handlerという機能を見つけたので、今回はEvent_Handlerとzabbix_senderがVyOSでしっかり動くかを確認してみます。
VyOS Event Handlerとは
Event HundlerはVyOSの機能で、ログファイルなどのテキストを監視し正規表現を用いてマッチした場合に任意のスクリプトを実行する機能です。
zabbix senderとは
監視対象から任意の値をZabbix Serverに送信できる仕組みです。Agentを常時起動させる必要もなく、また、定期的にポーリング監視を受け付けることもありません。
概要
Authentication Failureとbgp errorを検知してZabbixに任意のステータスを送信してみました。流れは以下の通りです。
- VyOSへzabbix senderをインストールする
- Zabbix Server側へアイテムを登録する
- VyOSにEvent Handlerを設定する
- 動作確認
自由度が高いので色々なことに応用できそうです。
VyOSへzabbix senderをインストールする
前回のエントリと同様の手順です。レポジトリの追加手順は省略します。zabbixでサーチするとzabbix-senderが見つかりますので、インストールします。
vyos@vyos:/tmp$ sudo apt-cache search zabbix zabbix-agent - network monitoring solution - agent zabbix-frontend-php - network monitoring solution - PHP front-end zabbix-get - network monitoring solution - get zabbix-java-gateway - network monitoring solution - java-gateway zabbix-proxy-mysql - network monitoring solution - proxy (using MySQL) zabbix-proxy-pgsql - network monitoring solution - proxy (using PostgreSQL) zabbix-proxy-sqlite3 - network monitoring solution - proxy (using SQLite3) zabbix-release - Zabbix official repository configuration zabbix-sender - network monitoring solution - sender zabbix-server-mysql - network monitoring solution - server (using MySQL) zabbix-server-pgsql - network monitoring solution - server (using PostgreSQL) vyos@vyos:~$ sudo apt-get install zabbix-sender Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: zabbix-sender 0 upgraded, 1 newly installed, 0 to remove and 19 not upgraded. Need to get 207 kB of archives. After this operation, 319 kB of additional disk space will be used. Get:1 http://repo.zabbix.com/zabbix/2.2/debian/ squeeze/main zabbix-sender amd64 1:2.2.7-1+squeeze [207 kB] Fetched 207 kB in 2s (87.0 kB/s) Selecting previously deselected package zabbix-sender. (Reading database ... 38970 files and directories currently installed.) Unpacking zabbix-sender (from .../zabbix-sender_1%3a2.2.7-1+squeeze_amd64.deb) ... Processing triggers for man-db ... Setting up zabbix-sender (1:2.2.7-1+squeeze) ...
Zabbix Server側へアイテムを登録する
zabbix server側でsenderのデータを受信する設定が必要です。 タイプをzabbixトラッパーに設定したアイテムを設定します。キーは任意の値で問題ございませんが、後々使用しますので覚えておいてください。
今回はデータ型を「数値」で設定していますが、「文字列」で設定することで任意の文字を監視データとして扱うことが可能です。
前回のエントリで記載しましたが、Zabbix Server側の復習です。
VyOSにEvent Handlerを設定する
Event Hundlerの設定ですが、MyPolicyを作成しsourceとevent patternを紐付け、それに対応したrun(action)を設定します。
設定にすると以下の通りです。syslogを監視し"authentication failure"か"bgp_read_packet error"が出てきたら/tmp/zabbix.shを実行します。
system { event-handler { feed Syslog { policy MyPolicy source { preset syslog } } policy MyPolicy { event Arert-zabbix { pattern "authentication failure" pattern "bgp_read_packet error" run /tmp/zabbix.sh } } } }
zabbix.shの中身は以下の通りです。
vyos@vyos:/tmp$ cat zabbix.sh #!/bin/bash zabbix_sender -z 192.168.1.1 -s VyOS-dev -k vyos_sender -o 1
動作確認
上記のzabbix_senderは特に引数を受け取っているわけではないので、以下の通りプロンプトで直接実行しても動作します。
vyos@vyos:~$ zabbix_sender -z 192.168.1.1 -s VyOS-dev -k vyos_sender -o 1 info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000070" sent: 1; skipped: 0; total: 1
設定すべきパラメータは以下の通りです。使い方さえわかっていれば簡単です。
-z : zabbix server -s : host -k : key -o : value
sshでauthentication failureを起こしてみた時のログです。
Dec 2 23:23:38 vyos sshd[5836]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.19.1.1 Dec 2 23:23:38 vyos eventwatchd: Event "Arert-zabbix" caught in feed "Syslog", command "/tmp/zabbix.sh" executed"
neighbor側の設定を意図的に消してみた時のログです。
Dec 2 23:45:05 vyos bgpd[2420]: 172.19.1.1 [Error] bgp_read_packet error: Connection refused Dec 2 23:45:05 vyos eventwatchd: Event "Arert-zabbix" caught in feed "Syslog", command "/tmp/zabbix.sh" executed"
Zabbix Server側のGUIで確認してみます。最新データを見るとしっかりとvalue 1が反映されているのがわかります。※横に長くなってしまったので必要な部分だけ切り出しています。
まとめ
今回、値を単純に1にして動作させてましたが、実際の運用時は任意の文字列やZabbix側のvalue mappingを使うなどして見やすくすると良いと思います。また、トリガー設定も入れるとより良いです。
ユーザによってやりたいことは違うと思いますが、Trapだけでは足りない点を補えるものとして紹介しておきます。Syslog飛ばしてrsyslogからZabbixへ投げてもいいのですが、こっちを使ってみました。
VyOS(Vyatta)をSNMPとZabbix Agent経由で監視してみる - ぽぽぽぽーんのネットワークとOSS
シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。
- 作者: 松本直人
- 出版社/メーカー: 技術評論社
- 発売日: 2014/06/26
- メディア: Kindle版
- この商品を含むブログを見る
改訂版 Zabbix統合監視実践入門 ~障害通知、傾向分析、可視化による省力運用 (Software Design plus)
- 作者: 寺島広大
- 出版社/メーカー: 技術評論社
- 発売日: 2014/06/17
- メディア: 大型本
- この商品を含むブログ (1件) を見る