23. Slack通知連携リファレンス

本書はX-MONとSlackを連携し、X-MONからの障害発生・復旧時の通知をSlackに送信するためのリファレンスです。

通知はSlackの指定したチャネルに送信されます。

メーリングリスト等にメールを送信しなくても、Slackへログインするだけで、関係者全員が障害の発生と復旧の通知を受け取ることができます。

slack_receive

Slackは Slack Technologies, Inc. の日本及びその他の国における登録商標または商標です。

※ 本リファレンスは、株式会社エクストランスが作成、公開しているものです。記載内容は、Slack Technologies, Inc. より公式な手順として発表されておらず、同社とは関わりがありません。

23.1. Slackへの通知受信設定

X-MONからSlackへの通知を受信する設定を、Slackの管理画面で行います。

本マニュアルは、Slackの利用登録が完了しているものとして記載しております。

Slackへのユーザ登録がお済みでない場合は、ユーザ登録を行いSlackの管理画面へのログインを行ったのち、以下の手順を行ってください。

本マニュアルの手順は2024年04月現在のものです。Slackの変更により画面表示や操作が異なる場合がございます。

23.1.1. Nagiosアドオンの追加

Slackの管理画面より、Nagiosのアドオンを追加します。

管理者権限を持つユーザでSlackの管理画面にログインします。

画面左端のアイコンから「その他」をクリックし、表示されたメニューより「自動化」を選択します。

slack_menu_addon

アプリケーションの管理画面に遷移しますので、検索窓に「Nagios」と入力します。

slack_menu_search_nagios

Nagios連携アドオンが表示されますので、選択します。

slack_menu_search_nagios_select

アドオンのページに遷移後、「Slackに追加する」ボタンをクリックします。

slack_menu_nagios_install

続いて確認画面が表示されますので、「Nagios インテグレーションの追加」を選択してください。

slack_menu_add_nagios_integration

アドオンの設定変更画面に遷移すればインストールは完了です。

23.1.2. Nagiosアドオンの設定確認

X-MONとの連携設定に利用するため、Nagios アドオンの設定を確認します。

先ほど表示されたアドオンの画面にて「設定」を選択し、下部の「インテグレーションの設定」項目を確認します。

slack_menu_add_nagios_menu

「トークン」項目に記載されている文字列がX-MONの通知設定に必要ですので、控えておいてください。

slack_addon_token

また、「名前をカスタマイズ」、「アイコンをカスタマイズする」項目で、通知時の画面に表示される名称や、アイコンを変更することができます。

slack_addon_save_setting

上記の例では、通知名称を「X-MON」、アイコンをX-MONの画像に変更しております。

slack_x-mon

設定を変更した場合、「設定を保存する」ボタンをクリックすると設定が反映されます。

以上でNagiosアドオンの設定は完了です。

23.1.3. X-MON通知用チャンネルの作成

X-MON通知用のチャンネルを作成します。

すでに作成されているチャンネルへ通知を行う場合、以下の作業は不要です。

Slackのメッセージ画面から左メニュー内「チャンネル」の右にある下向き矢印アイコンをクリックし、「作成」「チャンネルを作成する」と進みます。

slack_channel

「名前」にチャンネル名を入力して「次へ」で進みます。

下記の例ではチャンネル名を「xmon_notification」としています。

slack_channel_create

続いて「可視性」でチャンネルの閲覧対象を設定し、「作成」ボタンをクリックします。

slack_channel_create2

チャンネルが作成されました。

X-MONからの通知設定を行う際に必要ですので、チャンネル名を控えておいてください。

23.2. X-MONからSlackへの通知送信設定

X-MONからSlackへ通知を送信する設定を行います。

23.2.1. Slack通知エスカレーションコマンドの作成

X-MONからSlackへの通知はX-MONのエスカレーション機能を用いて行います。

まずは、Slack通知を行うエスカレーションコマンドを作成します。

エスカレーションコマンドの作成は管理者メニューの「通知・エスカレーション関連設定」メニュー内「エスカレーションコマンド設定」より行います。

slack_esca_command

「エスカレーションコマンド設定一覧」画面に遷移後、「登録」ボタンをクリックします。

slack_esca_command_reg

エスカレーションコマンドの設定画面が表示されます。

コマンドID項目には任意の識別IDを入力してください。

コマンド名称はエスカレーション登録画面に表示する際の、表示名を入力してください。

実行コマンドは「slack_request」を選択してください。

引数項目では以下の内容を記載します。

また、引数にはNagiosマクロが利用できます。

引数

説明

入力例

--slack_domain
-d

Slackにアクセスする際のドメイン名を指定します。

xmon-reference.slack.com

--slack_token
-t
Nagiosアドオンを登録した際に
控えたアクセストークンを指定します。
--slack_channel
-c

Slackの通知先チャンネル名を指定します。

xmon_notification

--host
-H

通知に出力するホスト名を指定します。

$HOSTDISPLAYNAME$
ホスト名称
--service
-S

