You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Monitoring API创建基于日志的告警,Java端如何构造对应Condition?

基于日志的告警Condition构造方案

首先纠正你的判断偏差:基于日志查询的告警Condition,在Monitoring API中通过Condition.Match(匹配类型条件)实现,你之前考虑的Absent、Threshold是针对时间序列指标的场景,日志匹配场景无需使用这几个类型,也不需要额外转换为MQL查询。

具体实现步骤

  • 第一步:构造日志查询过滤语句,规则和你在UI上填写的日志查询规则完全一致即可,比如匹配GCE实例错误日志的规则示例:resource.type="gce_instance" severity>=ERROR "runtime exception"
  • 第二步:使用AlertPolicy.Condition.Match构造器构建匹配条件,核心需填写filter字段(即上述日志查询语句)、duration字段(告警触发的持续观察窗口,填0s表示匹配到日志就立即触发)
  • 第三步:将构造好的Match对象设置到Condition的conditionMatch属性中,再放入告警策略的条件列表即可

Java代码示例

import com.google.monitoring.v3.AlertPolicy;
import com.google.monitoring.v3.AlertPolicy.Condition;
import com.google.protobuf.Duration;

// 构造日志匹配条件
Condition.Match logMatchCondition = Condition.Match.newBuilder()
    // 替换为你自己的日志查询过滤规则,和UI输入格式完全一致
    .setFilter("resource.type=\"cloud_function\" severity=ERROR \"function execution failed\"")
    // 设置观察窗口,示例为0秒,即匹配到日志立即触发告警
    .setDuration(Duration.newBuilder().setSeconds(0).build())
    .build();

// 组装为告警策略的Condition对象
Condition condition = Condition.newBuilder()
    .setDisplayName("云函数执行错误日志告警")
    .setConditionMatch(logMatchCondition)
    .build();

// 后续将该Condition添加到AlertPolicy的conditions列表即可完成告警策略构造
AlertPolicy alertPolicy = AlertPolicy.newBuilder()
    .setDisplayName("自定义基于日志的告警策略")
    .addConditions(condition)
    // 补充其他配置:通知渠道、告警说明、生效时间段等
    .build();

注意事项

  • 如果你的日志查询需要跨项目,需要在filter语句中加上项目限定,格式为project="你的目标项目ID"
  • 持续窗口duration最长支持设置为24小时,最小为0秒
  • 如果你需要对匹配到的日志条数做阈值统计,需要先创建对应日志指标,再使用Threshold类型的条件实现

内容的提问来源于stack exchange,提问作者Jayleen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:48:05