Google Cloud如何为日志缺失场景创建log based metric及告警
Google Cloud 日志条目缺失场景告警配置方案
直接按下面步骤配就行,不用绕弯路:
- 第一步:创建计数器类型的基于日志的指标(Log-based Metric)
先进入日志浏览器,写对精准匹配存活日志的过滤规则,参考示例:
验证过滤规则能准确捞到你应用上报的存活日志后,基于这个过滤器创建**计数器(Counter)**类型的日志指标,指标名可以设为# 替换成你实际的应用资源类型,比如gce_instance、k8s_container、cloud_function等 resource.type="k8s_container" resource.labels.cluster_name="你的集群名" resource.labels.namespace_name="你的应用命名空间" # 非结构化日志用textPayload匹配,结构化日志替换成对应jsonPayload字段 textPayload:"I'm alive"app_heartbeat_log_total,没有多实例区分需求的话不用额外加标签,有需求就把实例ID、Pod名这类维度加为指标标签。 - 第二步:配置缺席告警策略
进入Cloud Monitoring的告警策略页面,选刚创建的app_heartbeat_log_total指标,核心配置项别错:- 聚合窗口设置为
45分钟,对齐聚合方式选sum,统计窗口内的存活日志总条数 - 找到「缺失数据处理」配置项,选择将缺失的时序数据视为0值,这是实现缺失告警的核心配置——之前你配的日志出现告警是有数据触发,开了这个选项后,窗口内没匹配到日志时指标值会按0计算
- 触发阈值设置为:指标值
小于 1,也就是45分钟窗口内累计没抓到1条存活日志就触发告警 - 触发等待时间设1分钟即可,重复告警间隔按自己的运维通知节奏配,比如1小时重复发一次就行
- 聚合窗口设置为
- 避坑提醒
- 聚合窗口别卡着30分钟的上报间隔设,留10-15分钟冗余,避免因为日志上报延迟、应用偶发卡顿导致误报,你选45分钟刚好合适
- 多实例部署的场景,聚合的时候一定要按实例标识维度(比如实例ID、Pod名)分组,不然只要有一个实例上报了存活日志,其他实例挂了都不会触发告警
- 别直接在日志浏览器里配日志告警,那个能力只支持匹配到日志条目时触发,做不了缺失检测,必须走日志指标+云监控告警的链路
配完可以做个简单验证:手动停掉测试环境的对应应用,等45分钟确认告警正常触发,恢复应用上报日志后告警会自动恢复,不需要手动处理。
内容的提问来源于stack exchange,提问作者OpenBSDNinja
相关产品推荐
相关产品推荐

