17. webhook通知連携リファレンス

本書はエスカレーションコマンドを利用して、指定した受信webhook経由でX-MONからの障害発生・復旧時の通知をチャットシステムに送信するためのリファレンスです。

通知は指定したwebhookに属するチャネルまたはスペースに送信されます。メーリングリスト等にメールを送信しなくても、チャットシステムへログインするだけで、関係者全員が障害の発生と復旧の通知を受け取ることができます。

17.1. 対応する環境

17.1.1. 対応するチャットシステム

対応するチャットシステムは以下になります。

  • Microsoft Teams

  • Google Chat

  • Slack

既存のSlack通知連携コマンドとは別に、より汎用的な通知エスカレーションとしてご利用いただけます。

また、「Microsoft Teams」と「Google Chat」につきましては、専用の通知の表示を用意しています。

Microsoft Teams

chat_microsoft_overview

Google Chat

chat_google_overview

Slack

chat_slack_overview

17.1.2. 対応するX-MON環境

本エスカレーションコマンドはX-MONバージョンを問わず、以下のLinux環境を対応します。

  • RHEL7 / RHEL8

  • CentOS 7 / Rocky 8

17.2. 受信用webhookの作成手順

受信用webhookが用意されていない場合、以下の手順を参考に用意してください。既に用意されている場合、本章をスキップして下さい。

手順はMicrosoft Teams、Google ChatとSlackを紹介しますので、利用になるチャットシステムの手順を参照して下さい。

本マニュアルに表示されている手順や、画面キャプチャは2022年12月現在のものです。各チャットシステムの変更により、意図せず画面や表示が変わることがあることをご了承ください。

17.2.1. Microsoft Teams

チャット通知の対象となるチャネルで、受信webhookを作成します。Microsoft Teamsのwebhook登録方法はこちらです。

また以下に具体的な登録例を記載します。


サンプルでは「X-MON」というチャネルにwebhookを追加します。

1「…」をクリックしたらメニューが表示されますのでメニューから 2「コネクタ」をクリックします。

chat_microsoft_connector

コネクタ一覧画面が表示されますので、検索欄に「webhook」を入力して検索します。

チャネルにwebhookが追加されていない場合、「追加」ボタンがあるのでクリックします。

チャネルにwebhookが追加されている場合、ボタンの表示は「構成」となります。

チャネルにwebhookが追加されていない場合 chat_microsoft_webhook_add

チャネルにwebhookが追加されている場合 chat_microsoft_webhook_config

チャネルにwebhookが追加されていない場合、追加を行う

検索結果の「Incoming webhook」の「追加」ボタンをクリックします。

chat_microsoft_webhook_add

別の画面が表示されますので内容を確認して、また「追加」ボタンをクリックします。

chat_microsoft_webhook_info

これでwebhookがチャネルに追加されました。

webhookの構成を行う

チャネルのコネクタの画面に遷移していない場合、前のステップを参考にチャネルのコネクタに遷移して、webhookを検索してください。

検索結果の「Incoming webhook」の「構成」ボタンをクリックします。

chat_microsoft_webhook_config

入力フォームが表示されますので、必要に応じて内容を入力します。以下は例になります。

入力の例:

  • 名前: X-MON障害通知

chat_microsoft_webhook_name

必要な内容を入力したら「作成」ボタンをクリックしますとwebhookのURLが表示されます。

chat_microsoft_webhook_url

WebhookのURLをメモ帳にコピーしてから「完了」ボタンをクリックします。WebhookのURLはX-MONのエスカレーションコマンド設定に利用します。

以上で、Webhookの追加が完了しました。

17.2.2. Google Chat

Google ChatのWebhook登録方法はこちらのURLの「ステップ 1: 受信 Webhook を登録する」の内容です

また以下に具体的な登録例を記載します。


対象するスペースで着信Webhookを作成します。以下はX-MONというスペースにWebhookを追加するサンプルです。

1「…」をクリックしたらメニューが表示されますのでメニューから 2「Webhook を管理」をクリックします。

chat_google_webhook_manage

スペースにwebhookが存在しない場合、着信webhookの追加フォームが表示されます。そうでない場合、webhook一覧と「別の Webhook を追加」ボタンが表示されます。このボタンをクリックしますと着信webhookの追加フォームが表示されます。

