方式
gearadmin --statusで取得した3つの値をzabbix_senderで登録します。
元々zabbix agentからユーザスクリプトで実行する方式にしていましたが、3つパラメータを取得するのに3回コマンドが実行され、タイミングがずれて3つの値の関係性が崩れてしまうのでボツになりました。
設定ファイル
/usr/local/sbin/send_gearman_stat_to_zabbix.sh
#!/bin/sh
zabbix_server=xxx.xxx.xxx.xxx
my_zabbix_hostname=${Your_Hostname_Registered_In_Zabbix}
queue_name=${Your_Queue_Name_Here}
interval_seconds=5
while :
do
gearadmin --status | awk '
$1=="'$queue_name'"{
print "'$my_zabbix_hostname'", "gearman.total_job_count['$queue_name']", $2
print "'$my_zabbix_hostname'", "gearman.running_job_count['$queue_name']", $3
print "'$my_zabbix_hostname'", "gearman.worker_process_count['$queue_name']", $4
}' | zabbix_sender -z $zabbix_server -s $my_zabbix_hostname -i -
sleep $interval_seconds
done
upstartで実行するようにしました。
/etc/init/send_gearman_stat_to_zabbix.conf
start on runlevel [12345]
stop on runlevel [^12345]
respawn
exec /usr/local/sbin/send_gearman_stat_to_zabbix.sh
参考
zabbixのsnmptrap受信設定とzabbix_senderの利用: アメコロガシ
2.0:manpages:zabbix_sender [Zabbix]