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

如何在Slack的BigQuery定时查询失败告警中显示其显示名称?

解决BigQuery定时查询失败告警中添加显示名称到Slack的问题

问题分析

当前告警过滤规则仅匹配定时查询的失败日志,但日志默认不直接包含定时查询的显示名称——这个名称存储在定时查询的元数据里,而非jobservice.insert的日志payload中。

解决方案

要在Slack告警中显示定时查询的显示名称,可按以下步骤调整配置:

  • 提取定时查询ID
    定时查询的日志里,protoPayload.serviceData.jobInsertRequest.resource.jobConfiguration.query.query字段包含格式为bqts_xxxxxxxxxxxxxx的定时查询ID。在告警策略的日志提取配置中添加规则:

    • 提取字段名:scheduled_query_id
    • 正则表达式:bqts_[a-f0-9]+
  • 关联元数据获取显示名称
    BigQuery的INFORMATION_SCHEMA.SCHEDULED_QUERIES表存储了所有定时查询的元数据,其中schedule_id对应提取到的bqts_xxx格式ID,display_name就是你需要的显示名称。可通过两种方式关联:

    1. 创建日志导出Sink,将失败日志同步到BigQuery表,用SQL关联SCHEDULED_QUERIES表获取显示名称,再基于该结果配置告警;
    2. 用Cloud Functions编写逻辑,在告警触发时查询SCHEDULED_QUERIES表,将显示名称填充到Slack消息中。
  • 自定义Slack告警消息
    在告警的通知设置里编辑Slack消息模板,插入获取到的显示名称,示例:

    BigQuery定时查询「${display_name}」执行失败,错误信息:${protoPayload.status.message}

简化替代方案

创建定时查询时,手动添加自定义标签(比如display_name: "用户行为统计查询"),此时日志的protoPayload.serviceData.jobInsertRequest.resource.jobConfiguration.labels会包含该标签,直接在告警消息中引用${protoPayload.serviceData.jobInsertRequest.resource.jobConfiguration.labels.display_name}即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:20:34