Zabbix と Slack の通知連携:Webhook 設定からアクション自動化までの完全ガイド

概要

Zabbix の標準通知機能だけでは、リアルタイムな監視対応が難しい。
Slack の Webhook を利用すれば、障害発生や復旧通知を即座に受け取ることができる。

本記事は Zabbix 7.4 + Slack Webhook 環境での通知連携を完全に構築するための実務ガイドである。
以下の手順どおりに設定すれば、運用環境でもそのまま使用可能だ。


1. 事前チェック

1.1 アウトバウンド通信の許可

Zabbix サーバーから hooks.slack.com:443 への通信が許可されている必要がある。
ファイアウォールやプロキシ環境では、このドメインとポートを例外として許可する。

1.2 Slack チャンネルと Webhook の作成

Slack で監視専用チャンネルを新規作成する。
チャンネル設定 → 「Add App」→「Incoming Webhooks」を選択 → Webhook URL を発行。

1.3 Webhook の有効性テスト

Zabbix サーバーで以下のコマンドを実行し、Webhook が正常に動作するか確認する。

以下のコマンドの webhook url 部分を、Slack で発行された Webhook アドレスに置き換えて実行する。

curl -X POST \
  -H 'Content-type: application/json' \
  --data '{"text":"Zabbix → Slack 接続テスト"}' \
  'webhook url'

Slack チャンネルにメッセージが届けば、Webhook は正常に動作している。


2. Zabbix URL のグローバルマクロ追加

Zabbix Web UI → 管理 → マクロ → 新規マクロ追加

マクロ
{$ZABBIX.URL}https://<貴社のZabbixドメイン> 例: http://zbx.example.com/zabbix

3. Slack メディアタイプ設定

3.1 Webhook URL パラメータの追加

Zabbix Web UI → アラート → メディアタイプ → Slack を選択して有効化し、クリックする。
webhook_url パラメータを追加する。

3.2 不要なパラメータの削除

以下の項目だけを残し、他はすべて削除する。

名前
alert_message{ALERT.MESSAGE}
alert_subject{ALERT.SUBJECT}
webhook_url(Slack Webhook URL)
zabbix_url{$ZABBIX.URL}

3.3 スクリプトの置き換え

以下のスクリプトを貼り付けて保存する。

// Slack Webhook sender (minimal)
try {
  var p = JSON.parse(value);
  var payload = {
    "text": "*" + (p.alert_subject || "Zabbix") + "*\n" + (p.alert_message || "")
  };
  var req = new HttpRequest();
  req.addHeader('Content-Type', 'application/json');
  var resp = req.post(p.webhook_url, JSON.stringify(payload));
  if (req.getStatus() != 200) {
    throw 'Slack webhook response: ' + req.getStatus() + ' ' + resp;
  }
  return 'Message sent successfully to Slack.';
} catch (e) {
  throw 'Failed to send Slack message: ' + e;
}

4. ユーザーへの Slack メディア割り当て

Zabbix Web UI → ユーザー → Admin → 連絡方法

「連絡方法の追加」をクリックし、以下のように設定する。

項目
種類Slack
宛先ダミー値(例:slack)
デフォルト有効
深刻度「警告以上」を推奨

設定後、「追加」→「更新」。


5. アクション(Action) の作成

5.1 トリガーアクションの編集

パス: アラート → アクション → トリガーアクション → Report problems to Zabbix administrators

5.2 条件の追加

種類オペレーター
トリガーの深刻度以上警告

有効化をチェックし、追加。

5.3 オペレーション設定

オペレーションステップ1 → 編集

項目
ユーザーグループZabbix administrators
送信先メディアタイプSlack
カスタムメッセージ有効

件名・メッセージ内容(障害通知)

障害通知

- 障害発生 : {EVENT.NAME}

--------------------------------------
発生時刻 : {EVENT.DATE} {EVENT.TIME}
深刻度 : {EVENT.SEVERITY}
ホスト : {HOST.NAME1}
アイテム : {ITEM.NAME1}
現在値 : {ITEM.LASTVALUE1}

イベントID : {EVENT.ID}
リンク : {$ZABBIX.URL}/tr_events.php?eventid={EVENT.ID}

5.4 復旧通知の追加

項目
ユーザーグループZabbix administrators
送信先メディアタイプSlack
カスタムメッセージ有効

件名・メッセージ内容(復旧通知)

復旧通知

- 解決 : {EVENT.NAME}

--------------------------------------
解決時刻 : {EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
深刻度 : {EVENT.SEVERITY}
ホスト : {HOST.NAME1}

イベントID : {EVENT.ID}
リンク : {$ZABBIX.URL}/tr_events.php?eventid={EVENT.ID}

6. 設定の保存と動作確認

すべてのアクション設定を完了したら「更新」をクリック。
テストトリガーを発生させ、Slack チャンネルに通知が届くことを確認する。


✅ 最終チェックリスト

項目確認
サーバーのアウトバウンド通信許可 (hooks.slack.com:443)
Slack Webhook テスト成功
{$ZABBIX.URL} マクロ追加
Slack メディアタイプ有効化 & スクリプト置換
ユーザーへの Slack メディア登録
アクション(障害/復旧)動作確認

結論

この手順を完了すれば、Zabbix のイベント発生時に Slack チャンネルへ自動通知が送信される。
外部モジュールを追加する必要はなく、Webhook と Zabbix 標準機能だけで安全かつ確実に運用可能 だ。

🛠 마지막 수정일: 2025.11.11

💡 お困りですか?
Zabbix、Kubernetes、各種オープンソースインフラの構築・運用・最適化・障害解析が必要であれば、いつでもご連絡ください。

📧 メール: jikimy75@gmail.com
💼 サービス: 導入支援 | 性能チューニング | 障害解析コンサルティング