フラミナル

考え方や調べたことを書き殴ります。IT技術系記事多め

【備忘】TerraformでGCP monotiringのfilterをうまく設定する方法

f:id:lirlia:20211002011928p:plain cpu_stateでどうにかフィルタするのをTerraformに設定したくて、どうにか辿り着いたTips。

下記のサイトにまとまっている情報をみる。

f:id:lirlia:20211015171027p:plain

太文字のものはmetric.label.\"cpu_state\"= \"idle\""のように指定できるのでfilterで以下のように設定する。

resource "google_monitoring_alert_policy" "hardware_utilization" {
  display_name          = "[${var.project_id}][${var.gce_name}] ハードウェアリソース不足"
  notification_channels = var.notifications
  combiner              = "OR"

  # CPUの空き状況が閾値を下回ったときに通知を行います = CPU使用率が高いとき
  conditions {
    display_name = "[${var.project_id}][${var.gce_name}] CPUの空きが${var.cpu_utilization_threshold}%未満"
    condition_threshold {
      filter          = "metric.type=\"agent.googleapis.com/cpu/utilization\" AND resource.type=\"gce_instance\" AND metadata.system_labels.name=\"${var.gce_name}\" AND metric.label.\"cpu_state\"= \"idle\""
      duration        = "300s" # 5分
      threshold_value = var.cpu_utilization_threshold
      comparison      = "COMPARISON_LT" # 現在の値が閾値未満なら発報
      aggregations {
        alignment_period   = "60s"
        per_series_aligner = "ALIGN_MEAN"
      }
      trigger {
        count = 1
      }
    }
  }
}