【Amazon CloudWatch × PagerDuty】障害検知から自動復旧まで!通知連携の設定手順

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

AWS環境でのシステム監視において、標準機能であるAmazon CloudWatchを利用されている方は多いと思います。CloudWatchのアラームは通常メール(SNS)等で通知されますが、運用が大規模になると「大量のメールに埋もれる」「対応状況がわからない」といった課題が発生しがちです。

そこで、インシデント管理ツールであるPagerDutyと連携することで、以下のような運用の一元化・効率化によるメリットが生まれます。

アラートの集約と一元管理
CloudWatchだけでなく、オンプレミスのZabbixやAzureなど、様々な監視ツールからのアラートをPagerDutyに集約できます。

柔軟なオンコール管理
「平日日中は担当者A、夜間休日は担当者B」「15分反応がなければマネージャーへエスカレーション」といった柔軟な通知ルールを、AWS側の設定を変更せずにPagerDuty側だけで管理できます。

ステータスの同期(自動Resolve)
CloudWatchでアラーム状態(ALARM)になったらPagerDutyでインシデント起票、CloudWatchが正常(OK)に戻ったらPagerDutyも自動クローズ(Resolve)、というようにステータスを同期させることで、手動でのチケットクローズ作業をなくすことができます。

今回は、この連携の中核となるCloudWatchからPagerDutyへイベントを送り、自動復旧させる設定にフォーカスして解説します。

 

連携の仕組み

本記事で構築する連携フローは以下の通りです。
CloudWatchのアラーム状態の変化をトリガーに、Amazon SNSへメッセージを送信し、それをPagerDutyのHTTPSエンドポイントが受け取る形になります。

[CloudWatch Alarm] –(状態変化)–> [Amazon SNS] –(HTTPS)–> [PagerDuty] –(通知)–> [運用担当者]

特に重要なのが、障害検知(ALARM) だけでなく 復旧(OK) の通知も送る点です。これによりPagerDuty上のインシデントが自動的に解決済みになります。

 

PagerDuty側の設定

まずは受け皿となるPagerDuty側の設定を行い、通知先となるURLを取得します。

PagerDutyのメニューから [Services] > [Service Directory] を開き、[+ New Service] をクリックします。

 

 

Serviceの名称(例: CloudWatchAlerts)などを入力し、Integrationの設定画面まで進みます。
Integration Typeの選択で、Amazon CloudWatch を検索して選択(チェック)します。
[Create Service] をクリックしてサービスを作成します。

 

サービス作成後に表示される画面で、Integration URLhttps://events.pagerduty.com/integration/xxxxxxxx...)をコピーしておきます。このURLがAWS側からの通知先となります。

 

AWS側の設定(SNSトピックの作成)

次にAWSマネジメントコンソールで、PagerDutyへ通知を送るためのSNSトピックを作成します。

Amazon SNS コンソールを開き、トピックの作成へ進みます。
タイプは スタンダードを選択し、名前(例: pagerduty-cloudwatch-topic)を入力してトピックを作成します。

 

作成したトピックの画面で [サブスクリプションの作成] をクリックします。以下の通り設定し、作成します。

プロトコルHTTPS
エンドポイント: 先ほどPagerDutyで取得した Integration URL を貼り付け

これで、このSNSトピックにメッセージが飛ぶと、自動的にPagerDutyへ連携されるパイプラインが完成しました。
※PagerDutyの連携URLは自動的にサブスクリプションの確認(Confirm)を行うため、手動での承認作業は不要です。

 

AWS側の設定(CloudWatchアラームの設定)

最後に、CloudWatchのアラーム設定で、先ほどのSNSトピックをアクションに指定します。

CloudWatchのアラーム作成(または編集)画面の「アクションの設定」にて、以下の2つの通知を設定します。

① 障害発生時の通知(Trigger)
アラーム状態トリガー: アラーム状態 を選択
SNSトピックの選択: 作成した pagerduty-cloudwatch-topic を選択

② 復旧時の通知(Resolve) ここが自動復旧を実現するための肝となる設定です。
アラーム状態トリガー: OK を選択
SNSトピックの選択: ①と同じ pagerduty-cloudwatch-topic を選択

 

このように「アラーム状態」と「OK状態」の両方で同じPagerDuty連携用トピックへ通知するように設定することで、PagerDuty側がメッセージの内容(AlarmかOKか)を判別し、インシデントの起票とクローズを自動で行ってくれるようになります

 

動作確認

設定が完了したら実際に動作を確認してみましょう。

 

障害発生(Trigger)

対象のメトリクスが閾値を超えるように調整します。

 

CloudWatchアラームが「アラーム状態」になると、PagerDuty上でインシデントが Triggered状態になることを確認できました。

 

自動復旧(Resolve)

その後、CloudWatchアラームを「OK」状態に遷移させます。
すると、PagerDutyのアクティビティログに “Resolved through the integration API” と表示され、インシデントステータスが自動的に Resolved(解決済み) に変わることを確認しました

 

まとめ

Amazon CloudWatchとPagerDutyを連携することで、単なるメール通知では難しかった「インシデントの一元管理」と「ステータスの自動同期」が実現できます。

特にCloudWatchの OKアクション を設定しておくことで、夜間に一時的な高負荷でアラートが鳴ったとしても、負荷が下がれば自動でクローズされるため、運用担当者が手動で「解決済みにする」というオペレーションから解放されます。

Zabbixとの連携と合わせて導入することで、ハイブリッド環境でも迷うことなくPagerDutyだけを見ていれば良い状態を作り出せるため、ぜひ導入を検討してみてください。

 

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

Gemini活用!フローチャートからチャットボット(Amazon Lex)を自動構築してみた
Geminiを活用しExcelからAWS LexのTerraformコードを自動生成する手法を解説。IAMロールや会話分岐の自律的な判断など、AIによる開発効率化の実例を紹介。インフラ構築の工数削減に役立つエンジニア必見の活用術です。
Terraformで実装するAWSファイルストレージ入門:EFSとFSxを構築してみた
Terraformを使い、AWSのファイルストレージであるEFSとFSx for Windowsの構築手順を解説します。Linux/Windowsそれぞれに最適なストレージをIaCでコード管理。インフラ構築の再現性を高め、効率化を実現したい方はぜひご覧ください。
【Amazon Bedrock】ナレッジベースを用いた社内資料管理ーめざせ生産性向上ー
社内資料の管理、効率的ですか?様々な形式の文書が散在し、必要な情報を探すのに時間を取られていませんか? ファイルサーバーの奥底に埋もれどこにあるか分からない、バージョン管理が混乱する、などといった課題を抱えていませんか?これらの非効率は、業務の生産性低下に直結します。 今こそ、社内資料の一元管理体制を見直しましょう!ということで、AWS Bedrockのナレッジベースを用いた資料の一括管理およびその検索方法をご紹介します!
タイトルとURLをコピーしました