グローディアのサービス一覧はこちら
 

外部スクリプト不要!Zabbix管理画面でMattermost連携を完結させる方法

皆様初めまして。
4月に入社しましたビジネス・ソリューション部の黒松です。

IT業界未経験でグローディアに入社してから2か月という浅い経験の中で
上司と先輩のサポートのもと、ZabbixでのESXiホストの監視設定を行いました。

その中でも今回のブログでは「Mattermost連携」に焦点を当ててご説明します。
特に、「サーバへのログインが不要」「専用のbotも不要(内向きWebhook URLを用意するだけ)」
というような、面倒な手間を省いた設定手順をお伝えします!

検証結果

まず最初に実際の通知画面をお見せします。

これからご説明する簡単な設定で上記の画像のような通知を行うことができます。

検証環境

  • 監視サーバ:Zabbix5.0
  • 監視対象 :ESXiホスト
  • 監視項目 :CPU、メモリ、ディスクそれぞれの使用率

    設定の流れ

    大まかな設定の流れは以下の通りです。

    1.メディアタイプ設定
    2.ユーザー設定
    3.アクション設定

    設定手順

    1.メディアタイプ設定

    まず、Mattermostに通知するためのメディアタイプを編集します。
    今回はこちらでカスタマイズしたものをご提供します。

    ZabbixのデフォルトのMattermost設定では今回の通知のようにならず、専用のbotが必要ですが、
    今回は内向きWebhook URLのみで通知することが可能となっております。

    ※カスタマイズの内容
    ・パラメータ   :スクリプト作成に必要な項目のみ設定
    ・スクリプト   :Webhook URLのみで通知ができるように設定、通知レイアウトも編集
    ・メッセージタイプ:通知に必要な項目を追加

    以下にソースコードを記載しておりますので、コピーしてご使用ください。

    ※文字コード「UTF-8」で「xml形式」で保存してください。

    ●「管理」⇒「メディアタイプ」⇒「インポート」

    ●「ファイルを選択」⇒保存したxmlファイルをアップロード⇒「インポート」

    ●追加された「Mattermost_Custom」を選択

    ●Mattermost_Customの設定内容を編集⇒「更新」
    ・パラメータ:「channel」と「icon_url」を入力
    ・スクリプト:71行目に指定のWebhook URLを記入

    (補足)
    スクリプト内の39行目から47行目にかけての「event_severity」と
    比較している文字列はZabbix上のトリガー深刻度とマッチさせる必要があります。


    ※Zabbixのデフォルトでは英語で設定されており、今回は以下のように日本語に書き換えています。

    ●メディアタイプ一覧画面に戻り、Mattermost_Custom行の「テスト」を押すと以下のポップアップが表示されます。
    「subject」に「PROBLEM:」「RESOLVED:」「UPDATED:」のいずれかを入力⇒「テスト」

    ●以下のようにMattermostの指定チャンネルにテスト通知が来れば設定完了です。
    ・障害発生通知「PROBLEM:」の場合

    ・復旧通知「RESOLVED:」の場合

    ・更新通知「UPDATED:」の場合
    (補足)
    更新通知は、ほかのユーザーが障害情報を手動で更新した際の通知を指します。
    障害の深刻度が変化したことによる通知ではないことに注意してください。
    (Zabbix標準機能による障害深刻度の変化を通知する仕掛けは実現が難しいそうです…)


    例えば、新たに「test」ユーザー(権限:特権管理者)を作成してサインインを行い、
    発生している障害を「確認済み」などの更新を実行すると通知が届きます。
    今回の設定において、障害が「致命的な障害」から「重度の障害」に変化した場合の通知順序は
    ①「致命的な障害」が発生 ⇒ ②「重度の障害」が発生 ⇒ ③「致命的な障害」が復旧、となります。

    メディアタイプの設定は以上です。

    2.ユーザー設定

    続いて、設定したMattermostのメディアタイプを指定のユーザーに追加します。
    今回は「Admin」ユーザーに追加します。

    ●「管理」⇒「ユーザー」⇒「Admin」を選択

    ●「メディア」にMattermost_Customを追加
    ・タイプ:「Mattermost_Custom」
    ・送信先:「Mattermost_Custom(任意の名前)」

    ●「メディア」にMattermost_Customが追加されていることを確認⇒「更新」

    3.アクション設定

    最後に、Mattermostへ「障害発生」「復旧」「更新」を通知させるための
    アクションの実行内容を設定します。

    ●「設定」⇒「アクション」⇒「アクションの作成」

    ●「アクション」タブ⇒「名前」に任意の名前を記入⇒「実行条件」の「追加」⇒「有効」にチェック
     ※新規条件は以下のように設定
     ・タイプ  :「トリガーの深刻度」
     ・オペレータ:「以上」
     ・深刻度  :「未分類」

    ●「実行内容」タブ⇒「実行内容」の「追加」⇒「詳細」を以下のように設定
    ・実行内容のタイプ   :「メッセージの送信」
    ・ユーザーグループに送信:「Zabbix administrators」
    ・次のメディアのみ使用 :「Mattermost_Custom」

    ●「復旧時」「更新時」ともに、「障害通知送信済みのユーザーすべてにメッセージを送信」を選択して「追加」

    ●設定した内容を確認⇒「追加」

    以上で設定は終了となります。

    おわりに

    今回の記事はここまでとなります。

    Slack連携の場合は、メディアタイプ設定手順の
    パラメータ「channel」、
    スクリプト内の「Webhook URL」を
    Slackの物に読み替えて頂くだけで利用できます。
    ※但し、icon_urlはslackでは動作しませんので、アイコンを変えたい場合は
     Slack側で変更する必要があります。

    またvSphere APIでZabbixで監視するためには
    テンプレートやLLD(ローレベルディスカバリ)、アイテムキーなどの作成が必要となりますので
    そちらは日を改めて書いていきたいと思います。

    最後まで閲覧頂きありがとうございました。
    本記事がZabbix設定で苦戦されている方にとって少しでもお役に立てれば幸いです。