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

如何配置Google Cloud Monitoring告警向Discord频道发送通知

Google Cloud Monitoring告警推送Discord频道配置方案

注意:Google Cloud Monitoring原生Webhook的请求体格式不符合Discord Webhook接口规范,直接配置对接会推送失败,需要一层轻量格式转换,以下方案用GCP自带的Cloud Function做无服务转发,无需维护常驻服务器,成本极低。

前置准备

  • 拥有目标Discord频道的管理权限
  • 拥有对应GCP项目的监控管理员、Cloud Function编辑权限
  • 已在Cloud Monitoring中创建好需要触发通知的告警策略

步骤1:生成Discord频道Webhook地址

  • 打开Discord进入目标频道,点击频道名称旁的设置按钮
  • 在左侧菜单选择「集成」-「Webhook」,点击「新建Webhook」
  • 自定义Webhook名称(比如命名为GCP告警通知),确认推送的目标频道
  • 复制生成的Webhook地址,该地址请勿泄露,持有地址的人员可随意向频道推送消息,点击保存完成Discord侧配置

步骤2:部署格式转换Cloud Function

  • 打开GCP控制台进入Cloud Function页面,点击「创建函数」
  • 基础配置项填写:
    • 函数名称可自定义,比如gcp-to-discord-alert
    • 选择就近的部署区域
    • 触发器类型选择「HTTP」,勾选「允许未认证调用」,保存后复制生成的触发器HTTP地址,后续配置监控渠道需要用到
  • 运行时选择Python 3.10及以上版本,替换默认代码为以下内容:
import requests

def forward_alert(request):
    alert_data = request.get_json(silent=True)
    if not alert_data or "incident" not in alert_data:
        return "Invalid payload", 400

    incident = alert_data["incident"]
    # 组装Discord要求的消息格式
    discord_msg = {
        "username": "GCP监控告警",
        "embeds": [{
            "title": f"告警通知 - 状态:{incident.get('state', '未知')}",
            "color": 15158332 if incident.get('state') == "open" else 3066993,
            "fields": [
                {"name": "告警策略", "value": incident.get("policy_name", "未命名策略"), "inline": False},
                {"name": "关联资源", "value": incident.get("resource_name", "未知资源"), "inline": False},
                {"name": "触发时间", "value": incident.get("started_at", "未知时间"), "inline": False},
                {"name": "告警详情", "value": incident.get("summary", "无详情"), "inline": False}
            ]
        }]
    }
    # 将下方地址替换为步骤1复制的Discord Webhook地址
    DISCORD_WEBHOOK = "替换为你的Discord Webhook地址"
    resp = requests.post(DISCORD_WEBHOOK, json=discord_msg)
    return f"Push result: {resp.status_code}", 200
  • 打开requirements.txt文件,添加依赖项:
requests==2.32.3
  • 点击部署函数,等待2-3分钟部署完成后,可使用GCP告警模拟payload测试函数,确认Discord频道能收到测试消息

步骤3:配置Cloud Monitoring通知渠道

  • 打开Cloud Monitoring控制台,左侧菜单选择「通知渠道」
  • 找到Webhook类型,点击「添加新渠道」
  • 端点URL填写步骤2中复制的Cloud Function触发器HTTP地址,其余配置保持默认
  • 点击「测试发送」,确认Discord频道收到测试消息后保存渠道配置
  • 编辑需要推送Discord的告警策略,在通知选项中添加刚创建的Webhook渠道,保存后配置生效

验证与排错

  • 配置完成后可临时调整告警阈值触发测试告警,正常情况下1-3分钟内Discord频道会收到红色的告警触发消息,告警恢复后会收到绿色的恢复通知
  • 如果未收到消息,直接查看Cloud Function的运行日志,常见问题为Discord Webhook地址填写错误、函数权限配置错误、告警策略未关联对应通知渠道

注意事项

  • 该方案下Cloud Function调用量极低,中小团队使用基本在GCP免费额度覆盖范围内,不会产生额外费用
  • 如果不想使用Cloud Function,也可以自行部署服务实现同样的格式转换逻辑,核心逻辑就是接收GCP的告警payload、转换格式后转发到Discord Webhook接口

内容的提问来源于stack exchange,提问作者Phạm Hoài Lâm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 08:42:28