4
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Zabbix 5.0 で Slack にアラートを連携する

Zabbix 5.0からはwebhook機能が充実したと聞いて、早速Slackに連携して遊んでみます。

image.png

1.Slack APIの設定

Slack APIをを作成するため、Slack APIページにアクセスし、Slackアプリを作成します。

まずはトップページの[Create an app]を押下します。
image.png

続けて、[From scratch]を押下します。
image.png

次に、App NamePick a workspace to develop your app in:を入力します。
App Nameは任意のBot名、Pick a workspace to develop your app in:には通知先のワークスペースを入力します。
入力したら、[Create App]を押下します。
image.png

こちらの画面が表示されたらBOT作成完了です。
image.png

同じ画面の[OAuth & Permission]を押下します。
image.png

中段の[Scopes] - [Add an OAuth Scope]を押下し、[calls:write]を選択します。
image.png
image.png

上部にSuccess!と表示されたら、上段の[OAuth Tokens for Your Workspace] - [Install Workspace]を押下します。
image.png

アクセス許可の画面が表示されるので、[許可する]を押下します。
image.png

再びSlack APIの画面にて、アクセストークンが表示されるため、こちらのトークンを控えておきます。
image.png

2.Slackワークスペース、チャンネルの設定

次はSlackワークスペースを表示します。

[App]を展開し、先ほど作成したBOTが表示されることを確認します。
image.png

続いて、通知用のチャンネルを作成します。
チャンネル名はzabbix_notificationとでもしておきます。
image.png
image.png
image.png

その後、チャンネルオプションからインテグレーションの設定をします。
チャンネルオプションを表示して、[インテグレーション]タブを表示します。
[App]-[アプリを追加する]を押下します。
image.png

アプリ追加の画面で、最初に作成したBOT(Zabbix_Slack_Notification)を[追加]します。
image.png

追加が完了すると、Slack側の設定は完了です。

3.Zabbixメディアタイプの設定

こちらからはZabbix Server側で設定を行います。

まずは[管理]-[メディアタイプ]を選択し、その中に[Slack]がありますので押下します。
image.png

まずはこのデフォルト設定を汚さないため、複製して別名で作成するため、下部の[複製]を押下します。
image.png

複製したメディアタイプ設定について、以下の項目は記載を変更します。
設定を変更したら[追加]を押下します。

項目 設定 備考
名前 [メディアタイプ名] 既存と重複はNG
bot_token [Slack APIで表示されたトークン] -
zabbix_url http://[ZabbixServerのIPアドレス]/zabbix/ -

image.png

なお、zabbix_urlについては{$ZABBIX.URL}のままにし、グローバルマクロを修正する方法もありますが、当環境では何故かうまく設定が反映されなかったため、直書きで記載をしています。

4.メディアタイプのテスト

ここで、先ほど設定した内容にてZabbixからSlackへ連携できるかテストを行います。

テスト自体は、作成したメディアタイプの右にある[テスト]を押下します。
image.png

テスト用の内容一覧が表示されるため、以下のみ手動で書き換えてから[テスト]を押下します。

項目 設定
channel [Slackチャンネル名]
event_id 1

image.png

成功すると、Zabbix側では以下が表示され、Slack側でも通知がされます。
image.png
image.png

失敗するとZabbix側にアラート内容が記載されるので、適宜修正を行います。
image.png

なお、初回テスト時に以下の内容も編集する必要がある場合があります。設定内容に0を入れると通知が飛ばないようでしたので、基本は1を設定します。

項目 設定
event_nseverity 1
event_source 1
event_tags 1
event_update_status 1
event_value 1
trigger_id 1

5.通知ユーザの設定

通知するためにはZabbix側でユーザを作成する必要がありますので、ユーザを作成します。
なお、ユーザ権限周りについては必要最低限度に絞った方が良いですが、今回は最上級特権の特権管理者を割り振ります。

[管理]-[ユーザー]でユーザー画面を表示し、右上の[ユーザー作成]を押下します。
image.png

[ユーザー]タブでユーザー名、グループ名、パスワードを設定します。
グループ名は適当にデフォルトのものを設定しています。
image.png

続いて[メディア]タブでメディア欄の[追加]を押下します。
image.png

[タイプ]は先ほど作成したメディアタイプ名を、[送信先]にはSlackのチャンネル名を入力して[更新]を押下します。
image.png
image.png

最後に、[権限]タブを表示し、[ユーザの種類]を特権管理者に設定して、[追加]を押下します。
image.png

[ユーザーの種類]で特権管理者以外を選択する場合、[ユーザー]タブで設定したユーザグループの権限を継承しますので、詳細に権限を割り与える場合はユーザーグループ側の権限を正しく付与する必要があります。

6.アクションの設定

Zabbix側の設定としては最後となる、アクションの設定を行います。

[設定]-[アクション]から右上の[アクションの作成]を押下します。
image.png

[アクション]タブにて、名前と実行条件を設定します。名前はなんでもよく、実行条件もなんでもよいですが、一般的なメンテナンス期間外警告以上を通知を設定しておきます。
image.png

続いて、[実行内容]タブから[実行内容]-[追加]を押下します。
image.png

[実行内容の詳細]画面にて、[ユーザーに送信]に先ほど作成したユーザを、[次のメディアのみ使用]に作成したメディアタイプを設定します。
image.png

また、[復旧時の実行内容]も同様に設定をしておきます。
#復旧検知可能な監視アイテムについて、復旧時にもアラートが出るようになります。CPU使用率の閾値回復やプロセス停止後の起動検知など。
image.png

実行内容、復旧時の実行内容の両方の設定完了後、[追加]を押下します。
image.png

アクションが追加されました。
image.png

これにて、Zabbix/Slack連携の設定は完了です。

7.Slackへの障害通知連携

最後に、障害発生時のSlack連携内容について確認します。
今回はLinuxサーバのcrondプロセス監視を利用し、crondプロセスを停止することで疑似故障、開始することで疑似回復のアラートを発行します。

7.1 crondプロセス停止

crondプロセスを停止します。

crond_stop
[root@cent79-02 ~]# systemctl stop crond
[root@cent79-02 ~]# systemctl status crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 月 2021-08-30 20:11:51 JST; 26s ago
《中略》

Zabbix側で障害が通知され、アクションが発行されたことが確認できました。
image.png

Slack側でも障害通知が確認できました。
image.png

7.2 crondプロセス開始

crondプロセスを開始します。

crond_start
[root@cent79-02 ~]# systemctl start crond
[root@cent79-02 ~]# systemctl status crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since 月 2021-08-30 20:15:16 JST; 1s ago
《中略》

Zabbix側で障害が解決済になり、アクションが発行されたことが確認できました。
image.png

Slack側でも回復通知が確認できました。
なお、先に通知された障害通知に対し、回復通知が上書きされているため、障害通知の内容自体は消えています。
image.png

参考

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
4
Help us understand the problem. What are the problem?