Published on

ZabbixのアラートをIFTTTで通知する

Authors
  • avatar
    Name
    丸山 竜輝
    Twitter
    @5yuim

概要

ちまたではPushbulletを使う方法やSlackを使う方法等が紹介されているがそもそもIFTTTアプリをスマホに入れており。履歴を記録する必要もなかったためIFTTTのプッシュ通知機能でアラートを受け取れるよう設定した。

前提条件

  • Zabbixのバージョンは4
  • iOSもしくはandroid端末にIFTTTアプリを導入しプッシュ通知を許可済み

設定手順

メディアの作成

  1. 管理->メディアタイプを開く
  2. メディアタイプの作成を開く
  3. 下記の通り設定(SUBJECTは二個要らないですミスで入れてしまいました。)
image.png
  1. (画像では登録済みのため更新と出ているが)追加をクリック

メディアの紐づけ

  1. 右上のユーザーアイコンをクリック
  2. メディア->追加をクリック
  3. タイプでpushを選択
  4. 送信先は今回使わないのでダミーで何か入れておいてください
  5. 追加をクリック
  6. 更新をクリック(ここを忘れて別ページ移ると設定が消えます)

IFTTTレシピの作成

  1. レシピの作成を開く
  2. thisにwebhooksを設定(途中でEvent Nameを聞かれますが後で使うので覚えておいてください)
  3. thatにNotificationSend a rich notification from the IFTTT appを設定
  4. 下記の通り設定
image.png

プッシュ通知のテストとURLの取得

  1. webhooksを開く
  2. 右上のDocumentaitionを開く
  3. イベントの箇所に先ほど作成したwebhookのイベント名value1に適当な文言value2に適当なURLを入れる
  4. Test Itをクリック
  5. IFTTTアプリが入ってる端末にプッシュ通知が届きプッシュ通知を開いた際にvalue2に入れたURLが開かれることを確認
  6. この時のテスト画面にあったURLをコピーしておいてください

scriptの設定

Monitoring Artistのdockbixのalertスクリプトのパスはこの公式資料のZS_AlertScriptsPathにあるとおり/usr/local/share/zabbix/alertscriptsにあるzabbixの環境によってこのパスはことなると思うが、基本的にzabbixで設定されているalertscriptsディレクトリにスクリプトファイルを設置しないと呼び出されません。(永続化は別途設定必要)

  1. alertscriptsディレクトリにpush.shを作成下記の通り記述

※何故STDINを使って改行しているかというと$1の中身が改行されていたため最初通知の発砲に失敗しており個の箇所を現在の様に修正したら治りました。よりよい解決放があればご教示願います。

#!/bin/sh
curl -X POST {先ほどのURL} -H "Content-Type: application/json"
-d @- << EOF
{
  "value1":"${1}",
  "value2":"${2}"
}
EOF

2.最後におまじないをして終わりchmod +x push.sh(大体意味は分かると思うので説明は割愛)

プッシュ通知用にアクションをカスタマイズ(テスト中動かないかも)

IFTTTでURL用のパラメーターを設定したがそれをアクションの件名を使って引用しているので件名の欄をイベントURLに書き換えれば通知を開いた際アラートのイベント画面が開く(はず)

  1. 設定->アクションを開く
  2. デフォルトのアクションを開き複製をクリック
  3. 実行内容,復旧時の実行内容,更新時の実行内容デフォルト件名を下記の様な形式に書き換え
    http://{zabbixホスト}/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.ID}
  4. 実行内容,復旧時の実行内容,更新時の実行内容実行内容のステップ1の変更をクリック
  5. 次のメディアのみ使用の箇所をpushを選択
  6. 作成をクリック