ZabbixServer, Proxyのバージョンを監視する

Zabbixとは

Zabbix はアレクセイ・ウラジシェフ(Alexei Vladishev)によって作られた、ネットワーク管理ソフトウェアである。様々なネットワークサービス、サーバ 、その他のネットワークハードウェアのステータスを監視・追跡できる

Zabbix – Wikipedia

オープンソースの監視プロダクトとして国内国外問わず、シェアNo.1だと思います。

構成としてはサーバ、プロキシ、エージェント、フロントエンドの4つに分かれてます。
プロキシは必ず必要というわけではなく、最低限サーバ、エージェント、フロントエンドの3つがあれば監視を行うことができます。

  • サーバ: 中央としてエージェント、プロキシを管理する
  • プロキシ: (必要に応じて)サーバとエージェント間で文字通りプロキシする
  • エージェント: 監視対象のサーバにインストールしてサーバ(プロキシ)とデータ交換をする
  • フロントエンド: サーバの設定などGUIでわかりやすく操作することができる

Zabbixサーバとプロキシのバージョンの重要性

サーバとプロキシのバージョンはマイナーバージョンはずれていてもいいんですがメジャーバージョンが揃っている必要があります。

Zabbix 4.0.x server can only work with Zabbix 4.0.x proxies. Zabbix 4.0.x proxies can only work with Zabbix 4.0.x server.
(訳: Zabbix 4.0.xサーバは、Zabbix 4.0.xプロキシでのみ機能します。Zabix 4.0.xプロキシは、Zabbix 4.0.xサーバでのみ機能します。)

Supported Zabbix proxies

監視する方法

監視するというか、バージョンを確認できるようにする、という意味でZabbixにアイテムを追加します。
エージェントだったらデフォルトで監視アイテムがある(agent.version)のですが、サーバ、プロキシには該当するアイテムがありません。
なので、スクリプトを作って、ユーザーパラメータでアイテムキーを追加します。
通常、サーバとプロキシが両方が同時に使われることはないので、同じアイテムキーで設定できるようにしてみました。

スクリプトを作成

Zabbixエージェントの設定ディレクトリ (/etc/zabbix/zabbix_agentd.d) にbashスクリプトを作成します。

※Zabbixエージェントのインストール方法によってはこの設定ディレクトリは異なりますのでそれぞれの環境で確認してください。

作成したスクリプトは実行できるように権限を設定しておきます。
chmod +x check_zabbix_server_proxy_version.sh

スクリプトの説明

  • 3~5行: Zabbixプロキシの実行ファイルがある場合はそのバージョンを取得する。
    zabbix_proxy -V のコマンドでZabbixプロキシのバージョン情報が取得できるので、その1行目(head -1)を空白で分割したうちの3つ目を取得(awk -F ' ' '{print $3}')。
  • 7~9行: Zabbixサーバの実行ファイルがある場合はそのバージョンを取得する。
    コマンドが zabbix_server になるだけで、同じようにheadとawkを使ってバージョンだけ取得。
  • 11行: 取得したバージョンを標準出力に出力する。

※ちなみに awk コマンドの -F ' ' は省略してもOKです。指定しないときは空白(半角スペース)が指定されたことになります。

UserParameterの設定

Zabbixでキーを追加したときにこのスクリプトが実行されるようにユーザーパラメータの設定をします。
※ここでは zabbix.version というキーでアイテムを追加することを想定しています。

Zabbixエージェントの再起動

追加したユーザーパラメータを読み込むためにZabbixエージェントのサービスを再起動します。
$ service zabbix-agent restart
※必要に応じて sudo をつけるとかしてください。

Zabbixサーバでアイテムの追加

ZabbixのWebフロントエンドからアイテムを追加しますが、今回はテンプレート(Template App Zabbix Server)に追加します。

  • 名前: Version of zabbix_server running
  • タイプ: Zabbixエージェント
  • キー: zabbix.version
  • データ型: 文字列
  • 更新間隔(秒): 300
  • アプリケーション: Zabbix server

 Zabbix_server_アイテムの設定

しばらく(更新間隔によります)すると監視項目が反映され最新データで表示されるようになります。
Zabbix_server_最新データ
※表示されるのを確認できたらアイテムの設定で「更新間隔(秒)」を 86400(1日) などに変更するとよいです。バージョンなんてそう頻繁に変わるものではないですしね。

トリガーの追加

もしバージョンが変わったことを検知したい場合はトリガーを設定したらいいと思います。

  • 名前: Version of zabbix_server was changed on {HOST.NAME}
  • 深刻度: 情報
  • 条件式: {Template App Zabbix Server:zabbix.version.diff(0)}>1

Zabbix_server_トリガーの設定