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

2021年7月27日Zabbix

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

昨年7月にZabbix5.xでのSlack通知連携についてご紹介しましたが、その後「Slack APIの仕様変更に伴い正常に動作しなくなった」や「5.0以前からアップグレードした場合にSlack連携に必要な設定が入っていない」といった問題に気づき対応しましたので、Zabbix6.0対応版として改めてご説明したいと思います。

Zabbix 4.4からメディアタイプにWebhookが追加され、外部スクリプトを自作することによって外部ツールに対してアラートを通知することができるようになりましたが、Zabbix 5.0からはさらにSlackを始め外部サービスと連携する機能が標準搭載され、WebUIで設定を行うことで簡単に実装できるようになっています。監視通知はメールよりもチャットのほうが便利という皆さん、ぜひお試しください。

Microsoft Teams との連携方法は、以下の記事をご覧ください。

ユースケース

従来メールでアラートを受信していたときは監視メンバーがメールを定期的に確認しなければいけませんでしたが、ZabbixのアラートをSlackに通知することでPUSH通知として受け取ることができるため、アラートに気づきやすくなります。

また、チャットベースで障害発生中のイベントや復旧したイベントが一目で分かるため、Zabbixフロントエンドを確認しなくても障害発生中のイベントが分かります。

なお、メール通知とSlack通知を併用できますので、従来の運用を変更せずにSlackによる通知を試せます。

ZabbixとSlackの連携方法

ここから、ZabbixならびにSlackの設定方法について、説明します。

事前に準備するもの

  • Zabbix 5.x環境
  • 通知するSlackワークスペース
  • 通知するSlackチャンネル
  • Slackユーザーアカウント

Slack APIの仕様変更に伴うZabbix設定の更新

冒頭で説明した通り、Zabbix 5.0以降にはSlack APIと連携する機能が標準搭載されています。

しかしSlack APIの仕様変更があったため、仕様変更前のSlack APIに対応していたZabbix 5.0.0 ~ 5.0.10,Zabbix 5.2.0 ~ 5.2.6のメディアタイプ「Slack」スクリプトは正常に動作しません。

解決策としては修正版のxmlファイルまたはyamlファイルが提供されているのでこちらをZabbixサーバーにインポートしてください。メディアタイプのインポート手順については、こちらに記載しています。

正常に動作しない問題についてはZabbixサポートページにチケットが作成されていますので、興味のある方はご確認ください。

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

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

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

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

Zabbixメディアタイプ画面

「Slack」が存在しなければ、 メディアタイプのインポート手順に進んでください。

メディアタイプのインポート手順

「Slack」の設定をインポートします。

設定はxmlファイル、yamlファイルとして提供されているのでZabbixサーバーのバージョンに応じて以下のリンクからダウンロードしてください。

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

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

メディアタイプインポート

Slack APIの仕様変更に伴い設定をインポートする方は、 「ファイルの選択」を押下して先ほどダウンロードしたxmlファイルを選択し、メディアタイプの「既存の設定を上書」にチェックをつけて「インポート」を押下します。

「既存の設定を上書」を行うことによってもともと設定していたメディアタイプ「Slack」が上書きされてしまいます。上書きされて困る場合は事前にメディアタイプ「Slack」をリネームしておいてください。

メディアタイプインポートファイル選択_上書きあり

Zabbix 5.0以前の環境からアップグレードした環境を使用している方は、 「ファイルの選択」を押下して先ほどダウンロードしたxmlファイルまたはyamlファイルを選択し、メディアタイプの「既存の設定を上書」にチェックをつけずに「インポート」を押下します。

メディアタイプインポートファイル選択_上書きなし

「インポートが作成しました」と表示されることを確認します。

メディアタイプのインポート成功

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

Slack APIの設定

まず、Slackチャンネルで通知をおこなうSlackアプリを作成します。Slack APIページに移動して「Create an app」を押下します。

Slack APIページ

「Create an app」ポップアップが表示されるので「From scratch」を選択し、手動で設定を入力してアプリを作成します。

Create an app

「Name app & choose workspace」ポップアップが表示されるので、以下の流れで設定を行います。

  1. 「Sign into a different workspace」を選択してSlackユーザーアカウントにログインします
  2. 「App Name」にSlackアプリ名を記載します
  3. 「Pick a workspace to develop your app in:」で対象のSlackワークスペースを選択します
  4. 「Create App」を押下します
Name app & choose workspace

App Nameに記載したSlackアプリ名でSlackチャンネルに通知を行います。アプリ名は後から変更ができます。今回はZabbix_Alerterと命名しました。

「Create App」ボタンを押下した後に、サイドバーから【OAuth & Permissions】を選択します。OAuth & Permissionsの設定で、追加するSlackアプリの権限設定を行います。

Basic Information

下にスクロールして「Add an OAuth Scope」ボタンを押下します。

Scopes

プルダウンメニューから「chat:write」を選択します。「chat:write」を選択することでSlackアプリにSlackチャンネルへの書き込み権限を付与しています。

Scopes chat:write

「Bot Token Scopes」に「chat:write」が追加されていることを確認します。

Scopes Bot Token Scopes chat:write

上にスクロールして「Install to Workspace」を押下し、SlackアプリをSlackワークスペースにインストールします。

