【6.0対応済】ZabbixのアラートをMicrosoft Teamsに通知する方法

2022年4月12日Zabbix

こんにちは!プラットフォーム技術部の小羽根陸です。

前回の記事ではZabbix 5.0から標準で搭載されているチャットツールのSlackと連携する方法を紹介しました。今回はWebhook連携の第二弾としてMicrosoft Teams(以下、Teams)と連携する方法を紹介します!

社内のコミュニケーションツールとしてTeamsを使っている方も多いのではないでしょうか。Teamsに監視通知することで便利になるという皆さん、ぜひお試しください。

ZabbixとTeamsの連携方法

ZabbixならびにTeamsの設定方法について説明します。

事前に準備するもの

  • Zabbix 5.x環境
  • 通知するTeamsチャネル

Zabbix 5.0以前の環境からアップグレードした環境である場合

準備をした環境がZabbix 5.0以前のバージョンからZabbix 5.xにアップグレードしている場合は、Teamsと連携するための必要な設定が入っていないおそれがあります。

事前に必要な設定がはいっているかを確認しましょう。

Zabbixフロントエンドのメインメニューから【管理】→【メディアタイプ】の順に押下します。「MS Teams」があればTeamsの設定に進んでOKです。

Zabbixメディアタイプ画面

「MS Teams」が見つからない場合はZabbixサーバーに「MS Teams」の設定をインポートする必要があります。設定はxmlファイル、yamlファイルとして提供されているのでZabbixサーバーのバージョンに応じて以下のリンクからダウンロードしてください。

Zabbix 5.0はxmlファイル、Zabbix 5.2以降ではyamlファイルが提供されています。(Zabbix 5.2からyamlファイルのインポートがサポートされました。)

xmlファイルまたはyamlファイルのダウンロードを終えたらメディアタイプ画面の右上「インポート」を押下します。

Zabbixメディアタイプ画面

「ファイルの選択」を押下して先ほどダウンロードをしたxmlファイルまたはyamlファイルを選択して「インポート」を押下します。

Zabbixメディアタイプ インポート画面

「インポートに成功しました」と表示されメディアタイプ一覧に「MS Teams」が追加されているのを確認します。

Zabbixメディアタイプ インポート成功画面

インポートが成功したら引き続きTeamsの設定をおこないます。

Teamsの設定

Teamsの設定をおこないます。今回の記事ではTeamsデスクトップ版を使用しましたが、ブラウザ版でも設定できます。

まずは通知するTeamsのチャネルを用意します。今回の記事では「Teams_ZabbixWebHook」チーム内に「一般」チャネルを新規に作成しました。

Teamsの画面

通知するTeamsチャネルにある「…」から「コネクタ」を押下します。

Teams画面コネクタ選択

チャネルのコネクタが表示されるので、検索ボックスに「zabbix」と入力してZabbix Webhookの「追加」を選択します。

Teamsチャンネルのコネクタ画面(Zabbix Webhook追加)

Zabbix webhookの追加画面に遷移するので「追加」を選択します。

TeamsチャンネルのZabbix Webhook追加画面

再度チャネルのコネクタ画面に遷移するので、検索ボックスに「zabbix」と入力してZabbix Webhookの「構成」を選択してください。

Teamsチャンネルのコネクタ画面(Zabbix Webhook構成)

Zabbix webhookの構成画面に遷移します。Webhookのエンドポイントが表示されていることを確認して「Copy」ボタンを押してメモしておきましょう。Zabbix側の設定で必要です。

TeamsチャンネルのZabbix Webhook構成画面

これでTeamsの設定は完了です!

Zabbixの設定

続いてZabbixの設定をおこないます。Zabbixではメディアタイプの設定、ユーザーの設定、トリガーアクションを設定していきます。

今回の記事ではZabbix 5.4のキャプチャを使用しています。そのためZabbix 5.0、Zabbix 5.2をお使いの方は、お手元のZabbix画面と記事のキャプチャに一部差異があると思いますがご了承ください

