[アップデート] Amazon CloudWatch Synthetics が一般利用可能になりました!

Amazon CloudWatch Synthetics が一般利用可能になり、Syntetics Monitoring(合成監視)できるようになりました。
2020.04.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、中川です。

2019年にプレビューとして発表されたAmazon CloudWatch Syntheticsが、とうとうGA(一般公開)されました! Amazon CloudWatch Synthetics is now generally available

CloudWatch Synthetics とは

CloudWatch Syntheticsは、Synthetic Monitoring(合成監視)のサービスです。 合成監視とは、フロントエンド監視の1つで、エンドユーザーの動作をシミュレートしてパフォーマンスデータを能動的に取得する手法になります。

Synthetic monitoring (also known as active monitoring or proactive monitoring) is a monitoring technique that is done by using an emulation or scripted recordings of transactions. Behavioral scripts (or paths) are created to simulate an action or path that a customer or end-user would take on a site, application or other software (or even hardware). Those paths are then continuously monitored at specified intervals for performance, such as: functionality, availability, and response time measures.

合成モニタリング(アクティブ・モニタリングやプロアクティブ・モニタリングとも呼ばれる)は、トランザクションのエミュレーションやスクリプト記録を使用して行われるモニタリング技術です。行動スクリプト(またはパス)は、顧客やエンドユーザーがサイト、アプリケーション、または他のソフトウェア(またはハードウェア)上で取るであろう行動やパスをシミュレートするために作成されます。これらのパスは、機能性、可用性、応答時間などのパフォーマンスを特定の間隔で継続的に監視します。

引用元: Synthetic monitoring

CloudWatch Synthetics は、ウェブサイトや API のエンドポイントなどに対して、利用ユーザー視点でパフォーマンスや可用性をモニタリングできます。 パフォーマンスや可用性が可視化されることで、問題の特定やアプリケーションのパフォーマンスが目標値を満たしているかの測定に役立ちます。

Canary

CloudWatch Synthetics では、Canary を設定します。 CloudWatch Synthetics は実体として、Node.js の Lambda 関数が動いてます。Canary では Node.js のスクリプトや実行間隔、通知などの設定をします。 スクリプトの作成は、AWS が提供するブループリントを使用する方法と、独自に CloudWatch Synthetics のライブラリを組み込んで作成する方法があります。 Canary を独自に作成する際には、Synthetics Canary セキュリティの注意事項を参照し、セキュリティ上のを考慮事項をご確認ください。

対応リージョン

2020年4月時点で、東京を含む以下の16リージョンで利用可能です。

  • 米国東部 (バージニア北部)
  • 米国東部 (オハイオ)
  • 米国西部 (北カリフォルニア)
  • 米国西部 (オレゴン)
  • カナダ (中部)
  • 欧州 (フランクフルト)
  • 欧州 (ストックホルム)
  • 欧州 (アイルランド)
  • 欧州 (ロンドン)
  • 欧州 (パリ)
  • アジアパシフィック (東京)
  • アジアパシフィック (ソウル)
  • アジアパシフィック (シンガポール)
  • アジアパシフィック (シドニー)
  • アジアパシフィック (ムンバイ)
  • 南米 (サンパウロ)

料金

1ヶ月あたり、100回までの Canary 実行は無料になり、100回より後は、Canary の実行ごとに課金が発生します。

リージョンごとの料金を比べると東京は他のリージョンより若干高いようです。 パフォーマンスの考慮が不要な監視用途であれば、他のリージョンを使うという選択肢もありそうです。

リージョン 料金 (USD)
東京 0.0019
バージニア 0.0012
オレゴン 0.0012
シンガポール 0.0017
フランクフルト 0.0016
アイルランド 0.0014

東京リージョンでに1分ごとに Canary を実行したとすると、一月あたり約$82課金されます。

制限

リージョンごとに Canary の制限数があります。

Canary制限数 リージョン
100 バージニア、オハイオ、オレゴン、アイルランド、東京
20 上記以外のリージョン

やってみた

設定

CloudWatchのマネージメントコンソールから CloudWatch Synthetics を開き、[Create Canary] をクリックします。 用意されたブループリントのハートビートスクリプトを使用します。ハートビートスクリプトは、指定された URL をロードしページのスクリーンショット、HTTP アーカイブファイル(HARファイル)、アクセスされた URL のログを保存します。他のブループリントについては、こちらを参照ください。

Canary の名前と、エンドポイントを設定します。

使用されるスクリプトが表示されます。

スケジュールを実行します。1回または定期実行の間隔や、タイムアウトの設定をします。デフォルトでタイムアウトは5分です。

Canary で取得したデータの保持期間、保存先の S3 を設定します。

Canary が使用する IAM ロールを設定します。

入力が完了したら、[Canary を作成]をクリックし、作成されるのを待ちます。

動作確認

設定が完了すると、Canary のステータス画面が表示され、こちらから概要を確認できます。

Canary 名をクリックして、詳細を確認します。各データポイントで成功/失敗しているか確認できます。

[スクリーンショット]タブから、最新データポイントのスクリーンショットを確認できます。

[HAR ファイル]タブから、ウェブページに関するパフォーマンスデータを表示できます。

[ログ]タブから、実行ログを確認できます。

ここまでで、正常時の動作確認でした。続いて、失敗時の動作を確認していきます。 スクリプトを編集して、エンドポイントを存在しない URL に変更します。

Canary が失敗しました。過去24時間のどこで問題が発生したか表示され、可用性が下がっていることを確認できました。

さいごに

Amazon CloudWatch Synthetics が一般利用可能になりました。これまで New Relic や Datadog といった SaaS のモニタリングツールを使っていたところを、AWSで簡単に実装できるようになりました。 パフォーマンスや可用性のモニタリングに、ぜひ活用ください!

参考URL