如何基于Pub/Sub拉取订阅配置Google Cloud告警策略发送邮件通知
无需Cloud Function实现Pub/Sub消息触发邮件告警的操作步骤
前置条件确认
你已经完成GKE集群升级通知绑定Pub/Sub主题的配置,且对应订阅为pull拉取模式,Google Cloud默认会自动上报该订阅的未送达消息数指标到Cloud Monitoring,无需额外配置。
步骤1:创建Cloud Monitoring告警策略
- 进入Google Cloud控制台的「Monitoring > 告警 > 创建告警策略」
- 配置告警触发指标:
- 资源类型选择
Cloud Pub/Sub 订阅 - 指标选择
未送达的消息数(对应指标ID为pubsub/subscription/num_undelivered_messages) - 过滤规则选择你绑定GKE升级通知的pull订阅ID,过滤其他订阅的干扰
- 聚合规则设为
总和,统计时间窗口选1分钟
- 资源类型选择
- 配置阈值触发条件:
- 条件类型选
阈值 - 触发规则设置为
任何时间序列超过阈值 - 阈值填
0,只要订阅中存在未拉取的消息就触发告警 - 持续时间设置为
1分钟,减少误触发
- 条件类型选
- 配置邮件通知渠道:
- 通知渠道类型选择
电子邮件,填入指定的分发组邮箱地址 - 开启「通知中包含指标标签和资源标签」选项,保证消息内容可以传递到邮件
- 通知渠道类型选择
- 配置告警内容模板:
- 自定义告警名称,例如
GKE集群升级通知告警 - 文档内容栏可填入自定义模板,通过系统变量引用升级事件信息,示例模板如下:
【GKE集群升级通知】 集群名称:${resource.label.cluster_name} 升级类型:${metric.labels.upgrade_type} 事件详情:${metric.labels.message} 触发时间:${event.start_time} - 自定义告警名称,例如
步骤2:配置自动拉取确认消息(避免重复告警,可选但推荐)
由于你的订阅为pull模式,未确认的消息会一直累计导致重复触发告警,可通过告警的自动化操作实现自动拉取确认,无需编写代码:
- 进入刚创建的告警策略详情页,找到「自动化操作」板块,点击添加操作
- 操作类型选择
Cloud Pub/Sub > 确认订阅消息 - 选择你对应的pull订阅ID,保存配置即可
- 权限配置:确保Cloud Monitoring Alerting的默认服务账号拥有对应订阅的
pubsub.subscriptions.consume权限,否则无法完成自动拉取确认
验证方法
你可以手动触发一次GKE集群模拟升级通知,或者往绑定的Pub/Sub主题推送一条测试消息,1-2分钟内即可收到包含消息内容的告警邮件,同时Pub/Sub订阅内的对应消息会被自动确认,不会重复触发通知。
内容的提问来源于stack exchange,提问作者user1403505
相关产品推荐
相关产品推荐

