DOCS
インテグレーションガイド / Amazon Web Services CloudWatch(AWS CloudWatch

Amazon Web Services CloudWatch(AWS CloudWatch

本記事は米国PagerDuty社のサイトで公開されているインテグレーションガイドをそのまま日本語に翻訳したものです。日本語環境での動作を保証するわけではありません。原文はこちらを参照してください。

Amazon Web Services CloudWatch(AWS CloudWatch)は、AWSリソースとユーザーアプリケーションの監視を提供します。AWSは、データを収集し、洞察を得て、ユーザーにアプリケーションの問題を解決するよう警告します。AWS CloudWatchを使用すると、システム全体のリソースの使用状況を把握でき、任意のメトリックが指定した閾値を超えた場合の通知を設定できます。これらのアラームは、PagerDutyに自動的に送信され、PagerDutyは正しい連絡方法でオンコール担当者に確実に警告します。

以下の手順に従って、PagerDutyとAWS Cloudwatchのインテグレーションを設定してください。ご不明な点やサポートが必要な場合は、support@pagerduty.comまでご連絡ください。

注:CloudSearch、DynamoDB、EBS、EC2、ECS、ElastiCache、ELB、ES、Kinesis、Lambda、ML、Redshift、RDS、SNS、SQS、S3、SWF、StorageGateway、およびWAFからのアラームをサポートしています。 Route53とカスタムメトリックからのアラームはインシデントを作成しますが、詳細は示されません。Auto Scalingメッセージは現在サポートされていません。さらなるカスタマイズをご希望の方は、email integration(訳注:英文です)を参照してください。

PagerDutyでの作業

  1. Configuration メニューからServices を選択します。
  2. 新しいサービスを作成する場合は、 +Add New Service をクリックします。 既存のサービスにインテグレーションを追加する場合は、統合を追加するサービスの 名前をクリックします。 その後、Integrations タブをクリックし、 + New Integration ボタンをクリックします。 RS-Add-New-Service-13
  3. Integration Typeメニューからあなたのアプリを選択し、Integration Name にインテグレーション名を入力します。新しいサービスを作成する場合は、General Settingsで新しいサービスの名前を入力します。 次に、インシデント設定で、新しいサービスのエスカレーションポリシー、通知の緊急性、およびインシデントの動作を指定します。
  4. Add Service またはAdd Integration ボタンをクリックして、新しいインテグレーションを保存します。 すると、サービスのIntegrationsページにリダイレクトされます。 RS-Integration-Settings-11
  5. 新しいインテグレーションのIntegration URLをコピーします。 RS-Integration-URL-3-300x44

AWS SNSコンソールでの作業

  1. SNSコンソールで、Create Topicをクリックします。 cloudwatch-ng-01-300x144
  2. Topic nameDisplay nameを入力し、トピックの作成をクリックします。PagerDutyサービスの名前の後にトピックの名前を付けることができます。 cloudwatch-ng-02-300x134
  3. トピックが作成されたら、Create Subscriptionをクリックします。 cloudwatch-ng-03-300x71
  4. プロトコルにHTTPSが選択されていることを確認します。ステップ3(上記)のSNS Webhook URLEndpointフィールドに貼り付け、Create Subscription をクリックします。
  5. サブスクリプションは自動的に確認されます。 「更新」のアイコンをクリックして、Subscription IDPendingConfirmationでないことを確認します。 cloudwatch-ng-05-300x45
  6. EC2のインスタンスコンソールに移動します。監視したいインスタンスを右クリックして、Add/Edit Alarmsを選択します。 cloudwatch-ng-06-300x212
  7. Create Alarmをクリックします。 cloudwatch-ng-07-300x135
  8. ドロップダウンメニューから通知を選択し、アラームを設定して、Createをクリックします。 cloudwatch-ng-08-300x146
  9. この時点で、アラームがクリティカルアラートを報告したときにPagerDutyでアラートを受信できますが、アラームが解除されてもPagerDutyインシデントは解決になりません。アラームが解除されたときに自動的に解決とするには、インスタンスを右クリックし、Add/Edit Alarmsを再度選択します。 cloudwatch-ng-09-300x212
  10. 以前に作成したアラームが表示されます。More OptionsViewをクリックします。 cloudwatch-ng-10-300x141
  11. アラームを選択し、Modifyをクリックします。 cloudwatch-ng-12-300x219
  12. Modify Alarm画面で、アラームの閾値と設定を確認します。 +Notificationをクリックして、アラーム状態がALARMに達したときに通知を送信する新しいActionを追加します。 cloudwatch-ng-11-300x145
  13. OK状態の通知を追加して、ALARM状態の通知が正しいかどうか確認します。変更を保存することを忘れずに。 cloudwatch-ng-13-300x297
  14. その後、アラームが正常に保存されたことがわかります。 AlarmWasSaved23-300x79
  15. これで、Amazon CloudWatchがPagerDutyにインテグレーションされました。アラームが閾値を超えるとPagerDuty内でインシデントがトリガーされます。 high_cpu-300x191
  16. 16.アラームがOK状態に戻ると、PagerDuty内でインシデントが自動的に解決になります。 cpu_normal-300x190

よくある質問

  1. PagerDutyインシデントにはどのようなアラームステータスが影響しますか?

    ALARMステータスのアラームはインシデントをトリガーし、OKステータスはそれを解決にします。INSUFFICIENT_DATAの状態のアラームは、PagerDutyのインシデントには影響しません。INSUFFICIENT_DATAでインシデントを解決とするには、代わりにemail integration(訳注:英文です)を使用することをお勧めします。

  2. email integrationを使用している場合、PagerDutyサービスの電子メールアドレスを確認するにはどうすればよいですか?

    あなたのサービスのPagerDutyアドレスに確認メールを送信すると、メッセージ本文を表示し、そのアドレスをPagerDutyコンソールから確認することができます。これを行うには、電子メールで作成されたインシデントを見つけ、その詳細を表示して電子メールアドレスを確認します。

    確認へのリンクはインシデントの詳細にあります。 SNSの確認ページにはJavaScriptが必要で、メッセージがレンダリングされるiframe内では実行できません。サブスクリプションを確認するには、確認リンクを右クリックしてして新しいタブまたはウィンドウを開き、Open Link in New Tab/Windowを選択します。

  3. CloudWatchからのイベントの重複を排除するにはどうすればよいですか?

    PagerDutyサービスに移動→Integrationsタブをクリック→Amazon CloudWatch integrationの右側にある歯車をクリック→Editをクリック→Correlate events byオプションの値を変更します。

  4. CloudWatchのイベントがPagerDutyのインシデントをトリガーしないのはなぜですか?

    CloudWatchから正しく送信されなかったイベントは廃棄され、PagerDutyのアラートをトリガーしません。このインテグレーションは、インシデントを発生させるために意味のあるデータをMessageプロパティに持つネストされたJSONエンコードオブジェクトを待機しています。AmazonのSNSメッセージ属性の詳細については、こちらをご覧ください。

    https://docs.aws.amazon.com/sns/latest/dg/sns-message-attributes.html

    AWSには他にもCloudWatchに関するいくつかのトラブルシューティングドキュメントがあります。

    https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CWE_Troubleshooting.html#NeverDeliveredToTarget