본문 바로가기

개발하자

Terraform Google 공급자, 로그 기반 알림 정책 생성

반응형

Terraform Google 공급자, 로그 기반 알림 정책 생성

Terraform Google 클라우드 공급자를 통해 로그 기반 경고 정책을 만들어야 합니다:

Terraform 공식 문서에서 확인한 결과 'google_monitoring_alert_policy' 리소스를 확인했습니다:

이 문서에서는 로그 기반 경고 정책을 만드는 방법을 찾을 수 없습니다. 'Metrics' 유형으로는 경고 정책을 생성할 수 있지만 'Logs' 유형으로는 생성할 수 없습니다

enter image description here

나는 Terraform Google 클라우드 제공자의 최신 버전을 사용한다:

Terraform Google 공급자로 로그 기반 경고 정책을 만들려면 어떻게 해야 합니까?

당신의 도움에 미리 감사드립니다.




형식은

이 예를 참조하십시오(알림 없음, 알림 정책만 해당)

resource "google_monitoring_alert_policy" "alert_policy" {
  display_name = "My Alert Policy"
  combiner     = "OR"
  conditions {
    display_name = "test condition"
    condition_threshold {
      filter     = "metric.type=\"logging.googleapis.com/user/test-metrics\" AND resource.type=\"cloud_run_revision\""
      duration   = "600s"
      comparison = "COMPARISON_GT"
      threshold_value = 1
      }
    }

  user_labels = {
    foo = "bar"
  }
}



고마워요, 기욤.

네, 그것이 제가 문제를 해결한 방법입니다.

이제 Terraform을 통해 유형별로 경보를 직접 생성할 수 있는 방법은 없습니다.

이 문제를 해결하는 단계:

  • 필요한 필터를 사용하여 로그 기반 메트릭 생성
  • 이전에 생성된 로그 기반 메트릭을 기반으로 유형을 사용하여 경고 정책 생성
resource "google_logging_metric" "my_log_metrics" {
  project = var.project_id
  name = "my-log-metric"
  filter = "..."
  description = "..."
  metric_descriptor {
    metric_kind = "..."
    value_type = "..."
  }
}

resource "google_monitoring_alert_policy" "my_policy" {
  project = var.project_id
  display_name = "my-policy"
  combiner = "OR"
  conditions {
    display_name = "my-policy"
    condition_threshold {
      filter = "metric.type=\"logging.googleapis.com/user/my-log-metric\" AND resource.type=\"cloud_composer_environment\""
    ...
    }
}




이 문제는 구글 제공자의 버전 4.7.0으로 해결되었으며, 이는 다음을 추가한다. 다음은 작업 예입니다:

resource "google_monitoring_notification_channel" "email-me" {
  display_name = "Email Me"
  type = "email"
  labels = {
    email_address = "me@mycompany.com"
  }
  
}

resource "google_monitoring_alert_policy" "workflows" {
  display_name = "Workflows alert policy"
  combiner     = "OR"
  conditions {
    display_name = "Error condition"
    condition_matched_log {
      filter = "resource.type=\"workflows.googleapis.com/Workflow\" severity=ERROR"
    }
  }

  notification_channels = [ google_monitoring_notification_channel.email-me.name ]
  alert_strategy {
    notification_rate_limit {
      period = "300s"
    }
  }
}

반응형