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

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

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

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

slack_receive

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

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

本書における解説環境
X-MON ver3.3.0 (一部3.9.0)

16.1. Slackへの通知受信設定

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

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

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

本マニュアルに表示されている手順や、画面キャプチャは2016年07月現在のものです、Slack側の変更により意図せず画面や表示が変わることがあることご了承ください。

16.1.1. Nagiosアドオンの追加

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

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

左上の「Menu」ボタンをクリックし、表示されたメニューより「Configure Apps」を選択します。

slack_menu_addon

アプリケーションの管理画面に遷移しますので、上部のメニューバーに「Nagios」と入力します。

slack_menu_search_nagios

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

slack_menu_search_nagios_select

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

slack_menu_nagios_install

確認画面が表示されますので、「Add Nagios integration」を選択してください。

slack_menu_add_nagios_integration

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

slack_menu_add_nagios_complete

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

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

先ほど、インストール後に表示された、アドオンの設定変更画面の下部「Integration Setting」項目を確認します。

「Token」項目に文字列が記載されていますが、X-MONの通知設定を行う際に必要になりますので控えておいてください。

slack_addon_token

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

slack_addon_save_setting

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

slack_x-mon

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

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

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

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

すでに作成されているチャンネルに対し通知を行う場合、以下の作業は必要ありません。

Slackのメッセージ画面から左メニュー内「CHANNELS」の右にある「+」マークをクリックします。

slack_channel

Name項目にチャンネル名を入力し、「Create Channel」ボタンをクリックします。

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

slack_channel_create

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

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

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

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

16.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

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

$HOSTALIAS$
ホスト名称
$HOSTNAME$
ホストID
--service
-S

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

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

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

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

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

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

入力例

slack_esca_command_setting

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

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

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

16.2.2. サービスエスカレーションの登録(ver3.8.0以前)

本章ではX-MON3.8.0以前の管理画面をもとに記載しております。3.9.0以降のバージョンをお使いのお客様は サービスエスカレーションの登録(ver3.9.0以降) をご確認ください。

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

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

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

slack_380_service

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

slack_380_service_esca

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

slack_380_service_esca_setting

設定画面が表示されますので、左上「追加」ボタンをクリックし、パネルを表示した後、設定項目を入力します。

slack_380_service_esca_add

上記の例では、実行開始回数を「1回目から実行する」ようにし、実行回数を「1」回に制限しています。

実行内容で「コマンド」チェックボックスを選択し、右のプルダウンより「Slack通知コマンド」を選択します。

対象ステータスはすべてを選択しています。

パネルの設定項目への入力後、「設定と承認」ボタンをクリックするとエスカレーション設定が登録されます。

slack_380_service_esca_set

エスカレーション登録後、X-MONを再起動すると設定が反映されます。

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

16.2.3. サービスエスカレーションの登録(ver3.9.0以降)

本章ではX-MON3.9.0以降の管理画面をもとに記載しております。3.8.0以前のバージョンをお使いのお客様は サービスエスカレーションの登録(ver3.8.0以前) をご確認ください。

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

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

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

slack_390_service

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

slack_390_service_esca

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

slack_390_service_esca_add

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

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

slack_390_service_esca_setting1

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

slack_390_service_esca_setting2

上記の例は、サービスの障害が起こった時や復旧した際にSlack通知を1度実行するものです。

コマンドは「コマンド実行」より「Slack通知コマンド」を選択します。

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

slack_390_service_esca_setting3

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

slack_390_service_esca_set

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

16.3. Slack通知のテスト実行

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

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

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

サービス詳細タブを選択してください。

slack_testnoti_service

画面下部にある以下のメニューからアクティブチェック項目の「無効」を選択します。

slack_testnoti_service_active1

確認ダイアログが表示されますので、「OK」を選択します。

その後、ページを再読み込みすると、アクティブチェック項目の「無効」の背景が赤くなっています。

slack_testnoti_service_active2

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

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

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

slack_testnoti_service_passive

外部コマンドの発行画面に遷移しますので、チェック結果項目を「CRITICAL」、チェック出力項目にテスト実行と分かるようなメッセージを入力し「発行」ボタンをクリックします。

slack_testnoti_service_passive_send

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

slack_testnoti_service_soft

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

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

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

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

slack_testnoti_service_hard

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

slack_testnoti

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

復旧時の確認を行います。

サービス情報画面で、「このサービスのパッシブチェックの結果を送信」ボタンをクリックし、
外部コマンド発行画面に遷移後、
チェック結果項目を「OK」
チェック出力項目にテスト実行と分かるようなメッセージを入力し、
「発行」ボタンをクリックします。

slack_testnoti_passive_ok

slack_testnoti_ok

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