| 作成日 | 2019/12/24 |
|---|---|
| 更新日 | - |
概要
Hinemosの監視結果やジョブの実行情報をMicrosoft Teamsに連携し、チャットのメッセージとして通知を出力してみます。
メリット
Hinemosの監視結果・ジョブの実行情報などをMicrosoft Teamsの画面から確認できるようになり、Hinemosの管理対象となるシステムの状態をより素早く把握できます。監視結果を見ながらチャネル内で議論ができ、システムの障害への対応方針の検討などにも役立ちます。
また、監視結果がTeamsにチャットのメッセージとして連携されるため、Teams上のカスタムBotを利用してAzureの機械学習サービスに連携する、などといった連携の可能性が広がります。
前提条件
Microsoft Teamsを利用しておりアカウントを持っていること
Hinemosマネージャの動作するサーバからインターネットに接続できる環境であること
実現方法/解決策
Teamsには、外部サービス上のコンテンツをチャネルへ連携できる仕組みとして、多数の「コネクタ」というものが用意されています。今回はコネクタの1つである「Incoming Webhook」を利用します。Incoming Webhookを利用することにより、HTTPリクエストでチャネルにメッセージが投稿できるようになります。
1.チームに通知用のチャネルを準備する
Hinemosからの通知を受けるチャネルを準備します。
図の例では「××グループ」チームに「Hinemos通知」という名前のチャネルを作成しています。 以下、Hinemosの通知を送る先となるチャネルは「Hinemos通知」チャネルと記載することにします。チャネル名は適宜読み替えてください。 チャネルの説明やプライバシーについては各々のチームに合わせた任意の設定で構いません。

2.通知先チャネルのWebhookを取得する
「Hinemos通知」チャネルのメニューから「コネクタ」を選択します。

開いたポップアップメニューでIncoming Webhookを探し、「構成」を選択します。

右側の「構成」ボタンを選択すると、Incoming Webhookの情報を入力するウィンドウが開きます。
コネクタの名前(ここではHinemos-notify)を入力して「完了」ボタンを押すことでコネクタが作成されます。

コネクタが作成されるとウィンドウの下部にURLが表示されます。
このURLはHTTPリクエストの送信先として後ほど利用します。
(URLをあとから確認することは可能ですが、このタイミングで控えておくとスムーズです)
任意で、画像をアップロードしてコネクタにアイコンを設定することも可能なため、図の例ではアイコンに「もにた」を設定しています。

3.Hinemosの通知設定を作成する
HinemosからTeamsのIncoming WebhookへのHTTPリクエストには、Hinemosのコマンド通知を利用します。
Hinemosの動作するサーバの「/root/」に以下のスクリプトを配置します。
以下のスクリプトのURLの部分(**teams webhook url is here**)は先ほど作成したWebhookのURLを記載します。
(配置先はマネージャのいるサーバの任意の場所で構いませんが、その場合は以後の配置先のパスを読み替えてください)
teams_post_notify.sh
#!/bin/sh
# arguments
# $1: #[GENERATION_DATE]
# $2: #[PRIORITY_NUM]
# $3: #[PRIORITY_JP]
# $4: #[MONITOR_ID]
# $5: #[FACILITY_ID]
# $6: #[MESSAGE]
# Incomming Webhook URL
url=’https:// **teams webhook url is here** ‘
# Theme Color
color='#FFFFFF'
if [ $2 -eq '0' ]; then
color='FF0000'
elif [ $2 -eq '1' ]; then
color='4169E1'
elif [ $2 -eq '2' ]; then
color='FFFF00'
elif [ $2 -eq '3' ]; then
color='00FF00'
fi
# make MessageCard JSON
messagecard="
{
\"@type\": \"MessageCard\",
\"@context\": \"https:\/\/schema.org\/extensions\",
\"summary\": \"Notify from Hinemos\",
\"themeColor\": \"${color}\",
\"title\": \"$3 : $4\",
\"sections\": [
{
\"facts\": [
{
\"name\": \"date\",
\"value\": \"$1\"
},
{
\"name\": \"facilityID\",
\"value\": \"$5\"
},
{
\"name\": \"message\",
\"value\": \"$6\"
}
]
}
]
}
"
# Http POST
/usr/bin/curl -H 'Content-type: application/json' -d "${messagecard}" ${url}
このスクリプトはHinemosの監視結果をTeamsのIncoming Webhookに送信するためのスクリプトです。 監視結果を引数として受け取り、Teamsで表示できる形に整形してWebhook URLにHTTPでPOSTしています。
監視結果のうち、Teamsに連携するものとして今回は
監視項目ID
ファシリティID
出力日時
重要度
を選択しました。これらは通知の変数によって実現します。
詳細は「Hinemos ver6.2 ユーザマニュアル 6.4.2 メールテンプレートの登録」の表 6-19 文字列置換対応一覧 をご覧ください。
また、Teams上での表示についてはMessageCardと呼ばれる形式のJSONでカスタマイズすることができます。こちらの詳細についてはMicrosoftの公式ドキュメントをご覧ください。
スクリプトの配置が完了したら、Hinemosのコマンド通知を設定します。

実行するコマンドの部分には、先ほどマネージャサーバに配置したスクリプトを指定し、引数も置換文字列で指定します。
コマンドの内容
sh /root/teams_post_notify.sh “#[GENERATION_DATE]” “#[PRIORITY_NUM]” “#[PRIORITY_JP]” “#[MONITOR_ID]” “#[FACILITY_ID]” ”#[MESSAGE]”
このコマンド通知を任意の監視の通知先として指定することで、Hinemosの監視の結果をTeamsのチャネルに投稿することができるようになります。
実際に、このコマンド通知を利用してリソース監視の結果をTeamsに連携してみると、以下の画像のようになります。

無事、TeamsのチャネルにHinemosの監視結果を連携することができました。
利用例/ユースケース
異常発生時にHinemosに登録済みのユーザだけでなくチーム全体へ素早く通知したい、あるいは、定型的な対応が難しく事象発生ごとに議論して対応を決める必要がある、といったような監視設定がある場合に利用すると便利です。
また、MessageCardの形式を調整することで、ボタン付きのメッセージをTeamsに投稿することもできます。これをうまく応用すれば、TeamsからHinemosに対してカスタムトラップを送信したり、ジョブの承認依頼に対してTeams上から承認操作をしたりといったことも可能になります。

免責事項
本ソフトウェアの使用・本ドキュメントに従った操作により生じたいかなる損害に対しても、 弊社は一切の責任を負いません。
お問い合わせ

