【Zabbix × PagerDuty】複数の障害アラートをまとめて「電話は1回だけ」にする実践テクニック

こんにちは、SCSKの坂木です。

ZabbixとPagerDutyを連携させると、障害発生時に電話で通知を受け取れるようになり非常に便利です。しかし、設定を間違えると「深夜にアラートが連発して、電話が鳴り止まない」という大変な事態になります。

今回は、Zabbixから短期間に同じような障害通知が連続して発生した場合でも、PagerDuty側でそれらを「1つのインシデント」としてまとめ、電話通知を「1回」に抑える方法を解説・検証します。

 

検証構成

今回の構成は以下の通りです。

[Zabbix] —-(Webhook)—-> [PagerDuty] —-(電話通知)—-> [運用担当者]

ZabbixとPagerDutyの基本的な連携(Integration Keyの設定など)は完了している前提で進めます。
ZabbixとPagerDutyの基本的な連携はこちらに記載してますので、未設定の方は参考にしてください。

 

電話通知の設定

PagerDuty側で電話番号を登録します。

1. PagerDuty画面右上のアイコンから [My Profile] を選択。

2. [Contact Information] に電話番号を登録します。

 

3.  [Notification Rules] タブで以下のように、緊急度の高いインシデントのみ電話通知するよう設定します。

High Urgency(緊急度:高): Email と 電話
Low Urgency(緊急度:低) : Emailのみ(電話は設定しない)

 

Service Orchestrationの設定

Zabbixから送られてきた全ての障害通知に対して電話通知すると、電話が鳴りやまないという状況になります。そのため、送られてくる障害情報に応じて緊急度を振り分け、電話通知するかしないかを判断する必要があります。

今回は特定のホストからの通知であれば高い緊急度にして電話通知されるように設定します。(前章で出てきた、High Urgencyに振り分けられるようにします)

1. 対象の Service を選択し、[Settings] タブを開きます。

2. [Service Orchestrations] セクションを探し、ルールを新規作成(New Rule)します。

ルールの設定内容

条件(Condition)     : event.source matches part ‘<対象のホスト名>’ (今回は testhost でフィルタリング)
アクション (Actions): Set severity to error / critical 

今回条件は1つですが、電話通知させたい条件を追加する場合は下の [+] を押して複数の条件を設定できます。

 

それ以外(Fallback Behavior)の設定

「上記のルールに当てはまらないもの(=重要じゃないホスト)」のアクションを以下のように設定します。

Alert Behavior: Set alert severity to warning / info

 

Assign and Notifyの設定

ここで対象Serviceの [Settings] タブにある [Assign and Notify] セクションを確認してください。

この設定により、ルールで判定された Severity: Critical/ErrorHigh Urgency(電話通知) Severity: Warning/Info
Low Urgency(メール通知) に自動的に変換されます。

 

これで、testhostからの障害通知は High Urgency それ以外は Low Urgency という自動振り分けの仕組みが完成しました。

 

Alert Groupingの設定(Service Settings)

重要サーバの障害であっても、1分間に10回も電話がかかってきては対応できません。

そこで、Zabbixから送られてくるアラートについて関連するものはまとめる設定に変更します。

1. Zabbixを連携させている Service を開き、[Settings] タブをクリック。

2. [Reduce Noise] セクションにある [Automatically group alerts by similarities in alert summaries, historic alert patterns and   past merged alerts.] を選択し、後続の類似アラートを同一インシデントとしてまとめる期間を指定します。
(今回の検証では5分として設定しました。)

 

検証その1

それでは、実際に障害を発生させて挙動を確認します。

Zabbixサーバから、特定ホストの障害アラートを短期間で十数件送信します。

 

実行結果

① スマホへの着信確認

携帯電話には、1回だけ 自動音声の電話がかかってきました

 

② PagerDuty上の表示確認

PagerDutyのインシデント一覧を確認すると、作成されたインシデントは 1件だけ でした。

 

Zabbixから送った複数の障害通知をPagerDuty側でひとつに集約でき、電話回数も集約した1回のみになることを確認しました。

 

Service Orchestrationの応用:アラートの「数」で緊急度を動的に変える

ここでは、さらに一歩進んだ設定を行います。

特定のサーバ(testhost)からの通知は、普段はメールだけでいいけれど、短期間に大量のエラーを吐いた時だけは電話を鳴らしてほしい という、「量」に応じた動的な通知コントロールを実現します。

これを実現するために、PagerDutyの Service Orchestration Rules を使用します。

 

手順①:対象ホストのSeverityを下げる(親ルール)

先ほど設定した特定のホスト(今回は testhost)からの通知を、Warning(電話を鳴らさない)設定にします。

