Quantcast
Channel: mattintosh note
Viewing all articles
Browse latest Browse all 892

PING の結果をひたすら Zabbix に送るだけのスクリプト

$
0
0

前回は SQLiteを使ってやってみたけど、今回は Zabbix にそのまま送る方法。

PINGコマンドの出力の時間部分だけを使う。

$ ping localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.094 ms
:

Zabbix 側には予め Zabbix トラッパーでアイテムを作成しておく。今回は「ping_now」という名前。

grepしてすぐ出力したいので stdbufを噛ませる。

#!/bin/bashPING_HOST=192.168.1.1
PING_INTERVAL=5ZABBIX_SENDER_HOST=raspberrypi
ZABBIX_SENDER_KEY=ping_now
ZABBIX_SERVER_HOST=192.168.1.200
ZABBIX_SERVER_PORT=10051

ping -i${PING_INTERVAL}${PING_HOST} | stdbuf -oLgrep-E-o'time=[0-9.]+' | while readdoeval${REPLY}test-n"${time}" || continue
    nc ${ZABBIX_SERVER_HOST}${ZABBIX_SERVER_PORT}<<!{"request": "sender data",   "data:" [        {"host": "${ZABBIX_SENDER_HOST}"        ,    "key": "${ZABBIX_SENDER_KEY}"        ,  "value": "${time}"        }    ]}!done

set -xで見るとこんな感じのが続く。

+ eval time=116
++ time=116
+ test -n 116
+ nc 192.168.1.200 10051
ZBXDZ{"response":"success","info":"processed: 1; failed: 0; total: 1; seconds spent: 0.000077"}+ read

最小/平均/最大の計算は Zabbix 側でやってくれるので楽ちん。

f:id:mattintosh4:20171204001553p:plain


Viewing all articles
Browse latest Browse all 892

Trending Articles