概要
zabbixで取得したアラートを、Slack経由で飛ばすようにしたい。 SlackのWebhook機能を使って実現しよう。 基本的には、参考サイトの情報をそのまま追記していく形になる。 Slackのメディアタイプが存在しない場合、以下のリポジトリからファイルをDLしてきて、 Zabbix管理画面のメディアタイプからインポートする必要がある。
https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/slack?at=release/6.0
必要な環境
- Zabbix 5.x環境
- 通知するSlackワークスペース
- 通知するSlackチャンネル
- Slackユーザーアカウント
今回は、CentOs8のLinux上に、ZabbixServer5.0をのせています。
設定手順
slackappの作成
Slackチャンネルで通知をおこなうSlackアプリを作成します
以下のリンクからアクセスして、Create an appを押す。
https://api.slack.com/
すると「Create an app」ポップアップが表示されるので「From scratch」を選択し、手動で設定を入力してアプリを作成します。
「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」を押下します
App Nameに記載したSlackアプリ名でSlackチャンネルに通知を行います。
アプリ名は後から変更ができます。
「Create App」ボタンを押下した後に、サイドバーから【OAuth & Permissions】を選択します。 OAuth & Permissionsの設定で、追加するSlackアプリの権限設定を行います
下にスクロールして「Add an OAuth Scope」ボタンを押下
プルダウンメニューから「chat:write」を選択します。「chat:write」を選択することでSlackアプリにSlackチャンネルへの書き込み権限 を付与しています。
「Bot Token Scopes」
に「chat:write」
が追加されていることを確認
上にスクロールして「Install to Workspace」
を押下し、SlackアプリをSlackワークスペースにインストールします。
その後、許可する
を押下します
許可をすると、「Bot User OAuth Token」
が表示されていることを確認します。「Bot User OAuth Token」は後でZabbix側の設定をす る時に必要になります。忘れないように「Copy」ボタンを押してメモします。
これでSlackAPIの設定は完了。
slackでの設定
通知に用いるSlackチャンネルを開く。ここでは、sample_zabbix_alertというチャンネルを新たに作成した。 右上の所を選択して、
インテグレーションタブ⇒アプリを追加する
を選択。
成功したら、チャンネルの方に、Slackチャンネル名に追加されました。と表示される。
Zabbixでの設定
Zabbixでは
- メディアタイプの設定、
- ユーザーの設定、
- トリガーアクション
の設定を実施していく。
Zabbixフロントエンドに、Zabbix特権管理者相当の権限を持つユーザーでログインする。
メインメニューから【管理】→【メディアタイプ】を押下してメディアタイプの一覧から「Slack」を押下。
- bot_tokenにSlack API設定で取得した「Bot User OAuth Token」の値
- zabbix_urlに{$ZABBIX_URL}がある。
これは、グローバルマクロでの設定をお勧めする。後程解説する。
- zabbix_urlに{$ZABBIX_URL}がある。
そして、更新を押す。
グローバルマクロの設定
- メインメニューから【管理】→【一般設定】の順で押下する。
- 左上のプルダウンメニューから「マクロ」を選択する。
- マクロに {$ZABBIX_URL}、値に「http://IPアドレス」または「https://IPアドレス」を記載する。
https~
の記載がないと、アラート送信時に失敗する。
テストの実行
設定が正しいか確認するために、管理⇒メディアタイプの右側にあるSlackの「テスト」を押下する。
テストを行うために必要なパラメーターに値を入力する。 必要なのは、以下のパラメータ。
- channel: 通知するSlackのチャンネル名を記載します
- event_id: 任意の数値を記載します
- event_source: 0-3の数値を記載します
- zabbix_url: 「http://IPアドレス」または「https://IPアドレス」を記載します。
必要なパラメーターに値を入力したら「テスト」ボタンを押下する。 テストに成功した場合、「メディアタイプ"Slack"のテスト」ポップアップに「メディアタイプのテストに成功しました。」と表示され
る。 また、Slack側でも、送信されたのが確認できる。
userの作成
アラート通知を行うユーザーを作成する。
メインメニューから【管理】→【ユーザー】の順で押下する。
今回は「zabbix_alerts」ユーザーを使用します。 Slack通知用のユーザーを作成していない場合は「ユーザーの作成」を押下して作成を押す。 (元からあるユーザーを使用する場合はスキップする。)
所属するユーザーグループは、監視対象ホストの表示権限が必要。
表示権限が付与されていない場合はアラート通知を行えない。
- メディアタブに移動して追加を選択。
- 「メディア」のポップアップが表示されるので「タイプ」のプルダウンメニューからSlackを選択した後に「送信先」にSlackのチャンネル名を記載する。
- 設定後に「追加」を押下します。この時、送信先の先頭についている#は無くても動作はしてくれる。
この時に指定する、深刻度と、 有効な時間帯は、ケースによって適宜変更する事をお勧めする。
トリガーアクションの設定
アラートを発報する条件や送信するメッセージを設定する。 アクションの左上のプルダウンからトリガーアクションを指定し、 メインメニューから【設定】→【アクション】の順で押下して「アクションの作成」を押下する。
実行条件を設定して「実行内容」タブを選択します。今回は実行条件を「Zabbix serverホスト」でイベント発生時に設定している。
この時、メッセージを変更する場合は、画面下にあるメッセージのカスタマイズにチェックを入れて、 メッセージを編集する。
これにて設定は完了です。
発報テスト
Zabbixエージェントを停止させたり、検証用のマシンのケーブルを抜いたりしてみて、 アラートが来るか確認してみる。以下のような画面の出力が出てくるハズである。
参考サイト