メディアタイプの設定

Zabbixフロントエンドにアクセスします。Zabbix特権管理者相当の権限を持つユーザーでログインしてください。

Zabbixダッシュボード

メインメニューから【管理】→【メディアタイプ】の順で押下してメディアタイプの一覧から「MS Teams」を押下します。

Zabbixメディアタイプ画面

「teams_endpoint」に先ほどTeams画面でコピーしたWebhookのエンドポイントをペーストします。

Zabbixメディアタイプ Teams_endpoint設定

「zabbix_url」にZabbixサーバーのIPアドレスを設定します。こちらはデフォルトで設定されている値の{$ZABBIX.URL}をZabbixサーバーのIPアドレスに書き換えても動作しますが、「zabbix_url」はTeams以外のメディアタイプでも使用するため、グローバルマクロでの設定をおすすめします。

Zabbixのグローバルマクロとは、Zabbixサーバー全体で有効な、指定した文字列(変数名)を指定した値に自動で置き換えてくれる機能です。このマクロ変数を使用する全ての設定を一括で変更管理できるメリットがあります。

グローバルマクロで{$ZABBIX.URL}をZabbixサーバーのIPアドレスに置き換えるように設定しておくことで、「zabbix_url」にZabbixサーバーのIPアドレスを記載する必要がなくなります。Slackの記事と同様に、今回の記事もグローバルマクロでの設定手順を説明します。

「teams_endpoint」の設定を反映させるために「更新」を押下します。

Zabbixメディアタイプ zabbix_url設定

Zabbix 5.4以降を使用している方は、以下の流れでグローバルマクロを設定します。

  1. メインメニューから【管理】→【一般設定】→【マクロ】の順で押下します
  2. マクロに{$ZABBIX.URL}、値に「http://IPアドレス」または「https://IPアドレス」を記載します
  3. 「更新」ボタンを押下します

Zabbix 5.0、Zabbix 5.2を使用している方は、以下の流れでグローバルマクロを設定します。

  1. メインメニューから【管理】→【一般設定】の順で押下します
  2. 左上のプルダウンメニューから「マクロ」を選択します
  3. マクロに{$ZABBIX.URL}、値に「http://IPアドレス」または「https://IPアドレス」を記載します
  4. 「更新」ボタンを押下します
ZABBIX.URLマクロ設定

ここまでの設定が正しいか確認するためにメディアタイプの「テスト」を押下します。テストを押下することで、Teamsにテストメッセージを送信できます。

Zabbixメディアタイプ画面(テスト)

テストするために必要なパラメーターである「event_source」に値を入力します。「event_source」は0-3の間で値を設定できます。

それぞれの数値の意味は下記のとおりですが、今回は“1”を選択します。

  • 0:トリガーによって作成されたイベント
  • 1:ディスカバリルールによって作成されたイベント
  • 2:エージェント自動登録によって作成されたイベント
  • 3:内部イベント

今回は「event_source」に1を記載して進めます。

必要なパラメーターに値を入力したら「テスト」ボタンを押下します。

Zabbixメディアタイプ テスト画面

テストに成功した場合、「メディアタイプ"MS Teams"のテスト」ポップアップに「メディアタイプのテストに成功しました。」と表示されます。

Zabbixメディアタイプ テスト成功画面

Teams側にテストメッセージが投稿されました。テストなのでマクロには値が入っていませんが実際にアラートが発生した場合にマクロに値が入って表示されます。表示されるマクロの内容はこちらを確認ください。

Teams テストメッセージ

テストメッセージが投稿されたことを確認できたらメディアタイプの設定は完了です。

ユーザーの設定

アラートを通知するユーザーを作成します。

メインメニューから【管理】→【ユーザー】の順で押下します。今回は「zabbix_alerts」ユーザーを使用します。Teams通知用のユーザーを作成していない場合は「ユーザーの作成」を押下して作成してください。

Zabbixxユーザー一覧

