20. webhook通知連携リファレンス
本書はエスカレーションコマンドを利用して、指定した受信webhook経由でX-MONからの障害発生・復旧時の通知をチャットシステムに送信するためのリファレンスです。
通知は指定したwebhookに属するチャネルまたはスペースに送信されます。メーリングリスト等にメールを送信しなくても、チャットシステムへログインするだけで、関係者全員が障害の発生と復旧の通知を受け取ることができます。
20.1. 対応する環境
20.1.1. 対応するチャットシステム
対応するチャットシステムは以下の通りです。
Microsoft Teams
Google Chat
Slack
既存のSlack通知連携コマンドとは別に、より汎用的な通知エスカレーションとしてご利用いただけます。
また、「Microsoft Teams」と「Google Chat」につきましては、専用の通知の表示を用意しています。
Microsoft Teams
Google Chat
Slack
20.1.2. 対応するX-MON環境
本エスカレーションコマンドはX-MONバージョンを問わず、以下のLinux環境に対応します。
RHEL9
Rocky 9
20.2. 受信用webhookの作成手順
受信用webhookが用意されていない場合、以下の手順を参考に用意してください。既に用意されている場合、本章をスキップして下さい。
手順はMicrosoft Teams、Google ChatとSlackを紹介しますので、ご利用になるチャットシステムの手順を参照して下さい。
本マニュアルに表示されている手順や、画面キャプチャは2022年12月現在のものです。各チャットシステムの変更により、意図せず画面や表示が変わることがあることをご了承ください。
20.2.1. Microsoft Teams
チャット通知の対象となるチャネルで、受信webhookを作成します。Microsoft Teamsのwebhook登録方法はこちらです。
また以下に具体的な登録例を記載します。
サンプルでは「X-MON」というチャネルにwebhookを追加します。
1「…」をクリックするとメニューが表示されますので、メニューから 2「コネクタ」をクリックします。
コネクタ一覧画面が表示されますので、検索欄に「webhook」を入力して検索します。
チャネルにwebhookが追加されていない場合、「追加」ボタンがあるのでクリックします。
チャネルにwebhookが追加されている場合、ボタンの表示は「構成」となります。
チャネルにwebhookが追加されていない場合
チャネルにwebhookが追加されている場合
チャネルにwebhookが追加されていない場合、追加を行う
検索結果の「Incoming webhook」の「追加」ボタンをクリックします。
別の画面が表示されますので内容を確認して、また「追加」ボタンをクリックします。
これでwebhookがチャネルに追加されました。
webhookの構成を行う
チャネルのコネクタの画面に遷移していない場合、前のステップを参考にチャネルのコネクタに遷移して、webhookを検索してください。
検索結果の「Incoming webhook」の「構成」ボタンをクリックします。
入力フォームが表示されますので、必要に応じて内容を入力します。以下は例になります。
入力の例:
名前: X-MON障害通知
必要な内容を入力したら「作成」ボタンをクリックしますとwebhookのURLが表示されます。
WebhookのURLをメモ帳にコピーしてから「完了」ボタンをクリックします。WebhookのURLはX-MONのエスカレーションコマンド設定に利用します。
以上で、Webhookの追加が完了しました。
20.2.2. Google Chat
Google ChatのWebhook登録方法はこちらのURLの「ステップ 1: 受信 Webhook を登録する」の内容です。
また以下に具体的な登録例を記載します。
対象するスペースで着信Webhookを作成します。以下はX-MONというスペースにWebhookを追加するサンプルです。
1「…」をクリックするとメニューが表示されますので、メニューから 2「Webhook を管理」をクリックします。
スペースにwebhookが存在しない場合、着信webhookの追加フォームが表示されます。そうでない場合、webhook一覧と「別の Webhook を追加」ボタンが表示されます。このボタンをクリックしますと着信webhookの追加フォームが表示されます。
必要に応じてフォームを入力します。入力の例:
名前: X-MON障害通知
必要な内容を入力したら「保存」ボタンをクリックしますとWebhookのURLが表示されます。
WebhookのURLをメモ帳にコピーしてからボックスの外側をクリックします。WebhookのURLはX-MONのエスカレーションコマンド設定に利用します。
以上で、Webhookの追加が完了しました。
20.2.3. Slack
SlackのWebhook登録方法はこちらです。
また以下に具体的な登録例を記載します。
20.2.3.1. ワークスペースにSlack Appを追加する
https://api.slack.com/lang/ja-jp へアクセスします。メニューから「Your apps」をクリックします。
遷移画面で「Create an App」ボタンをクリックします。
次の画面で「From scratch」をクリックします。
次の画面でApp Nameとワークスペースを設定します。
App Name: 分かりやすい命名で大丈夫です。例:X-MON障害通知
ワークスペース:X-MONの通知を対象するワークスペースを選択します。
「Create App」ボタンをクリックします。
20.2.3.2. Incoming Webhookを有効する
「Create App」をクリックすると作成したアプリ名の詳細画面に遷移されます。(以降、対象アプリの詳細画面
ここからIncoming Webhooksを設定します。
Basic InformationタブのAdd features and functionality欄にある「Incoming Webhooks」をクリックします。
遷移画面で「Activate Incoming Webhooks」を有効にします。
20.2.3.3. App用ボットユーザを設定する
対象アプリの詳細画面で、メニューから「App Home」をクリックして「Your App’s Presence in Slack」にある情報を確認します。設定されていない場合、以下のように設定を行います。
「Edit」ボタンをクリックします。
入力画面が表示されますので Display Name と Default username を入力して、「Save」ボタンをクリックします。
設定した情報は以下のように表示されます。
20.2.3.4. Webhookを追加する
対象アプリの詳細画面でメニューから「Incoming Webhooks」をクリックして表示される画面で「Add New Webhook to Workspace」ボタンをクリックします。
遷移画面先でX-MON通知用チャンネルを選択して「許可する」ボタンをクリックします。
対象アプリの詳細画面に遷移し、Webhook URLが生成されます。
WebhookのURLをメモ帳にコピーします。WebhookのURLはX-MONのエスカレーションコマンド設定に利用します。
以上で、Webhookの追加が完了しました。
20.3. X-MONからチャットへの通知送信設定
操作するX-MONユーザについて
本設定は システム管理者 はたは 運用責任者 で行う必要があります。
20.3.1. エスカレーションコマンドの取得とアップロード
X-MONサポートサイトにログインしてコマンドをダウンロードします。
サポートサイトにログインして、メニューから ダウンロード > 製品 の順にクリックします。表示する項目の中で X-MON 3.x エスカレーションコマンド がありますのでそちらからコマンドをダウンロードします。
X-MONにログインして 管理者メニュー > エスカレーション関連設定 > エスカレーションコマンド へ遷移します。
エスカレーションコマンド一覧画面が表示されますので「登録」ボタンをクリックします。
→
エスカレーションコマンドの登録画面が表示されますので、アップロードファイル欄からダウンロードしたチャット通知エスカレーションコマンドをアップロードし、「登録」ボタンをクリックします。
確認画面が出たら「OK」をクリックしますと以下のようにコマンドがX-MONにアップロードされます。
次はアップロードしたコマンドを利用してエスカレーションコマンドの設定を行います。
20.3.2. エスカレーションコマンド設定
管理者メニュー > エスカレーション関連設定 > エスカレーションコマンド設定 へ遷移します。エスカレーションコマンド設定一覧が表示されますので、「登録」ボタンをクリックします。
→
エスカレーションコマンドの設定の入力項目が表示されますので、設定を行います。ホストエスカレーションコマンドとサービスエスカレーションコマンドをそれぞれ設定する必要があります。以下の表を参考に各エスカレーションコマンドを作成します。
設定項目 |
ホスト用 |
サービス用 |
---|---|---|
コマンドID(英数字) |
例:command_user_chat_host |
例:command_user_chat_service |
コマンド名称 |
例:ホスト用チャット障害通知 |
例:サービス用チャット障害通知 |
実行コマンド |
xmon_chat |
xmon_chat |
引数 |
以下の 引数の設定 表を参照して下さい。 |
以下の 引数の設定 表を参照して下さい。 |
引数の設定は利用するチャットシステムによって違います。
重要
以下の表に記載してある <WebhookのURL> は実際利用するものを置き換えて下さい。
チャットシステム |
ホスト用 |
サービス用 |
---|---|---|
Microsoft Teams |
--type 'teams' --webhook '<WebhookのURL>' --host '$HOSTNAME$' --host_alias '$HOSTALIAS$' --host_address '$HOSTADDRESS$' --notification '$NOTIFICATIONTYPE$' --status '$HOSTSTATE$' --info '$HOSTOUTPUT$' |
--type 'teams' --webhook '<WebhookのURL>' --host '$HOSTNAME$' --host_alias '$HOSTALIAS$' --host_address '$HOSTADDRESS$' --notification '$NOTIFICATIONTYPE$' --service '$SERVICEDESC$' --status '$SERVICESTATE$' --info '$SERVICEOUTPUT$' |
Google Chat |
--type 'chat' --webhook '<WebhookのURL>' --host '$HOSTNAME$' --host_alias '$HOSTALIAS$' --host_address '$HOSTADDRESS$' --notification '$NOTIFICATIONTYPE$' --status '$HOSTSTATE$' --info '$HOSTOUTPUT$' |
--type 'chat' --webhook '<WebhookのURL>' --host '$HOSTNAME$' --host_alias '$HOSTALIAS$' --host_address '$HOSTADDRESS$' --notification '$NOTIFICATIONTYPE$' --service '$SERVICEDESC$' --status '$SERVICESTATE$' --info '$SERVICEOUTPUT$' |
Slack |
--type 'slack' --webhook '<WebhookのURL>' --host '$HOSTNAME$' --host_alias '$HOSTALIAS$' --host_address '$HOSTADDRESS$' --notification '$NOTIFICATIONTYPE$' --status '$HOSTSTATE$' --info '$HOSTOUTPUT$' |
--type 'slack' --webhook '<WebhookのURL>' --host '$HOSTNAME$' --host_alias '$HOSTALIAS$' --host_address '$HOSTADDRESS$' --notification '$NOTIFICATIONTYPE$' --service '$SERVICEDESC$' --status '$SERVICESTATE$' --info '$SERVICEOUTPUT$' |
その他 |
--webhook '<WebhookのURL>' --host '$HOSTNAME$' --host_alias '$HOSTALIAS$' --host_address '$HOSTADDRESS$' --notification '$NOTIFICATIONTYPE$' --status '$HOSTSTATE$' --info '$HOSTOUTPUT$' |
--webhook '<WebhookのURL>' --host '$HOSTNAME$' --host_alias '$HOSTALIAS$' --host_address '$HOSTADDRESS$' --notification '$NOTIFICATIONTYPE$' --service '$SERVICEDESC$' --status '$SERVICESTATE$' --info '$SERVICEOUTPUT$' |
例として、Microsoft TeamsのWebhookを利用する場合の、ホストエスカレーションコマンドとサービスエスカレーションコマンドを設定します。以下の画像の引数「--webhook」は、例として「https://www.example.com」を設定していますが、 受信用webhookの作成手順 で取得したWebhookのURLを設定してください。
入力後、「作成」ボタンをクリックします。
以下の2つのエスカレーションコマンドが登録されました。
以上で、エスカレーションコマンドの設定は完了です。
次は、ホストやサービスにエスカレーションコマンドを設定して、障害時にチャットへ通知が届くようにします。
20.3.3. X-MONのURLの設定
この手順は任意です。
X-MON URLを設定することで、通知メッセージに ホスト情報 や サービス情報 画面へのリンクを表示できます。リンクをクリックすると、対象の障害情報をいち早く確認する事ができます。
管理者メニュー > その他設定 > X-MON 全体設定 へ遷移します。 X-MON全体設定画面が表示されますので「X-MON URL」を設定して「設定を反映」ボタンをクリックします。
→
以上でX-MONのURLが設定できました。
20.3.4. ホストとサービスエスカレーションの登録
設定を登録したエスカレーションコマンドを実行するように、サービスとホストへエスカレーションの登録を行います。エスカレーション設定画面へ遷移し、「新規作成ボタン」をクリックして設定を行います。エスカレーション設定が初めての方は「エスカレーション設定マニュアル」を参考にして下さい。
また以下に登録例を記載します。
ホストエスカレーションの登録
管理者メニュー >「ホスト・サービス管理」 へ遷移して、エスカレーションの登録を行いたいホストの「ホストエスカレーション設定」ボタンをクリックします。例として回数指定でエスカレーション設定を行います。
「条件の追加」ボタンをクリックしてエスカレーション条件の設定を行います。追加されたエスカレーションコマンドは「コマンド」項目の「コマンド実行」グループに表示されます。
グループから「ホスト用チャット障害通知」を選択して「追加」ボタンをクリックしますと、以下のようにエスカレーション条件が追加されます。
「作成」ボタンをクリックしてホストのエスカレーション設定を完了します。
サービスエスカレーションの登録
管理者メニューの「ホスト・サービス管理」 を選択し、エスカレーションの登録を行いたいサービスが登録されている、ホストの「サービス設定」ボタンをクリックします。ホストのサービス一覧が表示されますので、「サービスエスカレーション設定」ボタンをクリックしますとサービスエスカレーション設定画面が表示されますので、「新規作成」ボタンをクリックします。
例として回数指定でエスカレーション設定を行います。「条件の追加」ボタンをクリックしてエスカレーション条件の設定を行います。
エスカレーション条件の追加設定で「コマンド」項目の「コマンド実行」グループに表示される「サービス用チャット障害通知」を選択します。
「追加」ボタンをクリックしますと、以下のようにエスカレーション条件が追加されます。
「作成」ボタンをクリックしてサービスのエスカレーション設定を完了します。
20.4. 通知のテスト実行
X-MONからチャットへの通知が行えるかテスト実行を行います。
20.4.1. 事前準備
テストのためにホストとサービスの監視の詳細設定を一時的に編集します。
パッシブチェックが無効になっている場合、有効にします。
試行回数を1 にします。(設定はすでに 1 になっている場合、スキップしてください。)
期待する設定内容は以下と同じです。
20.4.2. テスト実行手順:パッシブチェックの結果を送信
注釈
この手順は次のステップで実施します。
X-MONの「パッシブチェックの結果を送信」機能を利用してテストを行います。パッシブチェックの結果を送信する手順は以下通りです。
対象の ホスト詳細 または サービス詳細 へ以下の手順で遷移します
ホストの場合:管理者メニュー > ホスト一覧表示 > 対象のホストをクリックします。
サービスの場合:管理者メニュー > サービス一覧表示 > 対象サービスのホスト > 対象サービスをクリックします。
ホスト情報またはサービス情報の画面右上の「パッシブチェックの結果を送信」ボタンをクリックします。
外部コマンドの発行画面に遷移しますので、チェック結果項目を前のステップで設定したエスカレーション条件のステータス、チェック出力項目にテスト実行と分かるようなメッセージを入力し「発行」ボタンをクリックします。
20.4.3. サービスのテスト実行
ホストが障害ステータスの場合、サービスのエスカレーションは動作しないため、先にサービスのエスカレーションテストを行います。
テスト実行手順:パッシブチェックの結果を送信 の手順を実施します。
実施後、しばらくすると対象サービスのステータスが変化して対象チャットシステムに障害通知が届きます。
ヒント
Microsoft Teams または Google Chatを利用する場合かつ X-MON URLが設定された場合、メッセージに サービス情報を確認する リンクまたはボタンが表示されます。これをクリックしますと該当するサービスの サービス情報 画面へ遷移され、障害の詳しい情報をすぐに確認できます。
20.4.4. ホストのテスト実行
テスト実行手順:パッシブチェックの結果を送信 の手順を実施します。
実施後、しばらくすると対象ホストのステータスが変化して対象チャットシステムに障害通知が届きます。
ヒント
Microsoft Teams または Google Chatを利用する場合かつ X-MON URLが設定された場合、メッセージに ホスト情報を確認する リンクまたはボタンが表示されます。これをクリックしますと該当するサービスの ホスト情報 画面へ遷移され、障害の詳しい情報をすぐに確認できます。
以上でテスト実行が完了しました。
20.5. 備考
20.5.1. Google ChatのWebhookを利用する場合の注意事項
X-MON URLを設定した場合メッセージにホストやサービス情報画面へ遷移するボタンが表示されます。
しかし、設定したX-MONのURLが http://
の場合、X-MONへ遷移する前に以下のような確認画面が表示されます。
リダイレクト先が、正しく設定したX-MONのURLやドメインの場合は問題ありませんので、リンクをクリックしてX-MONへ遷移してください。
なお、設定したX-MONのURLが https://
の場合、そのままX-MONへ遷移します。
20.5.2. チャットメッセージから情報を減らしたい
以下の情報は任意なのでメッセージから除外したい場合、 エスカレーションコマンド設定 の「引数」から削除できます。ホスト用エスカレーションコマンド設定と、サービス用エスカレーションコマンド設定は共通です。
--host_alias '$HOSTALIAS$'
--host_address '$HOSTADDRESS$'
--info '$HOSTOUTPUT$'
20.5.3. チャットへ通知がない場合の確認項目
チャットへ通知が無い場合、以下のことを確認してみて下さい。
エスカレーションコマンド設定を確認します。設定の引数は
--type
と--webhook
が同じ種類のものであるか確認します。同じ種類でない場合、エスカレーションコマンド設定を修正して再度テストを実施してください。エスカレーションログを確認します。監視メニュー > システム情報 > X-MON セクションの X-MONサーバファイル参照> X-MONログ > escalation.log をダウンロードして
xmon_chat
の実行結果を確認してください。
X-MONサポートまでお問い合わせいただく場合、エスカレーションの実行結果を確認するため escalation.log
を取得いただく場合があります。