TL;DR
Zabbixの障害通知を、Google Hangouts Chatのチャットルームで受け取れます
Zabbix側、Hangouts側両方での設定が必要です
前提
・Ubuntu 16.04 LTS
・Zabbix 4.0
●Hangouts Chat の設定
- 通知を受け取りたいチャットルームを開きます
- チャットルームメニュー(画面上部のメンバー数を出している所の▼)より、「Webhookを設定」を選びます
- 「別のWebhookを追加」をクリックし、適当な名前を入力して、「保存」をクリックします
- 作成されたWebhookのURLを、URLコピー用ボタンで取得します
●Zabbixアラート用のスクリプト作成
Zabbixアラート用のスクリプトの配置場所を以下で特定します
$ sudo grep AlertScriptsPath /etc/zabbix/zabbix_server.conf
※Zabbixのインストール手順によって異なります
特定できたAlertScriptsPathに、Webhook用のスクリプトを配置します
以下のようなスクリプトを用意します。
$1、$2には、Zabbixのアラート内容が入ります。
# !/bin/bash
export PATH="/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin"
export LANG=C
access_token=XXXXXXXXXXXXXXXXXXXXXXXXXX # 「Hangouts Chatの設定」で取得したアクセストークン
proxy=XXXXXXXXXXXXXXXXXX # (Optional) プロキシが必要な場合
subject=$1
body=$2
# Webhook
curl -X POST ${access_token} -x ${proxy} \
--header "Content-Type: application/json; charset=UTF-8" \
--data "{'text': '
件名:
$subject
メッセージ:
$body
'}"
exit 0
スクリプトが実行ユーザ:Zabbixによって実行可能となるように権限変更しましょう。
$ sudo chown zabbix <スクリプトのパス>
$ sudo chmod 700 <スクリプトのパス>
●Zabbix設定(アクション作成)
ZabbixのWebUIより、設定→アクションを開き、「アクションの作成」を行います。
名前に任意の名前をつけ、実行条件でアラート通知の条件を指定します。
実行内容で、障害発生時のアラート内容を定義します。
復旧時の実行内容で、障害解決時のアラート内容を定義します。
更新時の実行内容で、障害更新時(未検証)のアラート内容を定義します。
定義例
件名:*障害発生: {EVENT.NAME}*
メッセージ:障害発生日時: {EVENT.DATE} {EVENT.TIME}
障害名: {EVENT.NAME}
ホスト名: {HOST.NAME}
深刻度: {EVENT.SEVERITY}
イベントID: {EVENT.ID}
{TRIGGER.URL}
●Zabbix設定(メディアタイプ作成)
ZabbixのWebUIより、管理→メディアタイプを開き、「メディアタイプの作成」を行います。
名前に任意の名前をつけ、スクリプト名に作成したスクリプトのファイル名を指定します。
スクリプトパラメータとして、{ALERT.SUBJECT}と{ALERT.MESSAGE}を追加します。
このパラメータには、先程定義したアクションの内容がそれぞれ代入されます。
スクリプトに渡される引数にもなります。
●動作確認
スクリプトのテスト等の機能はZabbixでは提供されていないため、
監視対象の負荷をかけるなどで障害を発生させる必要があります。