16. Slack通知連携リファレンス
本書はX-MONとSlackを連携し、X-MONからの障害発生・復旧時の通知をSlackに送信するためのリファレンスです。
通知はSlackの指定したチャネルに送信されます。
メーリングリスト等にメールを送信しなくても、Slackへログインするだけで、関係者全員が障害の発生と復旧の通知を受け取ることができます。
Slackは Slack Technologies, Inc. の日本及びその他の国における登録商標または商標です。
※ 本リファレンスは、株式会社エクストランスが作成、公開しているリファレンスです。記載している内容は、Slack Technologies, Inc. より公式な手順としては発表されておらず、同社とは関わりがありません。
16.1. Slackへの通知受信設定
X-MONからSlackへの通知を受信する設定をSlackの管理画面で行います。
本マニュアルではSlackの利用登録は完了している前提で、記載しております。
Slackへのユーザ登録がお済みでない場合、ユーザ登録を行い、Slackの管理画面へのログインを行ったのち、以下の手順を行ってください。
本マニュアルに表示されている手順や、画面キャプチャは2016年07月現在のものです、Slack側の変更により意図せず画面や表示が変わることがあることご了承ください。
16.1.1. Nagiosアドオンの追加
Slackの管理画面より、Nagiosのアドオンを追加します。
管理者権限を持つユーザでSlackの管理画面にログインします。
左上の「Menu」ボタンをクリックし、表示されたメニューより「Configure Apps」を選択します。
アプリケーションの管理画面に遷移しますので、上部のメニューバーに「Nagios」と入力します。
Nagios連携アドオンが表示されますので、選択します。
アドオンのページに遷移後、「Install」ボタンをクリックします。
確認画面が表示されますので、「Add Nagios integration」を選択してください。
アドオンの設定変更画面に遷移すればインストールは完了です。
16.1.2. Nagiosアドオンの設定の確認
X-MONでの連携設定で利用するため、Nagios アドオンの設定を確認します。
先ほど、インストール後に表示された、アドオンの設定変更画面の下部「Integration Setting」項目を確認します。
「Token」項目に文字列が記載されていますが、X-MONの通知設定を行う際に必要になりますので控えておいてください。
また、「Customize Name」、「Customize Icon」項目で、通知時の画面に表示される名称や、アイコンを変更することができます。
上記の例では、通知名称を「X-MON」アイコンをX-MONの画像に変更しております。
設定を変更した場合、「Save Setting」ボタンをクリックすると設定が反映されます。
以上でNagiosアドオンの設定確認は完了です。
16.1.3. X-MON通知用チャンネルの作成
X-MON通知用のチャンネルを作成します。
すでに作成されているチャンネルに対し通知を行う場合、以下の作業は必要ありません。
Slackのメッセージ画面から左メニュー内「CHANNELS」の右にある「+」マークをクリックします。
Name項目にチャンネル名を入力し、「Create Channel」ボタンをクリックします。
下記の例ではチャンネル名を「xmon_notification」としています。
チャンネルが作成されました。
X-MONからの通知設定を行う際に必要となりますので、チャンネル名を控えておいてください。
16.2. X-MONからSlackへの通知送信設定
X-MONからSlackへの通知を送信する設定を行います。
16.2.1. Slack通知エスカレーションコマンドの作成
X-MONからSlackへの通知はX-MONのエスカレーション機能を用いて行います。
まずは、Slack通知を行うエスカレーションコマンドの作成を行います。
エスカレーションコマンドの作成は管理者メニューの「通知・エスカレーション関連設定」メニュー内「エスカレーションコマンド設定」より行います。
「エスカレーションコマンド設定一覧」画面に遷移後、「登録」ボタンをクリックします。
エスカレーションコマンドの設定画面が表示されます。
コマンド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通知エスカレーションコマンドの作成は完了です。
引き続き、サービスエスカレーションへの登録を行います。
16.2.2. サービスエスカレーションの登録(ver3.8.0以前)
本章ではX-MON3.8.0以前の管理画面をもとに記載しております。3.9.0以降のバージョンをお使いのお客様は サービスエスカレーションの登録(ver3.9.0以降) をご確認ください。
設定を追加したSlack通知エスカレーションコマンドを実行するように、サービスへエスカレーションの登録を行います。
管理者メニューの「ホスト・サービス管理」を選択し、エスカレーションの登録を行いたいサービスが登録されている、ホストの「サービス設定」ボタンをクリックします。
以下の例では、ホスト「web01」のサービス「HTTP」に対し、Slack 通知エスカレーションの登録を行います。
ホストのサービス一覧が表示されますので、「サービスエスカレーション設定」ボタンをクリックします。
サービスエスカレーション設定画面が表示されますので、「エスカレーション設定」ボタンをクリックします。
設定画面が表示されますので、左上「追加」ボタンをクリックし、パネルを表示した後、設定項目を入力します。
上記の例では、実行開始回数を「1回目から実行する」ようにし、実行回数を「1」回に制限しています。
実行内容で「コマンド」チェックボックスを選択し、右のプルダウンより「Slack通知コマンド」を選択します。
対象ステータスはすべてを選択しています。
パネルの設定項目への入力後、「設定と承認」ボタンをクリックするとエスカレーション設定が登録されます。
エスカレーション登録後、X-MONを再起動すると設定が反映されます。
以上で、エスカレーション登録は完了です。
16.2.3. サービスエスカレーションの登録(ver3.9.0以降)
本章ではX-MON3.9.0以降の管理画面をもとに記載しております。3.8.0以前のバージョンをお使いのお客様は サービスエスカレーションの登録(ver3.8.0以前) をご確認ください。
設定を追加したSlack通知エスカレーションコマンドを実行するように、サービスへエスカレーションの登録を行います。
管理者メニューの「ホスト・サービス管理」を選択し、エスカレーションの登録を行いたいサービスが登録されている、ホストの「サービス設定」ボタンをクリックします。
以下の例では、ホスト「web01」のサービス「HTTP」に対し、Slack 通知エスカレーションの登録を行います。
ホストのサービス一覧が表示されますので、「サービスエスカレーション設定」ボタンをクリックします。
サービスエスカレーション設定画面が表示されますので、「新規作成」ボタンをクリックします。
設定画面が表示されますので、エスカレーション名称に任意な名称を入力し、新しい条件の追加からエスカレーション条件を入力します。
※エスカレーション対象はデフォルトで遷移元のサービスが選択されているため、操作は不要です。
表示された画面でエスカレーション条件を入力し、「追加」ボタンを押します。
上記の例は、サービスの障害が起こった時や復旧した際にSlack通知を1度実行するものです。
コマンドは「コマンド実行」より「Slack通知コマンド」を選択します。
エスカレーション条件を追加した状態です。
「作成と承認」ボタンをクリックするとエスカレーション設定が登録されます。
以上で、エスカレーション登録は完了です。
16.3. Slack通知のテスト実行
X-MONからSlackへの通知が行えるかテスト実行を行います。
監視メニューの「サービス一覧」を選択し、先ほどエスカレーション登録を行ったサービスの「サービス情報画面」へ遷移します。
テスト実行を行うために、サービスのアクティブチェックを一時的に停止します。
サービス詳細タブを選択してください。
画面下部にある以下のメニューからアクティブチェック項目の「無効」を選択します。
確認ダイアログが表示されますので、「OK」を選択します。
その後、ページを再読み込みすると、アクティブチェック項目の「無効」の背景が赤くなっています。
これで一時的に監視が停止された状態になりました。
引き続き、テスト実行を行うため、ダミーの監視データをサービスに送ります。
サービス情報画面右上の「このサービスのパッシブチェックの結果を送信」ボタンをクリックします。
外部コマンドの発行画面に遷移しますので、チェック結果項目を「CRITICAL」、チェック出力項目にテスト実行と分かるようなメッセージを入力し「発行」ボタンをクリックします。
発行後、しばらくすると対象サービスのステータスが変化します。
エスカレーションを登録したサービスの試行回数の設定によっては、一度のパッシブチェックの結果送信では上記のようにソフト状態となります。
エスカレーションの実行はハード状態で行われるため、設定されている試行回数の分パッシブチェックの結果を送信してください。
上記の例では、試行回数3回中2回異常を検知した状態です。
下記のように、試行回数まで達するとハード状態となります。
エスカレーションのコマンドが実行され、通知が送られるので、SlackのX-MON通知用のチャンネルを確認してください。
上記のようにX-MONからの通知が表示されていれば、テスト実行は成功です。
復旧時の確認を行います。
上記のようにX-MONからの通知が表示されていれば、復旧時のテスト実行も成功です。