Slackのワークスペース管理者がアプリのインストールを許可制にしている場合があります。その場合は 「Install to Workspace」 の代わりに「Request to install」が表示されていますので、押下してインストールのリクエストを送り承認してもらう必要があります。

OAuth & Permissions

画面が遷移した後に「許可する」を押下します。

Zabbix_Alertの許可

「Bot User OAuth Token」が表示されていることを確認します。「Bot User OAuth Token」は後でZabbix側の設定をする時に必要になります。忘れないように「Copy」ボタンを押してメモしておきましょう。

Bot User OAuth Token

これでSlack APIの設定は完了です!

Slackの設定

続いてSlackの設定を行います。先ほどSlack APIの設定でSlackワークスペースにインストールしたSlackアプリをチャンネルに追加します。

通知に用いるSlackチャンネル画面を開きます。今回はSlackチャンネルは「zabbix_alerts」を新規に作成して使用します。

Slack画面

Slack画面の右上にあるアイコンを選択します。

Slack 右上

「インテグレーション」タブを開いて「アプリを追加する」を押下します。

Slack アプリを追加する

Slack APIで作成したSlackアプリ「Zabbix_Alert」を追加します。

Slack Zabbix Alert追加

アプリが追加されたことを確認します。アプリの追加が成功した場合は画像の赤枠にあるように「Slackチャンネル名に追加されました。」と表示されます。

Slack 追加成功

これでSlackの設定は完了です。

Zabbixの設定

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

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

メディアタイプの設定

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

Zabbix5.0のダッシュボード画面

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

メディアタイプSlack

「bot_token」にSlack API設定で取得した「Bot User OAuth Token」の値を記載します。

メディアタイプSlack bot_token

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

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

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

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

メディアタイプSlack 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. 「更新」ボタンを押下します
マクロ設定

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

メディアタイプSlack テスト

テストを行うために必要なパラメーターに値を入力します。設定が必要なパラメーターは「channel」「event_id」「event_source」「zabbix_url」です。

  • channel: 通知するSlackのチャンネル名を記載します
  • event_id: 任意の数値を記載します
  • event_source: 0-3の数値を記載します
  • zabbix_url: 「http://IPアドレス」または「https://IPアドレス」を記載します

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

メディアタイプSlack テストパラメーター1
メディアタイプSlack テストパラメーター2

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

メディアタイプのテスト成功

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

Slack テスト通知

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

ユーザーの設定

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

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

ユーザー設定

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

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

ユーザーメディア設定

「メディア」のポップアップが表示されるので「タイプ」のプルダウンメニューからSlackを選択した後に「送信先」にSlackのチャンネル名を記載します。設定後に「追加」を押下します。

ユーザーのメディア詳細設定

「送信先」で設定するチャンネル名の先頭#は記載しても記載しなくても動作しますが、今回は#を記載しています。「有効な時間帯」「指定した深刻度のときに使用」は必要に応じて変更してください。

設定が行われたことを確認します。

ユーザーメディア設定確認

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

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

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

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

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

トリガーアクション画面

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

トリガーアクション作成

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

トリガーアクション実行内容設定
トリガーアクション実行内容設定内容

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

トリガーアクションのメッセージカスタマイズ

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

「メッセージテンプレート」タブのメッセージ

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

アラートの発報

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

障害発生

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

Slackに障害通知

Slackにアラート通知が行われました!

Slack上では分かりやすく障害はサイドバーが赤色に表示されます。「Open in Zabbix」ボタンを押下するとZabbixフロントエンドにアクセスできます。

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

障害解決

Slack画面を確認します。

復旧すると障害メッセージが更新されます。復旧したイベントに関してはサイドバーが緑色に表示されます。

まとめ

Webhook機能を使用してSlackにアラート通知を行いました。

旧バージョンのZabbixをお使いの環境ではアラート通知はメールで、というのが大半だと思いますが、昨今コミュニケーションはメールからチャットに、と世の中も変化しています。

Slack以外にもMicrosoft Teamsなどのチャットツールや、Redmine、JIRA、ServiceNow、ZendeskなどのITSMサービスなどさまざまな外部サービスと連携できるようになっているので、ぜひZabbixもバージョンアップして運用業務を便利に変えてみませんか。

Zabbixの導入・構築でお困りですか?

Zabbixの導入・構築でお困りですか?アークシステムは、Zabbix Japan LLCの公式認定パートナーとして、豊富な実績と高い技術力でお客様をサポートします。

アークシステムが選ばれる理由

  • 豊富な経験: 多くのZabbix導入・構築プロジェクトを成功に導いた実績
  • 確かな技術力: Zabbix認定資格を持つエンジニアが対応
  • 独自のソリューション: 「監視定義テンプレート」を活用した迅速かつ高品質な実装
  • 最新情報へのアクセス: Zabbix社との強力なパートナーシップを活かした最新技術対応

こんな方に最適です

  • Zabbixの新規導入を検討している
  • 現行システムの運用に課題を感じている
  • 大規模環境での監視体制を整えたい

アークシステムでは、Zabbixの導入・運用に関する課題を解決し、最適な環境を構築します。どんなご相談でもお気軽にお問い合わせください!

  • Zabbix Enterprise Appliance
  • 低コスト・短納期で提供するまるごとおまかせZabbix