Zabbix5.0のメディア設定について

投稿者: | 2020-10-23

前回はZabbixのホスト、ホストグループを中心に解説しました。今回はZabbixで障害等が発生した時の通知するメディアの設定について解説していきます。

メディアの設定について

Zabbixで障害等が発生した際に通知を行うには、Zabbixのメディアタイプの設定とユーザーのメディアの設定、アクションの作成が必要です。Zabbixでは、デフォルトで24種類のメディアタイプが用意されています。メールやSMS通知に加え、Slack等のチャットツールにも通知できます。

Zabbixの通知は、複数のメディアを組み合わせることもできます。例えば、警告以上の障害をメールに通知し、情報以下の通知をSlackに通知する、ということもできます。

メディアの設定は障害を素早く検知するために重要なため、よく使われるメディアの設定方法は覚えておきましょう。

メールへの通知

Zabbixの障害等を指定したメールアドレスに通知するには、始めにメールサーバの設定が必要です。メールサーバの設定は、Zabbixのダッシュボードの「管理 > メディアタイプ」から「Email」をクリックします。

メールサーバの各種情報を入力し「更新」をクリックします。今回はデフォルトの設定値としていますが、実際にあるメールサーバやフリーメールのSMTPサーバを設定してください。

メールサーバの設定後、障害時にメールを送信するアクションを作成します。Zabbixのダッシュボードの「設定 > アクション」から「アクションの作成」をクリックします。

アクションの名前を設定します。今回は「Report problems to Email」とします。

次に「実行内容」をクリックし、通知を送るZabbixユーザーまたはユーザーグループを設定します。今回はAdminユーザーに通知を送るため、以下のとおりに設定します。

実行内容の設定後、「復旧時の実行内容」も設定します。今回は同じAdminユーザーに通知を送るため、以下のとおりに設定します。

実行内容の追加後、「追加」をクリックし、アクションが追加されたことを確認します。

次に、個別のユーザー設定から通知するメディアの設定を行います。Zabbixのダッシュボードの「ユーザー設定」から「メディア」をクリックし、通知する内容を追加します。今回は警告以上の障害をメールで通知するように設定します。送信先のメールアドレスは通知を行いたいメールアドレスを入力します。

通知先の設定後、「更新」をクリックし、送信先が追加されたことを確認します。

以上でメールの設定は終了となります。動作確認を行う場合は、監視対象のサーバを一度シャットダウンする等、何かしらの障害を起こし、以下のようなメールが届けば成功です。

Slack、Discordへの通知

Zabbixでは、メールだけではなくチャットツールに障害等を通知できます。今回はSlackとZabbix5.0で追加されたDiscordへの通知について解説します。

■Slackへの通知

Zabbix5.0からSlackへの障害等の通知方法が少し変更があります。Zabbix4.xまではIncoming Webhooksを追加する方法でしたが、Zabbix5.0からBotを使用する方法となっています。

初めに、Slack側で通知用のチャンネルを作成します。今回は「zabbix-notification」というチャンネルを作成します。

チャンネル作成後、Slack APIのページにアクセスします。

・Slack API

https://api.slack.com/

右上の「Your Apps」から「Create an App」をクリックします。

Appの名前とWorkspaceを入力し「Create App」をクリックします。WorkspaceはZabbixの通知用チャンネルを作成したWorkspaceを選択します。

App作成後、「Bots」を選択します。

Bots選択後、左側の「OAuth & Permissions」から、Scopeの「Add an OAuth Scope」をクリックし、「chat:write」を追加します。

追加後、上部の「Install App to Workspace」をクリックします。Botを許可するかどうかを聞かれるため「Allow」をクリックします。

トークンのURLが表示されるためコピーしておきます。

Slack API作成後、Zabbixのダッシュボードの「管理 > メディアタイプ」から「Slack」を選択し、「bot_token」の「<PLACE YOUR KEY HERE>」部分にコピーしたトークンURLを貼り付けます。

「bot_token」の設定後、「更新」をクリックし、メディアタイプが設定できたことを確認します。

メディアタイプの設定後、Slackへ通知を行うアクションの作成します。メールと同様に「設定 > アクション」から「アクションの作成」を選択します。今回は「Report problems to Slack」という名前とし、実行内容は以下のとおりとします。

アクションの作成後、ユーザーにSlackへ通知を行うように設定します。「ユーザー設定」から「メディア」を選択し、送信先にZabbix通知用のチャンネルを入力します。今回はSlackに通知するように設定します。

設定完了後「更新」をクリックし、ユーザー設定が更新されたことを確認します。

メディアの設定後、Zabbixのグローバルマクロを追加します。Zabbixのダッシュボードの「管理 > 一般設定」から上部の矢印で「マクロ」を選択します。「追加」をクリックし、マクロに「{$ZABBIX.URL}」、値に「http://サーバのIPアドレス or ホスト名」(Zabbixダッシュボードのトップ画面のURL)を入力し「更新」をクリックします。

マクロが追加されたことを確認します。動作確認を行う場合は、監視対象のサーバを一度シャットダウンする等、何かしらの障害を起こし、Slackに以下のような通知が届けば成功です。

■Discordへの通知

Zabbix5.0からメディアタイプにDiscordが追加され、Slackと同様にDiscordへ通知を行うことができます。

初めにDiscordでZabbix用のテキストチャンネルを作成します。今回は「zabbix-notification」というチャンネルを作成します。

チャンネル作成後、「チャンネルの編集 > 連携サービス」から「ウェブフックの作成」をクリックします。

Webhookのお名前に「Zabbix-bot」と入力し「変更を保存する」をクリックします。保存後、「ウェブフックURLをコピー」からURLをコピーします。

DiscordでWebhookの作成後、Discordへ通知を行うアクションを作成します。Slackと同様に「設定 > アクション」から「アクションの作成」を選択します。今回は「Report problems to Discord」という名前とし、実行内容は以下のとおりとします。

アクションの作成後、ユーザーにDiscordへ通知を行うように設定します。「ユーザー設定」から「メディア」を選択し、送信先にWebhookのURLを入力します。今回はDiscordに情報のみを送付するように設定します。

メディアの設定後、Zabbixのグローバルマクロを追加します。Zabbixのダッシュボードの「管理 > 一般設定」から上部の矢印で「マクロ」を選択します。「追加」をクリックし、マクロに「{$ZABBIX.URL}」、値に「http://サーバのIPアドレス or ホスト名」(Zabbixダッシュボードのトップ画面のURL)を入力し「更新」をクリックします。

マクロが追加されたことを確認します。動作確認を行う場合は、監視対象のサーバを一度シャットダウンする等、何かしらの障害を起こし、Discordに以下のような通知が届けば成功です。