CloudWatch関連リソースをTerraformでどう書くか調べた

Lambdaでエラーが発生した際にSlackにメッセージを送りたいので、TerraformでのCloudWatch関連リソースのプロパティなどを調べました。

Resource: aws_cloudwatch_log_metric_filterのドキュメントは以下になります。

registry.terraform.io

公式ドキュメントに以下のサンプルコードが記載されていたのでこちらで使われている中から自分の理解が浅い引数について調べます。

resource "aws_cloudwatch_log_metric_filter" "yada" {
  name           = "MyAppAccessCount"
  pattern        = ""
  log_group_name = aws_cloudwatch_log_group.dada.name

  metric_transformation {
    name      = "EventCount"
    namespace = "YourNamespace"
    value     = "1"
  }
}

resource "aws_cloudwatch_log_group" "dada" {
  name = "MyApp/access.log"
}
  • pattern

    • 必須の引数。CloudWatch Logs filter patternから有効なパターンを選ぶ。[ERROR]と設定するとログメッセージにERRORがふくまれるものが検出されるらしい。
  • metric_transformation.name

    • CloudWatchメトリクスの名前
  • metric_transformation.namespace
    • メトリクスの名前空間。メトリクスが属するカテゴリのようなものでCloudWatch内でメトリクスを整理するために使用される
  • metric_transformation.value
    • ログイベントがフィルターパターンに一致した時にメトリクスとして増加させる値。1を設定してカウントを増やす用途が多い。

metric_transformationは以下のような用途に使える。

  • エラー監視
    • ログファイル内のメッセージをキャプチャし、その発生頻度をカウントすることでシステムが安定して稼働しているか監視できる。
  • パフォーマンスモニタリング
    • 特定のパフォーマス関連のログ(レスポンスタイムの閾値超過など)をメトリクスとして記録し、パフォーマンスを監視できる。