1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TerraformでAWSのCloudWatchまわりをデプロイする

Last updated at Posted at 2023-03-23

Terraformシリーズ第7弾はCloudWatch(以下CW)です:alarm_clock:

※過去のTerraform記事はこちら
第1弾:TerraformでAWSリソースをデプロイしてみる
第2弾:TerraformでAWS環境をデプロイする前に認識しておくべきこと
第3弾:TerraformでAWSのIAMまわりをデプロイする
第4弾:TerraformでAWSのネットワークまわりをデプロイする
第5弾:TerraformでAWSのEC2まわりをデプロイする
第6弾:TerraformでAWSのS3をデプロイする

Event Rule

ここではセキュリティグループのモニタを例とします。イベントパターン自体はjson記述で外出しです。通知先はちょっと特殊ですが、別アカウントのイベントバスとしています。

resource "aws_cloudwatch_event_rule" "SecurityGroupMonitor" {
        name = "SecurityGroupMonitor"
        description = "Monitoring Security Group Configurataion"
        is_enabled = false
        event_pattern = file("folder/SecurityGroupMonitor.json") 
}

resource "aws_cloudwatch_event_target" "SecurityGroupMonitor" {
  rule     = aws_cloudwatch_event_rule.SecurityGroupMonitor.name
  arn      = "arn:aws:events:ap-northeast-1:XXXXXXXXXXX:event-bus/default"
  role_arn = aws_iam_role.対象ロール名.arn
}

Metric Filter

ロググループから指定の文字列をフィルタリングします。以下ではErrorという文字列でひっかけています。metric_transformationで次に記載するMetric Alarmと連携させています。

resource "aws_cloudwatch_log_metric_filter" "Error" {
  name           = "Error"
  pattern        = "Error"
  log_group_name = "ロググループ名"

  metric_transformation {
    name      = "メトリクス名"
    namespace = "LogMetrics" #名前空間
    value     = "1" #メトリクス値
  }
}

Metric Alarm

メトリクスフィルタで拾った情報を通知させます。コードだとわかりにくいので、コンソールと照らし合わせながらみるとわかりやすいです。

resource "aws_cloudwatch_metric_alarm" "Error" {
  alarm_name                = "アラーム名"
  comparison_operator       = "GreaterThanOrEqualToThreshold" #アラーム条件
  evaluation_periods        = "1" #アラームを実行するデータポイント
  metric_name               = "メトリクス名"
  namespace                 = "LogMetrics" #名前空間
  period                    = "60" #期間(秒)
  statistic                 = "Sum" #統計方法
  threshold                 = "0" #アラーム条件のしきい値
  alarm_actions             = ["arn:通知先"]
  actions_enabled           = "false"
}

※こちらの記事が参考になります
https://qiita.com/hengineer/items/382c4f45b83cedfaea85

プロジェクトによっては大量のフィルタを作ったりするので、そういった場合はスピードの観点で強い恩恵をうけることができますね。またアクションをそれぞれfalseにしているのは、まだ運用に入らないという前提でfalseにしています。あとから手動で切り替えられるので適宜設定してください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?