Zabbixには情報を伝えるメディアとしてmailの他にslack、Rocket.Chat、Redmineとかも使える.

ここでは Zabbix から slack を経由して利用者に通視させるようにしてみたいと思う

参照先
https://www.zabbix.com/integrations/slack
https://qiita.com/Higemal/items/f0bc18bf66e54628b22a

下準備

ブラウザでslackにログインして、https://api.slack.com/appsにアクセスします
下記画面になりますが、ここで「Create an App」をクリックします
2022y05m08d_063941248.png
「Create an app」画面が表示され、ここの「From scratch」をクリックします
2022y05m08d_064130938.png
次に表示された「Name app & choose workspace」にて
「App Name」にはBot名、ここでは「zabbix_bot」と定義
「Pick a workspace to develop your app in:」はプルダウンで選べる参加しているslackのワークスペース名を指定します. 「Create App」を押下します.
「abc.slack.com」の「abc」に該当する部分
2022y05m08d_064502896.png
次に作ったAPI画面に移り、左メニューの「OAuth & Permissions」リンクをクリックします
2022y05m08d_065546528.png
右側には「OAuth & Permissions」の設定項目が表示されます。それを下段にスクロールします
2022y05m08d_071331361.png

下段にスクロールして「Scopes」セクションにて「Bot Token Scopes」欄にある「Add on OAuth Scope」ボタンを押下します.
2022y05m08d_071714456.png

リストが現れるが、ここで「chat:write」「im:write」「groups:write」の三つを選びます. 「Add on OAuth Scope」をクリックして表示されたメニューから1つ選び、それを三回行います
2022y05m08d_072022796.png

選び終えたら、上段側へスクロールして、「OAuth Tokens for Youe Workspace」セクションにある「Install to Workspace」ボタンを押下します.
2022y05m08d_072335870.png

画面が変わって確認ページが表示されます. ここで「許可する」をクリックします.
2022y05m08d_072821485.png
この段階でSlack画面の左メニューに「App」フォルダが用意されます.
2022y05m08d_075404240.png

slack_botが書き込むチャンネルを用意する

Slackの画面内で「+チャンネルを追加する」をクリックして、メニューから「新しいチャンネルを作成する」を選ぶ
2022y05m08d_074312739.png
現れた「チェンネルを作成する」で名前は「zabbix」、説明は「zabbixからのお知らせ」とかにして「作成」を押下します
2022y05m08d_074612905.png
作成する「#zabbix」チャンネルへの参加ユーザを決めるのですが、zabbixの利用者あるいは全員を追加します.
2022y05m08d_074948169.png
Slackの画面でチャンネルが増えました. 次に、このチャンネルとAppを繋げます. 作った「# zabbix」を選択して、右クリックから「チャンネル詳細を開く」を選択します
2022y05m08d_075930607.png
開いた「# zabbix」から「インテグレーション」タグを選択して、「App」欄から「アプリを追加する」を選びます
2022y05m08d_080249953.png
画面が変更して「# zabbix にアプリを追加する」画面から「ワークスペース内で(1)」の「zabbix_bot」の左にある「追加」ボタンを押下します
2022y05m08d_080435479.png
これで slack 側の設定は完了みたい.

slackのチャンネルはワークスペースを作った本人が削除、名称変更できる

zabbix側の設定

設定箇所は [管理]->[メディアタイプ] で、「Slack」をクリックします
2022y05m08d_081720524.png
メディアタイプの名前を「Slack」から「Slack-zabbix-bot」にして、画面下部の「複製」ボタンを押下します
2022y05m08d_081955474.png
その後に画面下部の「追加」ボタンを押下します.
これでメディアタイプに「Slack-zabbix-bot」が追加されました. 既存の「Slack」項目をテンプレートとして汚した良くないので
2022y05m08d_082415625.png

この新しく作ったメディアタイプ「Slack-zabbix-bot」を設定します.
必要なのは「bot_token」の値. この値は slack APIサイトから得られます.
skackにログインしたままhttps://api.slack.com/appsにアクセスします
すると先ほど作ったAppの「zabbix_bot」がある. これをクリックします.
2022y05m08d_082740826.png
メニューが「zabbix-bot」Appに移り、左メニューから「OAuth & Permissions」を選択します. そうするとその左側に
必要なTokenが表示されます. これをコピーします.
2022y05m08d_083227136.png

zabbixの画面に戻り、先ほどコピーしたTokenを「zabbix_bot」に記載して、画面下部の「更新」ボタンを押下します
2022y05m08d_083706295.png

メディアタイプのリストに戻り、作った「Slack-zabbix-bot」のテストを行ってみます. 欄の右側「テスト」をクリックして
bot_tokenは「メディアタイプ」で定義した値が入りますが、その他「channel」はslack内でのチャンネルで定義した「zabbix」で、
あと「event_id」を「1」に、「event_source」も「1」に、そして「zabbix_url」を「http://zabbix/zabbix/」として「テスト」を押下します
2022y05m08d_084143222.png

すると、slackの「# zabbix」チャンネルに下図のような表示が入ります
2022y05m08d_084334238.png

一応これで連携はできたと.

メディアタイプ「Slack-zabbix-bot」の微調整

どうも「bot_token」だけではダメなようで、規定値として
event_idの{EVENT.ID}を「1」へ
event_sourceの{EVENT.SOURCE}も「1」へ
zabbix_urlの{$ZABBIX.URL}を「http://zabbix/zabbix/
event_nseverity/{EVENT.NSEVERITY}を1
event_tags/{EVENT.TAGSJSON}を1
event_update_status/{EVENT.UPDATE.STATUS}を1
event_value/{EVENT.VALUE}を1
trigger_id/{TRIGGER.ID}を1
に変更

監視対象をshutdownさせてslackに通知が来るようにしてみる

Zabbix/sample1の想定のようにAdminのみしかいないとして、[管理]->[ユーザ]にてAdminの「メディア」を修正します.
既存の内容は削除して、新に追加でタイプは「Slack-zabbix-bot」、連絡先はslackのチャンネルのようなので「zabbix」とします
2022y05m08d_090453313.png
[設定]->[アクション]->[トリガーアクション]で定義していた「テストアクション」を修正して実行内容で
メディアを「Slack-zabbix-bot」に変更した.
2022y05m08d_092409566.png
結果トリガーアクションは下記のようになった
2022y05m08d_092628837.png
その上で監視対象のノードをshutdownしてみた.

こんな感じでメッセージが届く
2022y05m08d_102703768.png

文章のフォーマットは[管理]->[メディアタイプ]の「Slack-zabbix-bot」内「メッセージテンプレート」で変更可能っぽい


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2022-05-08 (日) 10:29:21 (49d)