必要に応じてフォームを入力します。入力の例:

  • 名前: X-MON障害通知

chat_google_webhook_add

必要な内容を入力したら「保存」ボタンをクリックしますとWebhookのURLが表示されます。

chat_google_webhook_url

WebhookのURLをメモ帳にコピーしてからボックスの外側をクリックします。WebhookのURLはX-MONのエスカレーションコマンド設定に利用します。

以上で、Webhookの追加が完了しました。

17.2.3. Slack

SlackのWebhook登録方法はこちらです。

また以下に具体的な登録例を記載します。

17.2.3.1. ワークスペースにSlack Appを追加する

https://api.slack.com/lang/ja-jp へアクセスします。メニューから「Your apps」をクリックします。

chat_slack_your_apps

遷移画面で「Create an App」ボタンをクリックします。

chat_slack_create_app

次の画面で「From scratch」をクリックします。

chat_slack_app_scratch

次の画面でApp Nameとワークスペースを設定します。

  • App Name: 分かりやすい命名で大丈夫です。例:X-MON障害通知

  • ワークスペース:X-MONの通知を対象するワークスペースを選択します。

「Create App」ボタンをクリックします。

chat_slack_app_define

17.2.3.2. Incoming Webhookを有効する

「Create App」をクリックすると作成したアプリ名の詳細画面に遷移されます。(以降、対象アプリの詳細画面

ここからIncoming Webhooksを設定します。

Basic InformationタブのAdd features and functionality欄にある「Incoming Webhooks」をクリックします。

chat_slack_webhook_on

遷移画面で「Activate Incoming Webhooks」を有効にします。

chat_slack_webhook_on2

17.2.3.3. App用ボットユーザを設定する

対象アプリの詳細画面で、メニューから「App Home」をクリックして「Your App’s Presence in Slack」にある情報を確認します。設定されていない場合、以下のように設定を行います。

「Edit」ボタンをクリックします。

chat_slack_bot_config

入力画面が表示されますので Display Name と Default username を入力して、「Save」ボタンをクリックします。

chat_slack_bot_config2

設定した情報は以下のように表示されます。

chat_slack_bot_config3

17.2.3.4. Webhookを追加する

対象アプリの詳細画面でメニューから「Incoming Webhooks」をクリックして表示される画面で「Add New Webhook to Workspace」ボタンをクリックします。

chat_slack_webhook_url

遷移画面先でX-MON通知用チャンネルを選択して「許可する」ボタンをクリックします。

chat_slack_webhook_url2

対象アプリの詳細画面に遷移し、Webhook URLが生成されます。

chat_slack_webhook_url3

WebhookのURLをメモ帳にコピーします。WebhookのURLはX-MONのエスカレーションコマンド設定に利用します。

以上で、Webhookの追加が完了しました。

17.3. X-MONからチャットへの通知送信設定

本章ではX-MON3.16.0の管理画面をもとに記載しております。

操作するX-MONユーザについて

本設定は システム管理者 はたは 運用責任者 で行う必要があります。

17.3.1. エスカレーションコマンドの取得とアップロード

X-MONサポートサイトにログインしてコマンドをダウンロードします。

サポートサイトにログインして、メニューから ダウンロード > 製品 の順にクリックします。表示する項目の中で X-MON 3.x エスカレーションコマンド がありますのでそちらからコマンドをダウンロードします。

chat_support_site

X-MONにログインして 管理者メニュー > エスカレーション関連設定 > エスカレーションコマンド へ遷移します。

エスカレーションコマンド一覧画面が表示されますので「登録」ボタンをクリックします。

chat_xmon_menu_uploadchat_xmon_command_upload

エスカレーションコマンドの登録画面が表示されますので、アップロードファイル欄からダウンロードしたチャット通知エスカレーションコマンドをアップロードし、「登録と承認」ボタンをクリックします。

chat_xmon_command_upload2

確認画面が出たら「OK」をクリックしますと以下のようにコマンドがX-MONにアップロードされます。

chat_xmon_command_uploaded

次はアップロードしたコマンドを利用してエスカレーションコマンドの設定を行います。

17.3.2. エスカレーションコマンド設定

管理者メニュー > エスカレーション関連設定 > エスカレーションコマンド設定 へ遷移します。エスカレーションコマンド設定一覧が表示されますので、「登録」ボタンをクリックします。

chat_xmon_menu_configchat_xmon_command_config

エスカレーションコマンドの設定の入力項目が表示されますので、設定を行います。ホストエスカレーションコマンドとサービスエスカレーションコマンドをそれぞれ設定する必要があります。以下の表を参考に各エスカレーションコマンドを作成します。

エスカレーションコマンドの設定

設定項目

ホスト用

サービス用

コマンド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を設定してください。

chat_xmon_command_config_example chat_xmon_command_config_example2

入力後、「作成と承認」ボタンをクリックします。

以下の2つのエスカレーションコマンドが登録されました。

chat_xmon_command_configured

以上で、エスカレーションコマンドの設定は完了です。

次は、ホストやサービスにエスカレーションコマンドを設定して、障害時にチャットへ通知が届くようにします。

17.3.3. X-MONのURLの設定

この手順は任意でX-MON 3.16.0 以上対応されます。

X-MON URLを設定することで、通知メッセージに ホスト情報サービス情報 画面へのリンクを表示する事が出できます。リンクをクリックする事で、対象の障害情報をいち早く確認する事ができます。

管理者メニュー > その他設定 > X-MON 全体設定 へ遷移します。 X-MON全体設定画面が表示されますので「X-MON URL」を設定して「設定を反映」ボタンをクリックします。

chat_xmon_url_addchat_xmon_url_add2

以上でX-MONのURLを設定しました。

17.3.4. ホストとサービスエスカレーションの登録

設定を登録したエスカレーションコマンドを実行するように、サービスとホストへエスカレーションの登録を行います。エスカレーション設定画面へ遷移し、「新規作成ボタン」をクリックして設定を行います。エスカレーション設定が初めての方は エスカレーション設定マニュアル を参考にして下さい。

また以下に登録例を記載します。

ホストエスカレーションの登録

  1. 管理者メニュー >「ホスト・サービス管理」 へ遷移して、エスカレーションの登録を行いたいホストの「ホストエスカレーション設定」ボタンをクリックします。例として回数指定でエスカレーション設定を行います。

  2. 「条件の追加」ボタンをクリックしてエスカレーション条件の設定を行います。追加されたエスカレーションコマンドは「コマンド」項目の「コマンド実行」グループに表示されます。

    chat_xmon_esset_host

  3. グループから「ホスト用チャット障害通知」を選択して「追加」ボタンをクリックしますと、以下のようにエスカレーション条件が追加されます。

    chat_xmon_esset_host_panel

  4. 「作成と承認」ボタンをクリックしてホストのエスカレーション設定を完了します。

サービスエスカレーションの登録

  1. 管理者メニューの「ホスト・サービス管理」 を選択し、エスカレーションの登録を行いたいサービスが登録されている、ホストの「サービス設定」ボタンをクリックします。ホストのサービス一覧が表示されますので、「サービスエスカレーション設定」ボタンをクリックしますとサービスエスカレーション設定画面が表示されますので、「新規作成」ボタンをクリックします。

  2. 例として回数指定でエスカレーション設定を行います。「条件の追加」ボタンをクリックしてエスカレーション条件の設定を行います。

  3. エスカレーション条件の追加設定で「コマンド」項目の「コマンド実行」グループに表示される「サービス用チャット障害通知」を選択します。

    chat_xmon_esset_service

  4. 「追加」ボタンをクリックしますと、以下のようにエスカレーション条件が追加されます。

    chat_xmon_esset_service_panel

  5. 「作成と承認」ボタンをクリックしてサービスのエスカレーション設定を完了します。

17.4. 通知のテスト実行

X-MONからチャットへの通知が行えるかテスト実行を行います。

17.4.1. 事前準備

テストのためにホストとサービスの監視の詳細設定を一時的に編集します。

  1. パッシブチェックが無効になっている場合、有効にします。

  2. 試行回数を1 にします。(設定はすでに 1 になっている場合、スキップしてください。)

期待する設定内容は以下と同じです。

chat_xmon_passive_config

17.4.2. テスト実行手順:パッシブチェックの結果を送信

注釈

この手順は次のステップで実施します。

X-MONの「パッシブチェックの結果を送信」機能を利用してテストを行います。パッシブチェックの結果を送信する手順は以下通りです。

  1. 対象の ホスト詳細 または サービス詳細 へ以下の手順で遷移します

    • ホストの場合:管理者メニュー > ホスト一覧表示 > 対象のホストをクリックします。

    • サービスの場合:管理者メニュー > サービス一覧表示 > 対象サービスのホスト > 対象サービスをクリックします。

  2. ホスト情報またはサービス情報の画面右上の「パッシブチェックの結果を送信」ボタンをクリックします。

  3. 外部コマンドの発行画面に遷移しますので、チェック結果項目を前のステップで設定したエスカレーション条件のステータス、チェック出力項目にテスト実行と分かるようなメッセージを入力し「発行」ボタンをクリックします。

17.4.3. サービスのテスト実行

ホストが障害ステータスの場合、サービスのエスカレーションは動作しないため、先にサービスのエスカレーションテストを行います。

テスト実行手順:パッシブチェックの結果を送信 の手順を実施します。

実施後、しばらくすると対象サービスのステータスが変化して対象チャットシステムに障害通知が届きます。

chat_message_service

ヒント

Microsoft Teams または Google Chatを利用する場合かつ X-MON URLが設定された場合、メッセージに サービス情報を確認する リンクまたはボタンが表示されます。これをクリックしますと該当するサービスの サービス情報 画面へ遷移され、障害の詳しい情報をすぐに確認できます。

17.4.4. ホストのテスト実行

テスト実行手順:パッシブチェックの結果を送信 の手順を実施します。

実施後、しばらくすると対象ホストのステータスが変化して対象チャットシステムに障害通知が届きます。

chat_message_host

ヒント

Microsoft Teams または Google Chatを利用する場合かつ X-MON URLが設定された場合、メッセージに ホスト情報を確認する リンクまたはボタンが表示されます。これをクリックしますと該当するサービスの ホスト情報 画面へ遷移され、障害の詳しい情報をすぐに確認できます。


以上でテスト実行が完了しました。

17.5. 備考

17.5.1. Google ChatのWebhookを利用する場合の注意事項

X-MON URLを設定した場合メッセージにホストやサービス情報画面へ遷移するボタンが表示されます。

chat_google_notice

しかし、設定したX-MONのURLが http:// の場合、X-MONへ遷移する前に以下のような確認画面が表示されます。

chat_google_notice2

リダイレクト先が、正しく設定したX-MONのURLやドメインの場合は問題ありませんので、リンクをクリックしてX-MONへ遷移してください。

なお、設定したX-MONのURLが https:// の場合、そのままX-MONへ遷移します。

17.5.2. X-MONが3.15.1以下でチャットメッセージにホスト情報がサービス情報へのリンクを表示したい

エスカレーションコマンド設定 の「引数」に以下の引数を追加することで対応できます。ホスト用エスカレーションコマンド設定と、サービス用エスカレーションコマンド設定は共通です。

  • --xmon_url '<X-MONのURL>'

なお、この設定を行うと、そのあと X-MON を 3.16.0 以上にアップデートされ、X-MONのURLの設定 でX-MON URLを設定されても、こちらの設定が優先され、チャットメッセージに利用されます。この場合、エスカレーションコマンド設定 の「引数」から --xmon_url '<X-MONのURL>' を削除すると、X-MONのURLの設定 の値でメッセージに利用されます。

17.5.3. チャットメッセージから情報を減らしたい

以下の情報は任意なのでメッセージから除外したい場合、 エスカレーションコマンド設定 の「引数」から削除できます。ホスト用エスカレーションコマンド設定と、サービス用エスカレーションコマンド設定は共通です。

  • --host_alias '$HOSTALIAS$'

  • --host_address '$HOSTADDRESS$'

  • --info '$HOSTOUTPUT$'

17.5.4. チャットへ通知がない場合の確認項目

チャットへ通知が無い場合、以下のことを確認してみて下さい。

  1. エスカレーションコマンド設定を確認します。設定の引数は --type--webhook が同じ種類のものであるか確認します。同じ種類でない場合、エスカレーションコマンド設定を修正して再度テストを実施してください。

  2. エスカレーションログを確認します。監視メニュ > システム情報 > X-MON セクションの X-MONサーバファイル参照> X-MONログ > escalation.log をダウンロードして xmon_chat の実行結果を確認してください。

X-MONサポートまでお問い合わせをされた場合、エスカレーションの実行結果を確認するため escalation.log を取得いただく場合があります。