XymonのアラートをSlackで受け取る方法

永井
2023-06-29
2023-06-29

はじめに

今回は、Xymonからのアラート通知をSlackにメッセージとして送信するやり方を紹介します!「やり方」の紹介なのでXymonの通知に関する詳細な設定は別途ご確認ください。

完成イメージは↓こんな感じです!
2

全体の流れはこんな感じです

  1. アラート発生
  2. Xymonで設定したスクリプトの実行
  3. アラート通知をメッセージとしてSlackに送信

 

実装

以下の手順で進めていきます。

  1. Slackでアラート通知が欲しいチャンネルにIncoming Webhookを追加
  2. Incoming Webhookの設定からWebhook URLを取得
  3. スクリプト作成
  4. Xymonの設定

【手順1・2】Incoming Webhookの追加 & WebhookURLの取得

※チャンネル名を「sample」として進めていくので自分のチャンネルに読み替えてください。

・「#sample」をクリックします。
1

・「インテグレーション」>「App」>「アプリを追加する」
3

・検索バーに「Incoming Webhook」と入力し、「表示する」をクリックします。
4

・「設定」をクリックします。
5
・ブラウザが開かれるかと思いますので、「Slackに追加」を押し、通知を送信したいチャンネルを選択します。
6

・「Webhook URL」をメモしておきます。
7

送信テスト

意図したチャンネルにメッセージを送れるか、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でアラートを検知したタイミングでメッセージの送信を確認できました。

2

おわりに

今回Xymonからの通知をWebhookを使ってSlackに送信するやり方を解説しました。

なので、例えば作成したスクリプトのURLをTeamsのWebhookのURLにするとTeamsにも同様にメッセージを送信することができます。

ここまで読んでいただきありがとうございます。