悩み
結局なにをどう設定すれば意図したタイミングでアラートが飛ぶの??
を整理したい。
やってみよう
terraformの公式のサンプルをベースにアレンジしながら解説。
resource "aws_cloudwatch_metric_alarm" "foobar" {
alarm_name = "terraform-test-foobar5"
comparison_operator = "GreaterThanOrEqualToThreshold"
evaluation_periods = "2"
metric_name = "CPUUtilization"
namespace = "AWS/ECS"
period = "120"
statistic = "Average"
threshold = "80"
alarm_description = "This metric monitors ec2 cpu utilization"
insufficient_data_actions = []
datapoints_to_alarm = "10"
dimensions {
ClusterName = aws_ecs_cluster.hogehoge.name
ServiceName = aws_ecs_service.hogehoge.name
}
alarm_actions {
// オートスケーリングやsnsとの連携などを定義。(今回は割愛)
}
}
まずコアになる部分の設定値について。
アラームの作成の際に重要となる設定が3つある。
- period
- evaluation_periods
- datapoints_to_alarm
period
... メトリクスを評価する期間。秒単位で設定する。例えば60で設定した場合、60秒に1回メトリクス の状態を評価することになる。(評価という表現がなれないが「チェックして判定する」というニュアンスで良いと思われる。)
「メトリクスをチェックする1セット分の期間」と表現する。
evaluation_periods
... 公式には、
アラームの状態を決定するまでに要する最新の期間またはデータポイントの数です。
と書いてあるが、わかりにくい・・・。
要するに「閾値のチェックを繰り返すデータポイントを何回にするかの値」と解釈しています。
periodの範囲でのメトリクスチェックを何ターム繰り返すかを設定する値と言えばいいでしょうか。(データポイントはメトリクスの集約期間のメトリクスの値のことらしい。これもわかりづらい)ひとまず「メトリクスをチェックする1セット分の期間を何セット繰り返すかを定める数値」と置き換える。
datapoints_to_alarm
... 実際に閾値を超過した際にALARM状態にするために必要な回数。
「メトリクスをチェックする1セット分の期間を何セット繰り返すかを定める数値に対して、何回超過した場合にアラーム状態とするかを設定する数値」と言える。
詳細な情報については以下の公式を参照されたい。
その他の設定値については以下の通り。
comparison_operator
...これは閾値設定の際に使用される算術演算子(〜以上、〜以下など)設定値として用意されている値を日本語訳するとなんとなくわかるかと。
metric_name
... アラームの対象とするメトリクスの名前。
namespace
... AWSサービス名。
statistic
... アラームに関連づけられたメトリクスの統計方法。(平均や合計値など)
threshold
... 実際に閾値の判定に利用される値。主に数値が入る想定。「CPUUtilizationが〇〇以上」という判定の〇〇に当たる部分。
insufficient_data_actions
... メトリクスのデータが不足している場合に行うアクションについての定義箇所。本記事では特には触れません。
dimensions
... 実際に対象となるリソースの設定。(だいぶざっくりだが伝わるはず。。。)
alarm_actions
... アラーム発生時に行うアクション。本記事では割愛するがECSなどであればオートスケーリングの設定をするケースもある。他にもsnsへの送信など。
以上、ざっくりですがCloud Wacthアラーム設定周りの整理でした!!!