Zabbixでpingレスポンス値を監視する

最近、ネット接続速度が異常に遅いときがあります。何か傾向を掴むことができないのか?と考えた結果、pingのレスポンスをZabbixで監視し可視化してみることにしました。

pingレスポンスを取り出す

インターネットの接続速度とpingのレスポンス値に直接の関係はありません。
しかし経験上ではレスポンスが60msを超えるとダウンロード速度が10Mbpsを切り、100msを超えると1Mbps以下になっているように感じています。そこで任意のIPアドレスに対するpingレスポンスの平均値を取得することにします。

まずはLinuxでpingを打つとこんな感じ。Windowsと違いLinuxは標準で連続pingなので「-c」オプションで何回pingを打つのか指定します。

# ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=59 time=0.832 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=59 time=0.867 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=59 time=0.882 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=59 time=0.881 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 0.832/0.865/0.882/0.035 ms

欲しい数値は「rtt」で始まる行の「0.832/0.865/0.882/0.035」の部分。半角スペース” “で区切った4列目をgrepとcutで取り出します。

# ping -c 4 8.8.8.8 |grep rtt |cut -d' ' -f4
0.832/0.865/0.882/0.035

この中で平均=avgはスラッシュ”/”で区切った2列目なのでもう一度cutで取り出します。この「0.865」が欲しい値pingレスポンス値です。

ping -c 4 8.8.8.8 |grep rtt |cut -d' ' -f4|cut -d'/' -f2
0.865
Zabbixエージェントにユーザーパラメータを登録する

基本コマンドが分かれば、UserParameterに落とし込むのみ。
キーをping.responseとし、ping回数とIPアドレスは固定化せず自由に設定できるように第1変数でIPアドレスを、第2変数でping回数を指定します。

# vi /etc/zabbix/zabbix_agentd.conf+ UserParameter=ping.response[*],ping -c "$2" "$1" |grep rtt |cut -d' ' -f4|cut -d'/' -f2
# service zabbix-agent restart

zabbixエージェントの再起動後、Zabbixサーバ側からzabbix_getでping.responseを要求します。IPアドレスは分かりやすいGoogleDNSを、pingは2回を指定します。

# zabbix_get -s 192.0.2.86 -k ping.response[8.8.8.8,2]
9.081

この時は9.081msが返ってきました。ping回数は2だとブレが大きいかも。4くらいがちょうど良いかもしれません。

Zabbixに設定しグラフ化する

最後にZabbixのGUIからアイテム設定をして完了です。アイテム名に「$1」を使えば指定したIPアドレスが表示されるので便利ですよ。
zabbix-ping-response

グラフ化するとこんな感じ。中々良いデータが取れました。
zabbix-ping-response_graph

グラフから見えてきた傾向の分析については次回に持ち越します。

※2016/11/22追記

※グラフの分析はこちら

pingレスポンス値を読み解く
「Zabbixでpingレスポンス値を監視する」の続きです。
スポンサーリンク