概要
CloudWatch Syntheticsで取得できるメトリクスを元にアラームを設定することができるが、メトリクスがどのように取得されているかやデータの解像度が分からなかったので調査。
Canary によって発行される CloudWatch メトリクス
こちらはドキュメントの通り。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_metrics.html
APIの外形監視であれば、おそらく下記の3つを利用することになる
- SuccessPercent
- Duration
- Failed
アラームの設定
SyntheticsのGUIで提供されているアラーム設定画面。
こちらから、アラームの状態・閾値・期間が設定できる。
このとき、閾値と期間をどのように設定すればよいかを考える。
Syntheticsのメトリクスの解像度
Syntheticsの実行には、下記のロールが必要になる。
Canary に必要なロールとアクセス許可
この中でCloudWatchに関するポリシーは下記の通り
{
"Effect": "Allow",
"Resource": "*",
"Action": "cloudwatch:PutMetricData",
"Condition": {
"StringEquals": {
"cloudwatch:namespace": "CloudWatchSynthetics"
}
}
}
またVPCエンドポイントの設定でも同様に「cloudwatch:PutMetricData」を許可している。
インターフェイス VPC エンドポイントでの CloudWatch および CloudWatch Synthetics の使用
このことから、Syntheticsのメトリクスは実行されるカナリヤ(Lambda)からPutMetricData APIを実行し、カスタムメトリクスとして取得していることがわかる。
※ このことはPutMetricDataのメトリクスを確認するとある程度答え合わせができる。
またメトリクスはカナリヤから送られているため、メトリクスの解像度はカナリヤの実行間隔に依存することになる。
カナリヤは定期実行の場合1−60分で設定ができるため、事実上1分が最も細かいデータポイントとなる。
アラーム設定を考える
カナリヤの実行間隔を1分とした場合、SuccessPercentの閾値は期間と合わせる。
期間を5分とする場合カナリヤは最大5回しか実行できないため、20%刻みでの設定が適切である。
例)
アラームの状態:より低い
SuccessPercent:80%
期間:5分
上記の場合、SuccessPercentを90%などにしてもそもそもデータとして取り得ない値であるため無意味となる。