#author("2022-05-08T01:27:23+00:00","default:sysosa","sysosa") #author("2022-05-08T01:29:21+00:00","default:sysosa","sysosa") Zabbixには情報を伝えるメディアとしてmailの他にslack、Rocket.Chat、Redmineとかも使える. ここでは Zabbix から slack を経由して利用者に通視させるようにしてみたいと思う 参照先 [[https://www.zabbix.com/integrations/slack>+https://www.zabbix.com/integrations/slack]] 様 [[https://qiita.com/Higemal/items/f0bc18bf66e54628b22a>+https://qiita.com/Higemal/items/f0bc18bf66e54628b22a]] 様 ***下準備 [#zcc99535] ブラウザでslackにログインして、[[https://api.slack.com/apps>+https://api.slack.com/apps]]にアクセスします 下記画面になりますが、ここで「Create an App」をクリックします &ref(2022y05m08d_063941248.png,nolink); 「Create an app」画面が表示され、ここの「From scratch」をクリックします &ref(2022y05m08d_064130938.png,nolink); 次に表示された「Name app & choose workspace」にて 「App Name」にはBot名、ここでは「zabbix_bot」と定義 「Pick a workspace to develop your app in:」はプルダウンで選べる参加しているslackのワークスペース名を指定します. 「Create App」を押下します. &size(10){「abc.slack.com」の「abc」に該当する部分}; &ref(2022y05m08d_064502896.png,nolink); 次に作ったAPI画面に移り、左メニューの「OAuth & Permissions」リンクをクリックします &ref(2022y05m08d_065546528.png,nolink); 右側には「OAuth & Permissions」の設定項目が表示されます。それを下段にスクロールします &ref(2022y05m08d_071331361.png,nolink); 下段にスクロールして「Scopes」セクションにて「Bot Token Scopes」欄にある「Add on OAuth Scope」ボタンを押下します. &ref(2022y05m08d_071714456.png,nolink); リストが現れるが、ここで「chat:write」「im:write」「groups:write」の三つを選びます. &size(10){「Add on OAuth Scope」をクリックして表示されたメニューから1つ選び、それを三回行います}; &ref(2022y05m08d_072022796.png,nolink); 選び終えたら、上段側へスクロールして、「OAuth Tokens for Youe Workspace」セクションにある「Install to Workspace」ボタンを押下します. &ref(2022y05m08d_072335870.png,nolink); 画面が変わって確認ページが表示されます. ここで「許可する」をクリックします. &ref(2022y05m08d_072821485.png,nolink); この段階でSlack画面の左メニューに「App」フォルダが用意されます. &ref(2022y05m08d_075404240.png,nolink); ***slack_botが書き込むチャンネルを用意する [#gabdf6ae] Slackの画面内で「+チャンネルを追加する」をクリックして、メニューから「新しいチャンネルを作成する」を選ぶ &ref(2022y05m08d_074312739.png,nolink); 現れた「チェンネルを作成する」で名前は「zabbix」、説明は「zabbixからのお知らせ」とかにして「作成」を押下します &ref(2022y05m08d_074612905.png,nolink); 作成する「#zabbix」チャンネルへの参加ユーザを決めるのですが、zabbixの利用者あるいは全員を追加します. &ref(2022y05m08d_074948169.png,nolink); Slackの画面でチャンネルが増えました. 次に、このチャンネルとAppを繋げます. 作った「# zabbix」を選択して、右クリックから「チャンネル詳細を開く」を選択します &ref(2022y05m08d_075930607.png,nolink); 開いた「# zabbix」から「インテグレーション」タグを選択して、「App」欄から「アプリを追加する」を選びます &ref(2022y05m08d_080249953.png,nolink); 画面が変更して「# zabbix にアプリを追加する」画面から「ワークスペース内で(1)」の「zabbix_bot」の左にある「追加」ボタンを押下します &ref(2022y05m08d_080435479.png,nolink); これで slack 側の設定は完了みたい. &size(10){slackのチャンネルはワークスペースを作った本人が削除、名称変更できる}; ***zabbix側の設定 [#t140b9ea] 設定箇所は [&color(orangered){管理};]->[メディアタイプ] で、「Slack」をクリックします &ref(2022y05m08d_081720524.png,nolink); メディアタイプの名前を「Slack」から「Slack-zabbix-bot」にして、画面下部の「複製」ボタンを押下します &ref(2022y05m08d_081955474.png,nolink); その後に画面下部の「追加」ボタンを押下します. これでメディアタイプに「Slack-zabbix-bot」が追加されました. &size(10){既存の「Slack」項目をテンプレートとして汚した良くないので}; &ref(2022y05m08d_082415625.png,nolink); この新しく作ったメディアタイプ「Slack-zabbix-bot」を設定します. 必要なのは「bot_token」の値. この値は slack APIサイトから得られます. skackにログインしたまま[[https://api.slack.com/apps>+https://api.slack.com/apps]]にアクセスします すると先ほど作ったAppの「zabbix_bot」がある. これをクリックします. &ref(2022y05m08d_082740826.png,nolink); メニューが「zabbix-bot」Appに移り、左メニューから「OAuth & Permissions」を選択します. そうするとその左側に 必要なTokenが表示されます. これをコピーします. &ref(2022y05m08d_083227136.png,nolink); zabbixの画面に戻り、先ほどコピーしたTokenを「zabbix_bot」に記載して、画面下部の「更新」ボタンを押下します &ref(2022y05m08d_083706295.png,nolink); メディアタイプのリストに戻り、作った「Slack-zabbix-bot」のテストを行ってみます. 欄の右側「テスト」をクリックして bot_tokenは「メディアタイプ」で定義した値が入りますが、その他「channel」はslack内でのチャンネルで定義した「zabbix」で、 あと「event_id」を「1」に、「event_source」も「1」に、そして「zabbix_url」を「http://zabbix/zabbix/」として「テスト」を押下します &ref(2022y05m08d_084143222.png,nolink); すると、slackの「# zabbix」チャンネルに下図のような表示が入ります &ref(2022y05m08d_084334238.png,nolink); 一応これで連携はできたと. ***メディアタイプ「Slack-zabbix-bot」の微調整 [#f1d3bbb9] どうも「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に通知が来るようにしてみる [#e7041808] [[Zabbix/sample1]]の想定のようにAdminのみしかいないとして、[&color(orangered){管理};]->[ユーザ]にてAdminの「メディア」を修正します. 既存の内容は削除して、新に追加でタイプは「Slack-zabbix-bot」、連絡先はslackのチャンネルのようなので「zabbix」とします &ref(2022y05m08d_090453313.png,nolink); [設定]->[アクション]->[トリガーアクション]で定義していた「テストアクション」を修正して実行内容で メディアを「Slack-zabbix-bot」に変更した. &ref(2022y05m08d_092409566.png,nolink); 結果トリガーアクションは下記のようになった &ref(2022y05m08d_092628837.png,nolink); その上で監視対象のノードをshutdownしてみた. こんな感じでメッセージが届く &ref(2022y05m08d_102703768.png,nolink); 文章のフォーマットは[&color(orangered){管理};]->[メディアタイプ]の「Slack-zabbix-bot」内「メッセージテンプレート」で変更可能っぽい