Amazon CloudWatch Syntheticsについてまとめてみた

2021.09.25

こんにちは、CX事業本部 IoT事業部の若槻です。

今回は、Amazon CloudWatch Syntheticsについて基本的な事項をまとめてみました。

CloudWatch Syntheticsとは

CloudWatch Syntheticsは、WebページやAPIエンドポイントに対するSynthetic Monitoringを設定、自動実行できるマネージドサービスです。

Syntheticには「統合的な」「合成の」「人工的な」「模擬の」といった意味があり、Synthetic MonitoringはユーザーによるWebアクセスを模倣して実行しエンドポイントの可用性やレイテンシーなどを監視して、実際のエンドユーザーよりも早くシステムの問題を検出するための監視手法です。

Canary

CloudWatch SyntheticsではCanaryというリソースを作成して監視を行います。CanaryはNode.jsまたはPythonランタイムのLambda関数を作成してスクリプトを実行します。CanaryはNode.jsではPuppeteer、PythonではSeleniumを使用してChromium(ヘッドレスブラウザ)を操作し、指定されたエンドポイントURLにアクセスして監視を行います。

Canaryのスクリプトはフォーマットを使用すれば監視対象のURLを指定するだけで簡単に作成可能です。また自分でカスタムなスクリプトも作成可能です。

Canaryの実行結果、統計情報

CloudWatchのマネジメントコンソールからCanaryの個別の実行結果や統計情報を確認することができます。

複数のステップを設けることにより、一度のCanary実行で複数のエンドポイントを監視できます。既定では1実行1ステップです。ステップごとの監視結果を確認できます。

指定のタイミングでスクリーンショット取得も可能です。

Canaryのスクリプト実行のログも確認できます。Canaryが異常終了した際に調査を行うことができます。

Webサイトをブラウザで開いた際のHAR(HTTP Archive)ファイルも確認できます。各通信ごとのステータスやレイテンシーを確認できます。

スクリーンショット、ログ、HARファイルはアーティファクトとしてCanary作成時に指定したS3バケットにアップロードされます。(既定で30日間保管)

Canaryの発行するメトリクスとアラーム通知

Canaryは実行後に次のようなメトリクスをCloudWatchSynthetics名前空間に発行します。

  • SuccessPercent
  • Duration
  • 2xx
  • 4xx
  • 5xx
  • Failed
  • ほか

可視化されたメトリクスはCanaryのコンソールからも確認できます。

これらのメトリクスに対してCloudWatch Alarmを設定することにより、Canary実行結果に応じてアラーム発生や通知を実装することができます。

アラーム通知の実装や動作に関しては下記エントリも合わせて参照ください。

ビジュアルモニタリング機能

Canaryでビジュアルモニタリングを設定することにより、ベースラインスクリーンショットに基づく視覚的な変化を検出することが出来ます。これによりHTTPステータスではなくWebページのビジュアルの不具合を監視できます。

ビジュアルモニタリング機能はコンソールからCanary作成時にブループリントが用意されています。

下記エントリも合わせてご確認ください。

CloudWatch Synthetics Recorder

CloudWatch Synthetics RecorderはGoogle Chrome拡張です。これを使用して監視対象としたいウェブサイト上のアクションを記録し、Canaryのスクリプリを作成することができます。

下記エントリも合わせてご確認ください。

対応リージョン

2021年9月時点で、AWSの21のリージョンすべてで利用可能です。

料金

2021/9時点で、Canary実行ごとに下記の料金が掛かります。

リージョン 料金(USD)
バージニア北部 0.0012
東京 0.0019
大阪 0.0019
シンガポール 0.0017

また、Canary実行ごとに、Lambda関数の実行と、S3およびCloudWatch Logsへのログデータの書き込みの料金も別途掛かります。

その他のSynthetic Monitoringサービス

その他の主要なSynthetic Monitoringサービスとしては以下のようなものがあります。

参考

以上