監視結果をslackで通知する
投稿日: / 更新日:
この記事は2年以上前に書かれたものです。情報が古い可能性があります。
最近、企業でslackを使うところが増えてきているみたいですね。
そこで!今回は、Hinemosで監視した結果をslackに出力したいと思います。
①slackに監視通知用のチャンネルを作成する
以下のように、Hinemosの通知を行うチャンネルを作成します。
※slackを登録されていない方は、登録後作成してください。
②作成したチャンネルのWebhookを取得する
○着信 Web フック
外部からHTTPリクエストでメッセージを送ることができる機能です。
HTTP通信ができる環境であれば、どこからでもメッセージをslackへ送信することができます。
では作成していきましょう。
まず、slackのメニューから「slackをカスタマイズ」を選択します。
アカウントのメニューから「App管理」を選択します。
管理画面のメニューから「カスタムインテグレーション」を選択後、「着信Webフック」を選択します。
「設定を追加」を押します。
「チャンネルへの投稿」に作成したチャンネルを指定し、「着信Webフックインテグレーションの追加」を押すと
Webhook URLが発行されます。
発行されたページでは、メッセージを送付したときに表示されるアイコンや、bot名などを設定できます。
発行されたwebhookは、記録しておいてください。
③Managerサーバに通知スクリプトを作成し配置する
今回は、気象情報の監視結果をslackで通知してみようかと思います。
※気象情報の監視方法については、こちらを参照してください。
Hinemosサーバに以下のスクリプトを任意の場所に配置します。
○slack_post_message.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
#!/bin/bash # 引数 # $1: #[GENERATION_DATE] (出力日時) # $2: #[PRIORITY_NUM] (監視結果) # $3: #[MESSAGE](気温) # 送信先のチャンネルとbot名を設定 channel='#hsd_hinemos_mon' username='hinemos' # webhookのURL設定 token="https:// hooks.slack.com/services/hogehoge/fugafuga/hogehoge" # botのアイコンを設定 emoji=':monita2:' # 重要度によってattachmentの色を変更 color='#FFFFFF' if [ $2 -eq '0' ]; then color="#FF0000" priority="危険" elif [ $2 -eq '1' ]; then color="#4169E1" priority="不明" elif [ $2 -eq '2' ]; then color="#FFFF00" priority="警告" elif [ $2 -eq '3' ]; then color="#00FF00" priority="情報" fi # 表示するメッセージをJSON形式にフォーマットする temp=$3 text="出力日時: $1 \n東京の最高気温: ${temp:19}" attachment=" { \"title\":\"${priority}\", \"fallback\":\"fallback ${priority}\", \"text\":\"${text}\", \"color\":\"${color}\" }" payload="payload={\"channel\": \"${channel}\", \"username\": \"${username}\", \"icon_emoji\": \"${emoji}\", \"attachments\":[${attachment}]}" # POSTリクエストとしてWebhookURLに送信 /usr/bin/curl -m 5 --data-urlencode "${payload}" "${token}" |
各監視結果の取得には、メールテンプレートの置換文字列を利用します。
今回は、以下の3つを利用しました。
- #[GENERATION_DATE] (出力日時)
- #[PRIORITY_NUM] (監視結果)
- #[MESSAGE](出力メッセージ)
上記以外の置換文字列については、以下のマニュアルを参照してください。
ja_User_6.1_rev2.pdf
6.4.2 メールテンプレートの登録
表 6-19 文字列置換対応一覧
「#[MESSAGE]」は、以下のように出力されている値を取得しています。
これを温度だけにするために、以下で気温だけにフォーマットしています。
1 |
text="出力日時: $1 \n東京の最高気温: ${temp:19}" |
④Hinemosに監視設定を行う
以下のようにコマンド通知を設定します。
コマンドには以下の内容を入力します。
1 |
sh /tmp/slack_post_message.sh "#[GENERATION_DATE]" #[PRIORITY_NUM] "#[MESSAGE]" |
以下の設定でカスタム監視を利用して気温を監視します。
通知設定には、上記で作成したコマンド通知を設定します。
⑤実行!!!!
以下のように表示されます。
⑥おわりに
slackで通知できれば、出力された監視結果ごとにスレッド内で議論ができますし、
監視結果にコメントが簡単に残せます。
今回は使いませんでしたが、ボタン付きメッセージも通知することができます。
このボタンを利用して、監視結果確認チェックや、コマンドラインツールを利用した承認ジョブの実行等、いろんな応用ができるかと思います。
機会があれば今度はボタン付きメッセージを利用した運用を紹介したいと思います。
みなさんもよかったら、slackを使って通知をしてみてくださいね!
それでは、アディオス!!!