通知に出力するサービス名を指定します。

$SERVICEDISPLAYNAME$
サービスID
--state
-s

通知に出力するサービスステータスを指定します。

$SERVICESTATE$
サービスステータス
--output
-o

通知に出力するサービス情報を指定します。

$SERVICEOUTPUT$
サービス情報
--notification
-n
エスカレーションコマンドの通知種別を指定します。
$NOTIFICATIONTYPE$を指定してください。
$NOTIFICATIONTYPE$
通知種別
--timeout
-T
タイムアウト秒数を指定します。
指定しない場合は15秒が設定されます。
指定秒数20秒の場合
--timeout 20
または
-T 20

入力例

slack_esca_command_setting

入力後、「作成と承認」ボタンをクリックすると、エスカレーションコマンド設定が追加されます。

以上で、Slack通知エスカレーションコマンドの作成は完了です。

引き続き、サービスエスカレーションの登録を行います。

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

設定を追加したSlack通知エスカレーションコマンドを実行するように、サービスへエスカレーションを登録します。

管理者メニューの「ホスト・サービス管理」を選択し、エスカレーションを登録したいサービスが登録されているホストの、「サービス設定」ボタンをクリックします。

以下の例では、ホスト「web01」のサービス「HTTP」に対してSlack通知エスカレーションを登録します。

slack_service

ホストのサービス一覧が表示されますので、「サービスエスカレーション設定」ボタンをクリックします。

slack_service_esca

サービスエスカレーション設定画面が表示されますので、「新規作成」ボタンをクリックします。

slack_service_esca_add

設定画面が表示されますので、エスカレーション名称に任意の名称を入力し、新しい条件の追加からエスカレーション条件を入力します。

※エスカレーション対象はデフォルトで遷移元のサービスが選択されているため、操作は不要です。

slack_service_esca_setting1

表示された画面でエスカレーション条件を入力し、「追加」ボタンを押します。

slack_service_esca_setting2

上記の例は、サービスの障害発生時やステータス変更時、及び復旧時にSlack通知を1回実行します。

コマンドは「コマンド実行」より、先ほど作成した「Slack通知コマンド」を選択します。

エスカレーション条件を追加した状態です。

slack_service_esca_setting3

「作成」ボタンをクリックするとエスカレーション設定が登録されます。

slack_service_esca_set

以上で、エスカレーション登録は完了です。

23.3. Slack通知のテスト実行

X-MONからSlackへ通知が行えるか、テストを行います。

監視メニューの「サービス一覧」を選択し、先ほどエスカレーション登録を行ったサービスの「詳細画面」へ遷移します。

slack_testnoti_servicelist

テスト実行のため、サービスのアクティブチェックを一時的に停止します。

画面右上部の「操作」をクリックして、メニューを展開してください。

slack_testnoti_service

表示されたトグルボタン一覧から、アクティブチェック項目をクリックして「無効」にします。

slack_testnoti_service_active1

画面上部に「設定を変更しました」と表示され、アクティブチェック項目が無効になります。

これで一時的に監視が停止された状態になりました。

引き続き、テストを行うため、ダミーの監視データをサービスに送ります。

サービス情報画面右上の「パッシブチェックの結果を送信する」アイコンをクリックします。

slack_testnoti_service_passive

「指定したサービスにパッシブチェックの結果を送信する。」画面が開きますので、チェック結果項目を「CRITICAL」、チェック出力項目にテスト実行と分かるようなメッセージを入力し「実行」ボタンをクリックします。

slack_testnoti_service_passive_send

発行後、しばらくすると対象サービスのステータスが変化します。

slack_testnoti_service_soft

エスカレーションを登録したサービスの試行回数の設定によっては、初回のパッシブチェックの結果送信では上記のようにソフト状態となります。

エスカレーションの実行はハード状態で行われるため、設定されている試行回数分パッシブチェックの結果を送信してください。

上記の例では、試行回数3回中1回異常を検知したソフト状態です。

下記のように、試行回数に達するとハード状態となります。

slack_testnoti_service_hard

エスカレーションが実行され、通知が送られますので、SlackのX-MON通知用チャンネルを確認してください。

slack_testnoti

上記のようにX-MONからの通知が表示されていれば、テスト実行は成功です。

続いて、復旧時の通知確認を行います。

先ほどと同様に、サービス情報画面右上の「パッシブチェックの結果を送信する」アイコンをクリックします。

slack_testnoti_passive_ok

「指定したサービスにパッシブチェックの結果を送信する。」画面が開きますので、今度はチェック結果項目を「OK」、チェック出力項目にテスト実行と分かるようなメッセージを入力し「実行」ボタンをクリックします。

slack_testnoti_ok

上記のようにX-MONからの通知が表示されていれば、復旧時のテスト実行も成功です。

テスト完了後は、一時的に無効にしたサービスのアクティブチェックを有効に戻しておいてください。

slack_testnoti_service_active2

以上で、Slack通知のテストは完了です。