1. 概要
Zabbixのコマンドラインユーティリティには「zabbix_sender」というコマンドがあります。
パッケージ「zabbix-sender」をインストールすることで利用可能です。(zabbixリポジトリからyum installで可。)
このコマンドでは「監視対象」から「監視サーバ」へ指定した値を送信することができます。
監視サーバ側では監視対象機器(ホスト設定)にアイテムのタイプが「Zabbixトラッパー」のアイテムを登録しておきます。
利用例としては、
・スクリプトの行内にzabbix_senderコマンドを入れて、スクリプトの実行結果の成否をトラップ的に送信する、
・zabbix_senderコマンドで送る値の引数にコマンドの実行結果を入れて送信する
など、様々な用途で利用可能です。
メリット:
・実行後すぐに値を送信するため、異常等の検知が早い。トラッパーは待ち受けるのみなのでポーリングする負荷が掛らない。
・トラッパーのキーを分けることで、値を振り分けられる。
デメリット:
・スペースを含む文字列や改行は送信できない。暗号化しないのでデータが丸見え。
2. 設定/コマンド例
Zabbixトラッパーの設定例
値に文字列を入れる場合はZabbixサーバのトラッパーアイテムの設定で値の形式が「文字列」になっている必要があります(下図参照)。
キーは、監視対象機器がデータを送信する先となります。
アプリケーションはデータ分析等の利便性を考えて任意の設定を行ってください。
送信側のコマンドの形式
基本
# /usr/bin/zabbix_sender -vv -z <zabbixサーバのIP/ホスト名> -s <登録されているホスト名> -k <トラッパーのキー> -o <送信する値>
色々なコマンドオプションがありますが、だいたいこれで十分でしょう。
コマンドオプション概要
Options:
-z --zabbix-server <server> Hostname or IP address of Zabbix Server
-v --verbose Verbose mode, -vv for more details
-s --host <hostname> Specify host name. Host IP address and DNS name will not work
-k --key <key> Specify item key
-o --value <key value> Specify value
「-vv」は詳細なコマンド結果を標準出力します。
Zabbixサーバ側でトラッパーの待ち受けポートをデフォルトから変更している場合は「-p」オプションに続けてポート番号を指定します。
例えばローカルのZabbixサーバから、自身のトラッパー(キー名:test.trapper)に「test」という文字列を送る場合は、以下のようなコマンドになります。
例
# /usr/bin/zabbix_sender -vv -z localhost -s "Zabbix server" -k "test.trapper" -o "test"
シェルスクリプトに仕込んで失敗時にfailedの文字列を送る場合
bash例
~略~
# 直前のコマンドの終了ステータスを取得
if [ $? -ne 0 ]; then
# 成功以外の場合はZabbixへfailedの文字列を送信
/usr/bin/zabbix_sender -vv -z localhost -s "Zabbix server" -k "test.trapper" -o "failed"
fi
exit
Zabbixサーバがfailed文字列を受信するだけでは、障害と判定されません。
failed文字列を検出したら障害とするトリガーを設定する必要があります。
下図のような設定(条件式)が参考になるかと思います。
# 下記の条件式では、発生した障害を自動的に「回復」と判断する条件がありません。
# 自動で障害を回復させる場合は、nodata()などの時間ベースの関数を使用し、一定時間の更新がなければ回復と判断する記述が必要となります。
トリガーの試験のために上述のzabbix_senderコマンドを監視対象機で手動実行し、テストを行います。
# /usr/bin/zabbix_sender -vv -z localhost -s "Zabbix server" -k "test.trapper" -o "failed"
トリガーがOnとなり、障害が発生していることが確認できます。
その他さまざまな利用が可能です。