Tableau Resource Monitoring Tool から Slack に通知を送る
バージョン 2022.1 以降の Tableau Resource Monitoring Tool(以下、RMT) では、インシデントの重要度の下限値を設定することで、該当するレベル以上のインシデントが発生した際に、Slack に通知を送ることができるので、その機能を試してみた記事になります。
前提条件
下記の環境で検証しています。
・Tableau Server Windows:2022.1.9
・Resource Monitoring Tool Master:2022.3.2
・Resource Monitoring Tool Agent:2022.3.2
RMTにおけるインシデント
インシデントの定義
RMTでは、監視対象のサーバーまたはサーバー群を環境(Environment)と呼びます。
エージェントを通して環境側の異常が検知されると、ツール上でインシデントとして報告されます。
インシデントは、下記の通り大きく2種類に分類されます。
インシデント | 概要 | 種類 |
---|---|---|
システム定義のインシデント | 既定で設定されており、ユーザーで変更できない | エージェントダウン エージェントのライセンスなし 環境のダウン |
構成可能なインシデント | ユーザー側で環境ごとに閾値や重要度を設定可能 | 抽出失敗 ハードウェア Hyperスプーリング 低速クエリ 低速ビュー |
インシデントはさらに、重要度によって分類されます。下記はドキュメントの引用になりますが、3種類が定義されています。
Web UIでの表示
通常、インシデントが発生すると下記の通り確認できます。
環境の選択画面
環境選択画面の環境名(下記の場合test
が環境名)の横に、発注しているインシデント数が表示されます。
・通常時
・インシデント発生時(赤枠が変化)
Critical
なインシデント発生時は、右下に「A Critical incident ~ 」のメッセージも追加表示されます。
メニューバー
環境内で作業中の場合、メニュー右の環境名の横に、マークが表示されます。
・Critical
なインシデント発生時のマーク
これらのUI上の変化から、インシデント発生に気づくと、インシデントメニューからその詳細を確認することが一般的かと思います。
Slackへの通知設定
2022.1 以降のバージョンでは、SlackのIncoming Webhookを使用し、インシデント発生時に指定のチャンネルへ通知を送信可能です。
通知の送信にあたり、RMT・Slackそれぞれに必要な設定を後述します。
Slack側の設定
通知先の作成
通知の投稿先となるワークスペースとチャンネルを作成します。
Incoming Webhook の設定
Slackアプリの作成が必要になるので、下記の手順に従いアプリを作成し、Webhook URLを取得します。
Sending messages using Incoming Webhooks
RMTの設定
通知は、グローバルレベル(複数環境で共通)、または環境レベルで設定可能です。ただし、通知を送信するには、グローバルレベルでの通知設定を有効にしておく必要があります。
グローバルレベルの設定は、各環境でカスタム閾値を使用していない限り、既存の環境や新規作成される環境に、その設定が適用されることになります。
環境ごとに設定を行う場合、グローバルレベルの設定が各環境の設定で上書きされることになります。
グローバルレベルの通知設定
メニューの「Admin > Global Configuration > Notifications」よりグローバルレベルの通知設定を開きます。既定ではオフになっているので有効化し、下記を設定します。
・通知を送信する最小重大度レベル(Information, Warning, Critical)
・Webhook URL
[Send Test Message]より、テストメッセージの送信も可能です。
サーバーからのアウトバウンド通信が制御されていなければ、特に追加の設定は不要で通知を送信することができます。
環境レベルの通知設定
環境ごとの設定を行う場合は、メニューの「Admin > Environments > Notifications」より同様の設定画面が表示されるので、そちらで設定を行います。
通知例
通知は、下記のような形でSlackに送信されます。
エージェントダウン
環境のダウン
さいごに
Slackへの通知は、Slack側の設定(投稿先・Slackアプリの作成)のみで対応可能なので設定にも時間を要しませんでした。
Slackを利用できる環境であれば、ぜひ活用したい機能だと感じました。