はじめに
今回は、Xymonからのアラート通知をSlackにメッセージとして送信するやり方を紹介します!「やり方」の紹介なのでXymonの通知に関する詳細な設定は別途ご確認ください。
完成イメージは↓こんな感じです!
全体の流れはこんな感じです
- アラート発生
- Xymonで設定したスクリプトの実行
- アラート通知をメッセージとしてSlackに送信
実装
以下の手順で進めていきます。
- Slackでアラート通知が欲しいチャンネルにIncoming Webhookを追加
- Incoming Webhookの設定からWebhook URLを取得
- スクリプト作成
- Xymonの設定
【手順1・2】Incoming Webhookの追加 & WebhookURLの取得
※チャンネル名を「sample」として進めていくので自分のチャンネルに読み替えてください。
・「#sample」をクリックします。
・「インテグレーション」>「App」>「アプリを追加する」
・検索バーに「Incoming Webhook」と入力し、「表示する」をクリックします。
・「設定」をクリックします。
・ブラウザが開かれるかと思いますので、「Slackに追加」を押し、通知を送信したいチャンネルを選択します。
・「Webhook URL」をメモしておきます。
送信テスト
意図したチャンネルにメッセージを送れるか、curl コマンド使いテストします。
curl -X POST -H 'Content-type: application/json' --data "{'text':'Hello'}" 取得したURL
上記コマンドを実行し、選択したチャンネルに「Hello」とメッセージが送信されていれば完了です。
※invalid_payloadと表示されメッセージが来ない場合は、コマンドが間違っているかもです。
【手順3】スクリプトの作成
アラートが発生した場合に実行するスクリプトを作成します。
#!/bin/sh
SLACK_WEB_HOOK_URL='自分のURL'
SLCAK_DATA='{"text":"Xymon '${BBALPHAMSG}'\n --------------------------------\n"}'
curl -X POST -H 'Content-type: application/json' --data "${SLCAK_DATA}" ${SLACK_WEB_HOOK_URL}
${BBALPHAMSG} : これはXymonからの通知内容です。
宣言はしていませんが、Xymonのアラートで実行された場合、値が入ります。
【手順4】Xymonの設定
私のテスト環境では以下の場所にアラート時の設定ファイルがありました。
/home/xymon/server/etc/alerts.cfg
このファイルの1番下に設定を追記します。
HOST=ホスト名
SCRIPT /home/xymon/script/test.sh REPEAT=10
HOSTをホスト名のみにしておくことで全ての監視対象でアラートが出た場合に通知します。
SCRIPTにはスクリプトの場所とルールを設定します。
今回指定している「REPEAT=10」はアラートが出続けていた場合、10分毎に通知するルールとなります。
動作テスト
私は今回httpでアラートを出し、Slackにメッセージが来るか確認します。
なので、サンプルページの「index.html」の権限を変更し「403」が表示されるようにしました。
Xymonでアラートを検知したタイミングでメッセージの送信を確認できました。
おわりに
今回Xymonからの通知をWebhookを使ってSlackに送信するやり方を解説しました。
なので、例えば作成したスクリプトのURLをTeamsのWebhookのURLにするとTeamsにも同様にメッセージを送信することができます。
ここまで読んでいただきありがとうございます。