所属するユーザーグループは、監視対象ホストの表示権限が必要です。表示権限が付与されていない場合はアラートを通知できません。

「メディア」タブに移動して「追加」を選択します。

Zabbixメディア追加

「メディア」のポップアップが表示されるので「タイプ」のプルダウンメニューから「MS Teams」を選択します。

「送信先」はSlackだとチャンネル名を指定する必要がありましたが、Teamsの場合は「送信先」を使用しませんが空に設定もできません。そのため、今回の記事ではTeamsのチーム名であるTeams_ZabbixWebHookと記載しました。

「有効な時間帯」「指定した深刻度のときに使用」は必要に応じて変更してください。

設定後に「追加」を押下します。

Zabbixメディア設定

設定されたことを確認します。

Zabbixメディア設定の確認

ユーザーの設定は以上です。

トリガーアクションの設定

アラートを発報する条件や送信するメッセージを設定します。

Zabbix 5.4以降を使用している方は、メインメニューから【設定】→【アクション】→【トリガーアクション】の順で押下して「アクションの作成」を押下します。

Zabbix 5.0、Zabbix 5.2を使用している方は、メインメニューから【設定】→【アクション】の順で押下した後に右上の「アクションの作成」を押下します。

Zabbixトリガーアクション画面

実行条件を設定して「実行内容」タブを選択します。今回は実行条件を「Zabbix serverホスト」でイベント発生時に設定していますが必要に応じて変更してください。

Zabbixトリガーアクション作成画面

「実行内容」と「復旧時の実行内容」、「更新時の実行内容」を設定します。今回は「実行内容」と「復旧時の実行内容」にメディアタイプ「MS Teams」とユーザー「zabbix_alerts」を設定しました。

Zabbixトリガーアクション実行内容の詳細画面
Zabbixトリガーアクション実行内容画面

通知するメッセージを変更する場合は「メッセージのカスタマイズ」にチェックをいれます。「件名」「メッセージ」を記載することでTeamsに通知するメッセージを変更できます。

Zabbixトリガーアクション実行内容の詳細画面(メッセージのカスタマイズ)

トリガーアクションでメッセージのカスタマイズを行わない場合はメディアタイプ「Teams」の「メッセージテンプレート」タブのメッセージが使用されます。

Zabbixメディアタイプのメッセージテンプレート画面

ここまでで設定は完了です。実際に障害を発生させてTeamsへの通知を確認します。

アラートの発報

ここではZabbixエージェントを停止させて障害を発生させました。「アクション」のステータスを確認すると送信済と記載されています。送信に失敗した場合は、この画面にその旨エラーが表示されます。

Zabbix障害画面(障害発生)

Teams画面を確認します。メディアタイプのテストではマクロになっていた部分も値が入っています。

Teams障害発生

Teamsにアラートが通知されました!

それでは、Zabbixエージェントを起動させて障害を復旧させます。

Zabbix障害画面(障害復旧)

Teams画面を確認します。

Teams障害復旧

復旧すると、Slackとは違いメッセージが更新されるわけではなく新規の復旧メッセージが投稿されます。

まとめ

今回の記事では、Webhook機能を使用してTeamsにアラートを通知しました。

Slack、Teams以外にもRedmine、JIRA、ServiceNow、ZendeskなどのITSMサービスなどさまざまな外部サービスと標準で連携できるようになっているので、ぜひお試しください。

その他、WebAPIを持つ外部サービスとの連携についても当社では独自に実績がありますので、標準外のサービスやツールとの連携が必要な場合はぜひご相談ください。

アークシステムは Zabbix Japan LLC の認定パートナー企業です。 当社はZabbixバージョン1.1の時代から監視ソリューションの活用を進め、Zabbixに関する製品・サービスの販売に加え、Zabbix関連サービスの提供を行っています。

Zabbixに関するお問い合わせはこちらからお願いいたします。
  • 株式会社アークシステムの予約・来訪管理システム BRoomHubs
  • 低コスト・短納期で提供するまるごとおまかせZabbix