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

如何在GCP中自定义发送至PagerDuty的事件摘要?

自定义GCP告警发送至PagerDuty的事件摘要方法

完全可以对发送到PagerDuty的告警摘要进行自定义控制,主要有两种实用方案:

方案一:直接在告警策略中配置自定义通知内容

  • 编辑或创建GCP告警策略时,进入「通知渠道」设置,选择已配置的PagerDuty渠道后,找到自定义通知内容的高级选项(部分服务的告警配置里,该选项可能藏在「通知设置」的展开面板中)。
  • 你可以直接编写易懂的摘要文本,还能插入GCP提供的内置变量来动态填充告警细节,比如:
    • $resource.label.instance_name:告警关联的实例名称
    • $metric.display_name:监控指标的显示名称
    • $condition.value:当前指标的触发值
    • $condition.threshold:告警阈值
      举个例子,把默认的晦涩摘要替换成:实例[$resource.label.instance_name]的$metric.display_name超出阈值$condition.threshold%,当前值为$condition.value%,这样接收方一眼就能看懂告警核心信息。

方案二:通过Cloud Functions/Pub/Sub做中间处理(适合复杂场景)

如果需要更灵活的逻辑(比如根据告警类型动态生成不同风格的摘要、添加业务专属上下文),可以通过以下流程实现:

  1. 将GCP告警的目标通知渠道设置为Pub/Sub主题,让原始告警事件先发送到该主题。
  2. 创建Cloud Functions订阅这个Pub/Sub主题,编写代码解析原始告警的JSON payload,提取关键字段后重新构造符合需求的摘要。
  3. 调用PagerDuty的Events API,把自定义后的事件发送到PagerDuty。

示例Python代码片段:

import requests
import json

def process_gcp_alert(event, context):
    # 解析Pub/Sub传入的原始告警数据
    alert_data = json.loads(event['data'].decode('utf-8'))
    incident_details = alert_data.get('incident', {})
    resource_labels = alert_data.get('resource', {}).get('labels', {})
    
    # 提取关键信息
    instance_name = resource_labels.get('instance_name', '未知实例')
    metric_name = incident_details.get('condition', {}).get('metric', {}).get('displayName', '未知指标')
    current_value = incident_details.get('condition', {}).get('value', 'N/A')
    threshold = incident_details.get('condition', {}).get('thresholdValue', 'N/A')
    
    # 构造自定义摘要
    custom_summary = f"GCP业务告警:{instance_name}的{metric_name}触发阈值,当前值{current_value},阈值{threshold}"
    
    # 发送到PagerDuty
    pagerduty_payload = {
        "routing_key": "YOUR_PAGERDUTY_ROUTING_KEY",
        "event_action": "trigger",
        "payload": {
            "summary": custom_summary,
            "source": "GCP监控系统",
            "severity": "critical"
        }
    }
    requests.post(
        "https://events.pagerduty.com/v2/enqueue",
        headers={"Content-Type": "application/json"},
        json=pagerduty_payload
    )

注意事项

  • 使用自定义通知内容时,要确认所用变量在当前告警的payload中存在,避免出现空值或无效信息。
  • 采用Cloud Functions方案时,需给函数配置足够的IAM权限:允许读取Pub/Sub消息,同时允许调用PagerDuty的API。

内容的提问来源于stack exchange,提问作者Gratus D.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:15:21