首页 > 解决方案 > 如何在 GCP 中为未知的自定义指标创建警报策略

问题描述

鉴于 GCP 中的以下警报策略(使用 terraform 创建)

resource "google_monitoring_alert_policy" "latency_alert_policy" {
  display_name = "Latency of 95th percentile more than 1 second"
  combiner     = "OR"
  conditions {
    display_name = "Latency of 95th percentile more than 1 second"
    condition_threshold {
      filter     = "metric.type=\"custom.googleapis.com/http/server/requests/p95\" resource.type=\"k8s_pod\""
      threshold_value = 1000
      duration   = "60s"
      comparison = "COMPARISON_GT"
      aggregations {
        alignment_period = "60s"
        per_series_aligner= "ALIGN_NEXT_OLDER"
        cross_series_reducer= "REDUCE_MAX"
        group_by_fields      = [
          "metric.label.\"uri\"",
          "metric.label.\"method\"",
          "metric.label.\"status\"",
          "metadata.user_labels.\"app.kubernetes.io/name\"",
          "metadata.user_labels.\"app.kubernetes.io/component\""
        ]
      }
      trigger {
        count = 1
        percent = 0
      }
    }
  }
}

我收到以下此错误(它是 terraform 项目的一部分,也创建了集群):

Error creating AlertPolicy: googleapi: Error 404: The metric referenced by the provided filter is unknown. Check the metric name and labels.

现在,这是一个自定义指标(由带有 Micrometer 的 Spring Boot 应用程序),因此在创建基础架构时该指标不存在。GCP 在为它创建警报之前是否必须知道一个指标?这是否意味着必须在集群上部署 Spring Boot 应用程序并发送指标才能创建此策略?

我是否遗漏了一些东西......(这样不应该在 terraform、基础设施中完成)?

标签: google-cloud-platformterraformgoogle-cloud-stackdriver

解决方案


有趣的问题,404 错误的原因是因为找不到资源,描述符似乎有一个预先存在的先决条件。我将首先创建指标描述符,您可以将用作参考,然后继续创建警报策略。

这是一种巧妙的方法,您可以避免它。如果它有意义,请发表评论,如果你让它像这样工作,分享它。


推荐阅读