如何配置 Terraform 以根据 GCP 的日志错误触发警报?

Posted

技术标签:

【中文标题】如何配置 Terraform 以根据 GCP 的日志错误触发警报?【英文标题】:How to configure Terraform to trigger alerts based on log errors for GCP? 【发布时间】:2021-12-21 08:29:03 【问题描述】:

我是 Terraform 的新手,浏览它的文档听起来有点困惑,也就是说,我想知道是否可以创建一个 resource 来触发基于在GCP 上指定的日志文件。规则应该类似于“如果我们在 1 小时内收到超过 100 个错误,则触发它。”。

作为一个起点,我正在考虑这样的事情,但我不太确定我在消息本身和阈值(100 个错误/小时)中具体指定“错误”类型的位置。

resource "google_monitoring_alert_policy" "too_many_errors_alerts" 
display_name = "TERRAFORM -- Too many errors alerts"
  enabled      = true

  combiner = "OR"
  conditions 
    display_name = "Too many errors alerts"
    condition_threshold 
      filter          = "metric.type=\"logging.googleapis.com/location/to/logs????" resource.type=\"cloud_run_revision\""
      duration        = "1h"
      comparison      = "COMPARISON_GT"
      threshold_value = 300
      trigger 
        count = 1
      
    
  

如果我走的是正确的道路,我想考虑一下。

【问题讨论】:

你读过:registry.terraform.io/providers/hashicorp/google/latest/docs/…? threshold_value 修改为100 - 当然,metric.type 将取决于您要监控的内容。要监控的错误究竟是什么会回答这个问题 【参考方案1】:

作为提示,请先在 GCP 控制台上尝试,因为它可以帮助您了解预期指标并指向正确的资源。 监控>警报>创建策略>添加条件

您将看到一个输入框,您可以在其中找到资源类型和指标。键入您要为其创建警报的资源名称,然后将显示可能的指标及其描述的下拉列表。

如果您单击 查询编辑器 按钮,您将看到 Terraform 预期的指标和资源名称

所以您可以在此处添加该信息

  filter                = "metric.type=\"pubsub.googleapis.com/subscription/num_undelivered_messages\" resource.type=\"pubsub_subscription\" metadata.system_labels.name=\"dead-letter-subscription\""

关于条件阈值,duration 必须是下一个格式,threshold_value 是指定要监控的错误数

  duration              = "3600s"
  threshold_value       = 100

请记住,持续时间仅支持分钟的倍数 - 例如60 秒、120 秒或 300 秒

【讨论】:

以上是关于如何配置 Terraform 以根据 GCP 的日志错误触发警报?的主要内容,如果未能解决你的问题,请参考以下文章

有条件地使用 terraform 配置 gcp vm 实例

如何使用 API 或 Terraform 模板在 GCP 中创建 StackDriver 工作区

分配 GCP 函数服务帐号角色以使用 Terraform 与 Firebase 互动

如何使用 Terraform 公开 gcp 云功能

如何在 terraform 中正确创建具有角色的 gcp 服务帐户

terraform 从 gcp 秘密创建 k8s 秘密