Zabbixのグラフをスマホに送信[LINE編]

最近ほんとに暑い・・ペットも暑いだろうなぁ


障害時に障害が起きたアイテムのグラフをメールで送信する記事はあったのですが、トリガーなしでグラフを定期的にスマホに送信したかったのでちょっとアレンジしました。
LINEだと他人にも共有しやすいのが良いです。


参考サイト
Zabbixのアラートメールにグラフ画像を添付する




























手順

前提パッケージインストール

ZabbixAPIを使用してアクセストークンを取得する際にjqでJSONを加工します。
$ sudo apt install jq


ユーザ認証用API実行

以下のコマンドを実行してZabbixのuser.login APIを実行し、アクセストークンを取得。
$ /usr/bin/curl -s -XPOST http://<ZabbixのIPアドレス>/zabbix/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '{"jsonrpc": "2.0", "method": "user.login", "params": { "user": "Admin", "password": "Adminのパスワード"}, "id": 1}' | sed -e 's/[,{}]/\n/g' -e 's/"//g' | awk -F: '/^result/{print $2}'

d99bb315eb52f632fb2edcbeb75be269

32文字のアクセストークンが返却されます。このアクセストークンは次以降の手順で使用します。

グラフIDの取得

送信したいグラフのIDをgraph.get APIで取得します。
$ curl -s -XPOST http://<ZabbixのIPアドレス>/zabbix/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '{"jsonrpc":"2.0", "method":"graph.get", "id":1, "auth":"<取得したアクセストークン>", "params": {}}' | jq -r '.result[] | [.graphid, .name] | @csv'
(中略)
"730","CPU utilization"
"731","Memory utilization"
"736","CPU utilization"
"737","Memory utilization"
"775","CPU utilization"
"788","Zabbix preprocessing queue"
"789","Zabbix preprocessing queue"
"790","気温・湿度(ペット部屋)"
全てのグラフIDとグラフ名が表示されるので、送信するグラフのグラフIDをここで特定します。
今回はペット部屋の気温・湿度を送信するのでグラフIDは790となります。



グラフ取得

グラフIDを指定してグラフを画像で取得します。
periodに取得したい範囲の時間を秒で指定します。今回は12時間分を出したいので43200にしてます。
$ curl -s -XGET -b zbx_sessionid=<取得したアクセストークン> "http://<ZabbixのIPアドレス>/zabbix/chart2.php?graphid=790&period=43200" >/var/tmp/hoge.png

/var/tmpにpngファイルとしてグラフがダウンロードされていると思います。

LINEでグラフを送信

LINE Notifyでトークン取得

下記のサイトに自分のLINE IDでログインします。
LINE Notify
















画面右上の自分の名前のメニューからマイページを開き、トークンを発行するをクリック。











適当にトークン名を入力、送信するトークルームは「1:1でLINE Notifyから通知を受け取る」にするか適宜トークルームを選択し発行するをクリック。


























トークンが発行されるのでコピーする。
再表示できなくなるので、忘れないようにメモするなどしてください。






















LINE Notifyで画像を送信

先ほど指定したトークルームへ画像を送信。
$ /usr/bin/curl -s -XPOST https://notify-api.line.me/api/notify -H 'Authorization: Bearer <LINE Notifyで発行したトークン>' -F 'message=グラフ送信テスト' -F 'imageFile=@/var/tmp/hoge.png'





















こんな感じで画像がトークルームに送信されます。

あとは一連の流れをスクリプトで定期的に実行すれば目的達成となります。
既にシェルスクリプトで実装したんですが、Slackへの通知機能も追加してから載せようと思います。

0 件のコメント :