Zabbixのカスタムローレベルディスカバリを書いてみた

社内では少ないZabbix派のshinonomeです。お久しぶりでございます。

Zabbix派なんですが、実は今までローレベルディスカバリ(以下LLD)を自分で書いたことがなかったので、書いてみることにしました。

LLDとは
Zabbix 2.0から追加された機能で、マシンの構成により変更されることが多いものに対してアイテムやグラフ、トリガーを自動的に構成してくれる機能です。
デフォルトでFilesystemやNIC、SNMPに対して有効化できます。v2.4からはCPUにも対応しました。

そして、今回書いた対象が

LVS – Linux Virtual Server

です。

ツチノコでは一部サーバにLVSを利用してロードバランシングを行っているところがあります。
そのサーバの状況を監視するべく、LLDでやってみようという魂胆です。
LLDにしたのは、LVS配下にあるサーバが頻繁に変更されるためです。

カスタムLLDは、zabbix_agentdに対してUserParameterを設定することで作成します。
たいていはわかりやすいように XXXXXXXX.discovery というキー名を利用するようです。

Zabbixの値取得の基本は、Zabbix ServerがZabbix Agentに対しキー名を叩いた時に、Zabbix AgentはUserParameterのスクリプトを実行、
スクリプトが返した値を、そのキーの値としてZabbix Serverへ返す様になっています。
カスタムLLDを作成するときは、その返り値をテンプレートに渡すJSONとすることで実現できます。
https://www.zabbix.com/documentation/2.2/jp/manual/discovery/low_level_discovery#カスタムlldルールの作成

今回はipvsadm.discoveryをキーとし、VIP、TCP/UDP、Real IPのマクロ化を行いました。
そして、https://www.zabbix.com/forum/showthread.php?t=12086 こちらのPythonスクリプトを叩ける形のテンプレートを用意しました。

LVSをバックエンドとして使っているLdirectordやKeepalivedでも使えますので、ぜひご利用ください。
また、プルリク等もお待ちしております!

コードはこちら:https://github.com/shinonome/zabbix_ipvsadm


PAGE TOP