CloudWatch Synthetics の実行によって得られるメトリクスの種類を調べてみた

2022.01.08

CloudWatch Synthetics で確認できるメトリクスの項目の意味は以下のリンクに記載されています。本記事では末尾のNoteで取り上げられている内容の意味を理解するために実際のメトリクスを元に確認します。

Canaries that use either the executeStep() or executeHttpStep() methods from the Synthetics library also publish SuccessPercent and Duration metrics with the dimensions CanaryName and StepName for each step.

DeepL翻訳

Synthetics ライブラリの executeStep() または executeHttpStep() メソッドを使用するカナリアは、各ステップの CanaryName および StepName ディメンジョンを使用して SuccessPercent および Duration メトリクスも発行しています。

確認してみた

executeHttpStep()を使用して3つのステップに分けした複数の API のエンドポイントへリクスエストを送る環境を以下のリンクで作成しました。以下の検証環境を利用し追加で発行される2つのメトリクスを確認します。

CloudWatchからSyntheticsのメトリクスを確認します。

Canary全体で確認可能なメトリクス

本当の意味でのすべてのCanary(Across All Canaries)を指しています。CloudWatch SyntheticsはCanaryという単位でスクリプトを用意しモニタリングします。そのCanaryの実行結果をまとめたメトリクスです。

Canary全体のメトリクスのため活用するのは難しそうです。CloudWatchの障害などでCanaryでの外形監視が機能していないかの確認などには使えそうでしょうか。

Canaryで確認可能なメトリクス

モニタリングを実行しているCanary単位のメトリクスです。ここからは実用的な値を確認できます。

現在2つのCanaryが動いています。Canary単位の実行結のステータスコードや、成功だった割合のSuccessPercent、応答時間に該当するDurationなど6項目を確認できます。項目数、項目内容はCanary全体と同じです。

実行結果が失敗となった場合

たとえば死活監視のアラーム設定で利用するならSuccessPercentの値を使いCloudWatch Alarmの設定につかえます。

ステップ単位で確認可能なメトリクス

Canaryの中のステップ単位で追加されるメトリクスです。ここが本題です。

スクリプト内でexecuteHttpStep()を以下の記述で実行しています。

	await synthetics.executeHttpStep(stepName1, requestOptionsStep1, validateSuccessful1, stepConfig1);
	await synthetics.executeHttpStep(stepName2, requestOptionsStep2, validateSuccessful2, stepConfig2);
	await synthetics.executeHttpStep(stepName3, requestOptionsStep3, validateSuccessful3, stepConfig3);

実行結果が成功だった割合のSuccessPercent、応答時間に該当するDurationの2項目を確認できます。

スクリプト内のステップ名を途中で変更した都合、似た名前のStepNameが存在しており紛らわしいです。

冒頭のNoteで触れられていた内容はこの部分です。特定のメソッドを追加位実行すると、各ステップごとに2つのメトリクスが追加されることを確認できました。

実行結果が失敗となった場合

同様に死活監視のアラーム設定ならステップごとのSuccessPercentを利用すれステップ個別のアラーム設定につかえます。

CloudWatch Alarm 通知設定

CloudWatch Syntheticsのメトリクスを用いたアラーム設定は以下のリンクをご確認ください。

おわりに

Canary内の各ステップごとのSuccessPercentDurationのメトリクスを確認できるのは良し悪しは別としてCanaryの利用範囲が広がります。

たとえば1つのCanaryで関連性もない複数のエンドポイントに対してモニタリングを行う場合、Canary単位のメトリクスはほぼほぼ使えない値になります。Aサービス、BサービスのAPIをモニタリングしていて、どちらかのサービスが落ちたら失敗となりますが、メトリクスからはどちらのサービスの失敗か判断できません。ステップごとに確認できるメトリクスがあるため、エンドポイント個別にアラーム設定すれば実用的な監視になるのではないでしょうか。

参考