条件(Condition)     : event.source matches part ‘<対象のホスト名>’
アクション (Actions): Set Severity to warning

これで、testhost からのアラートは、通常時に「Low Urgency」として扱われ、メールのみ(電話なし)となります。

 

手順②:閾値を超えたらSeverityを上げる(子ルール)

次に、この親ルールの隣にある [+] ボタンを押し、子ルールを追加します。ここで「数」をカウントします。
今回は1分間で100件以上の通知があった場合に、critical(電話あり)となる設定とします。

条件(Condition)     : trigger_count over 1 minutes > 100
アクション (Actions): Set Severity to critical

この設定により、testhostからの通知であり(親ルール)、かつ、短時間で大量のアラートが来ている(子ルール) 場合のみ、強制的に緊急度が高(Critical)になり、電話が鳴るようになります。

 

検証その2

実際に testhost からアラートを飛ばして挙動を確認します。

 

検証パターンA:電話なし

まずは、testhost から障害通知を数十件送信します。

【結果】

PagerDutyの判定: Low
通知      : メール通知のみ届きました

期待通りです。単発的なエラーや一時的な揺らぎであれば、担当者を叩き起こすことはありません。

 

検証パターンB:電話あり

次に、testhost から1分間以内に100件以上の障害通知を送信します。

【結果】

PagerDutyの判定: High
通知      : 電話とメールの両方から通知が届きました

 

まとめ

今回の検証で、ZabbixとPagerDutyを組み合わせることで、大量のアラート通知を適切に制御できることが確認できました。

重要なポイントは以下の3点です。

  1. Service Orchestration: ホスト名や発生頻度に応じて、電話通知の要否を自動で判断する。
  2. Alert Grouping: 短期間に連続するアラートを1つのインシデントに集約し、電話通知回数を最小限に抑える。
  3. Assign and Notify: SeverityとUrgencyを正しく連動させる設定を有効にする。

Zabbix側で複雑な通知条件を作り込むよりも、PagerDuty側で集約ルールを管理する方が、柔軟でメンテナンスも容易です。 担当者の負荷を軽減しつつ、重要な障害検知を確実に行う運用フローとして、ぜひ活用してみてください。

 

▼ Zabbixに関するおすすめ記事

【Zabbix】UserParameterでスクリプト実行結果を監視する方法
ZabbixのUserParameter設定ガイド。独自の監視項目を追加する方法、引数を使ったコマンドの使い回し、system.runとの違いを具体例で紹介。監視業務を効率化したい方はぜひ。
【Zabbix】system.runでスクリプト実行結果を監視する方法
Zabbixのsystem.run設定方法をステップバイステップで解説。標準アイテムにないカスタム監視を実現するため、zabbix_agentd.confの修正、安全なAllowKeyの使い方、スクリプトの権限設定までを網羅。初心者でも安心のガイドです。

 

弊社ではZabbix関連サービスを展開しています。以下ページもご参照ください。

★Zabbixの基礎をまとめたeBookを公開しております!★

Zabbix資料ダウンロード|SCSK Plus サポート for Zabbix
Zabbix監視構築に必要な知識と最新機能についての資料をダウンロードできるページです。世界で最も人気のあるオープンソース統合監視ツール「Zabbix」の導入構築から運用保守までSCSKが強力にサポートします。

 

★SCSK Plus サポート for Zabbix★

SCSK Plus サポート for Zabbix
世界で最も人気のあるオープンソース統合監視ツール「Zabbix」の導入構築から運用保守までSCSKが強力にサポートします。

 

★SCSK Zabbixチャンネル★

SCSK Zabbixチャンネル
SCSK Zabbixチャンネルでは、最新のZabbixトレンドや実際の導入事例を動画で解説。明日から使える実践的なノウハウを提供します。 今すぐチャンネル登録して、最新情報を受け取ろう!

 

★X(旧Twitter)に、SCSK Zabbixアカウントを開設しました!★

https://x.com/SCSK_Zabbix
著者について

保有資格:健康マスター, FP3級
健康リテラシーと金融リテラシーの高さが強みのエンジニアです

坂木をフォローする

クラウドに強いによるエンジニアブログです。

SCSKでは、自社クラウドと3大メガクラウドの強みを活かし、ハイブリッドクラウド/マルチクラウドのソリューションを展開しています。業界の深い理解をもとに、お客様の業務要件に最適なアーキテクチャをご提案いたします。サービスサイトでは、お客様のDX推進をワンストップで支援するサービスの詳細や導入事例を紹介しています。

Zabbixソリューションプロダクト運用・監視
シェアする
タイトルとURLをコピーしました