1

我一直在尝试设置警报策略(通过堆栈驱动程序)以在云存储桶中有新对象时获取电子邮件通知。

但这里的问题是,它有时会在一段时间后起作用,而在其他大多数时候,它不会。

当桶中有新文件时(每天多次),我们如何使警报立即触发。

下面是代码:

resource "google_monitoring_alert_policy" "alert_policy" {
  display_name = "File notification"
  combiner     = "OR"
  notification_channels = ["${google_monitoring_notification_channel.email.name}"]

  conditions {
    display_name = "File Notification"

    condition_threshold {
      comparison        = "COMPARISON_LT"
      duration          = "60s" 
      filter            = "metric.type=\"storage.googleapis.com/storage/object_count\" resource.type=\"gcs_bucket\" resource.label.\"bucket_name\"=\"realbucketname\""
      threshold_value   = 1

      aggregations {
        alignment_period        = "60s"
        per_series_aligner      = "ALIGN_COUNT"
      }

      trigger {
        count = 1
      }
    }
  }
  documentation {
    content = "There is a new file"
  }
}

感谢您的投入!

谢谢

4

2 回答 2

1

对象计数指标每天测量一次,因此条件可能每天仅触发一次。这很可能是您的警报不一致的原因。

如果可能,查看存储桶中对象更改的推荐解决方案是通过发布/订阅通知。使用发布/订阅通知,您可以在存储桶内发生许多不同事件时收到通知。

下面是一个 gsutil 命令示例,您可以在存储桶中创建对象时收到通知。-e 指定我只希望在发生特定事件时发生通知,在这种情况下是文件上传到存储桶时。

gsutil notification create -t [TOPIC_NAME] -f json gs://[BUCKET_NAME] -e OBJECT_FINALIZE

然后,您将创建一个订阅者来接收通知。

这是通过 App Engine 管理存储桶通知的教程

您还可以考虑使用利用独立函数来响应事件的云函数(将文件添加到存储桶)。要通过功能发送电子邮件,您可以使用Mailgun等第三方服务。你也可以按照这个第三方教程使用 SMTP 和 nodemailer 发送电子邮件。

于 2020-03-02T17:55:38.137 回答
1

谢谢你。我通过删除脚本中的聚合来修复它,

它现在按预期工作!

    condition_threshold {   
      comparison        = "COMPARISON_GT"
      duration          = "60s" 
      filter            = "metric.type=\"storage.googleapis.com/storage/object_count\" resource.type=\"gcs_bucket\" resource.label.\"bucket_name\"=\"realbucketname\""
      threshold_value   = 1

于 2020-03-02T19:05:58.463 回答