CloudWatch SyntheticsでHTTP監視をする

AWS運用自動化サービス「Cloud Automator」

気がついたらCloudWatchファミリーにSyntheticsという仲間が追加されていました。
そして日本リージョンでも使えるようになっていました。
Amazon CloudWatch Synthetics が新たに 13 のリージョンで利用可能に

1.CloudWatch Syntheticsって何ですか?

Syntheticは、「合成の」「合成物質」といった意味のようですが、ちょっとピンと来ないですね。
公式ドキュメントを見ても、いまいち理解ができませんでした。

Amazon CloudWatch Synthetics を使用すると、Canary を作成して、エンドポイントと API を監視できます。Canary は、同じルートをたどり、お客様と同じアクションを実行する設定可能なスクリプトです。これにより、お客様のエクスペリエンス、およびサービスの可用性をお客様の視点から見ることができます。

Canary は 1 度、または定期的なスケジュールで実行できます。スケジュールされた Canary は、1 日 24 時間、1 分間に 1 度の頻度で実行することができます。Canary はエンドポイントの可用性とレイテンシーをチェックし、ロード時間データと UI のスクリーンショットを保存できます。

下記はマネージメントコンソールの画面ですが、こちらの方がわかりやすい気がします。
そして、「簡単なウェブテスト」と書いてあるので、今回はこれを試してみます。

2.監視される役のWebサーバーを作成

テスト用に適当にWebサーバーを作成しました。
このサーバーをCloudWatch Syntheticsで監視し、正常時と停止時にきちんと検知するか試してみます。

3.Canary作成

CloudWatch Syntheticsは、Canaryという単位で作成するようです。

3-1.Canary作成ボタンをクリック

Canary作成ボタンをクリック

3-2.Canary名と監視対象のURLを入力

URLを入力すると、デフォルトで生成されるコード上のURL変数に自動的に入力されます。
コードをざっとみると、ステータスコード:200で判別しているのがわかります。

3-3.スケジュール設定

選択肢は、以下の通りです。

  • 1分に1回
  • 5分に1回(デフォルト)
  • 1時間に1回

3-4.データ保持期間と保存先のS3バケット

障害データの保持と成功データの保持がありますが、それぞれ以下から選択可能です。

  • 31日(〜1か月)(デフォルト)
  • 92日(〜3か月)
  • 183日(〜6か月)
  • 365日(12か月)
  • カスタム値を入力(1-455日)

3-5.しきい値

一旦、未設定のままにしておきます。

3-6.アクセス許可

今回はデフォルトのままにしました。

Canaryを作成ボタンをクリックすれば、1分くらいで作成されます。

4.確認

4-1.成功時

データが無いときは円グラフが灰色ですが、成功すると水色になります。

4-2.失敗時

試しにNginxをstopしたところ、失敗となり、赤色になりました。

監視スクリプトのログ

ステータスにLambdaに関するものが表示されたります。
なるほど、監視スクリプトはLambda関数だったんですね。

スクリーンキャプチャ

各監視時点でのスクリーンキャプチャが確認できます。

Webサーバ側のログ

Nginxのアクセスログには下記のように記録されます。
HeadlessChrome、CloudWatchSynthetics等、特徴のあるログが出ますね。
IPアドレスは、おそらくLambda関数のものと思われます。

まとめ

  • CloudWatch SyntheticsでHTTP監視ができた
  • 監視スクリプトの中身はLambda関数なのでカスタマイズできそう
  • 監視履歴にスクリーンキャプチャやログも保存される

次回は、CloudWatch Syntheticsで失敗となった場合のアラートの上げ方について見ていきたいと思います。

AWS運用自動化サービス「Cloud Automator」