GCP存储桶未处理文件夹新增文件时如何配置邮件告警
GCP存储桶unprocessed文件夹告警实现方案
首先直接给结论:不需要为这个告警能力单独编写复杂代码、也不用额外部署新的Cloud Function,用GCP原生的Cloud Logging + Cloud Monitoring告警能力就能实现,配置全程5分钟,稳定性比自建通知逻辑高很多。
具体配置步骤
- 第一步:确认审计日志开启
进入GCP控制台的IAM与审计日志页面,找到Cloud Storage服务,确认你当前使用的存储桶已经开启「数据读取」「数据写入」类别的审计日志采集,GCP新项目默认是开启管理员操作日志的,要是没开勾选对应存储桶保存即可,全程不需要改动你现有处理文件的Cloud Function代码。 - 第二步:配置精准的日志过滤规则
进入Cloud Logging的日志浏览器页面,在查询框输入以下过滤语句,把占位符换成你自己的项目、存储桶信息:
这个规则只会匹配你指定存储桶下,resource.type="gcs_bucket" logName="projects/替换成你的GCP项目ID/logs/cloudaudit.googleapis.com%2Fdata_access" protoPayload.methodName="storage.objects.create" resource.labels.bucket_name="替换成你的存储桶名称" protoPayload.resourceName:"/unprocessed/"unprocessed路径内新文件创建的事件,完全不会误报processed文件夹、根目录的其他文件操作。你可以先手动往unprocessed文件夹传个测试文件,确认日志能被正常检索到再往下走。 - 第三步:绑定告警通知渠道
确认日志能正常匹配后,点击日志查询框上方的「创建告警」按钮,设置告警触发阈值:比如统计周期1分钟,只要匹配到1条日志就触发告警,避免漏报。之后在通知渠道里选你需要的接收方式就行,支持邮箱、短信、各类即时通讯工具的Webhook、PagerDuty等常用渠道,保存后告警规则就实时生效了。
可选优化(仅需极少量代码改动)
如果你想让告警通知里直接显示失败的文件名、具体的导入错误原因,不需要加新的服务,只要在你现有的、负责移动文件到unprocessed文件夹的Cloud Function里,执行移动操作前加一行结构化日志,把文件名、错误栈信息打印出来就行,日志会自动被采集,告警触发时会把这些字段一并推送给你,排查问题更方便。
只有当你后续需要对unprocessed文件夹里的文件做自动重试、格式转换、二次归档这类自定义逻辑的时候,才需要额外部署监听该路径的Cloud Function,单纯做告警完全没必要增加额外的资源维护成本。
内容的提问来源于stack exchange,提问作者Milind M
相关产品推荐
相关产品推荐

