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

如何实现Zabbix与Webhook集成以接收Openshift(OCP)告警信息?

OCP Webhook 推送告警到 Zabbix 实现方案

完全可以实现,目前有两种成熟的落地方案,可根据你的Zabbix版本和自定义需求选择:

方案1:使用Zabbix原生Webhook功能(推荐,无额外依赖)

适用于Zabbix 5.0及以上版本、告警格式定制需求简单的场景

  • 配置Zabbix侧Webhook介质
    • 进入Zabbix管理界面,依次打开管理→介质类型→创建介质类型,类型选择Webhook
    • 在脚本编辑区域编写解析逻辑,将OCP Webhook payload的labels、annotations等字段映射到Zabbix要求的主机、告警名、级别、详情等标准字段,保存后即可得到Zabbix的Webhook接收地址
  • 配置OCP侧Alertmanager
    • 编辑Alertmanager配置文件,添加Zabbix Webhook接收器,示例配置如下:
receivers:
- name: zabbix-receiver
  webhook_configs:
  - url: "替换为你的Zabbix Webhook地址"
    send_resolved: true
  • 配置告警路由,将需要同步到Zabbix的告警规则指向上述zabbix-receiver,重载Alertmanager配置即可生效
  • 功能验证:手动触发OCP测试告警,确认Zabbix侧可正常生成告警事件,告警恢复时状态可同步更新

方案2:自定义转发服务(适配复杂场景)

适用于Zabbix版本低于5.0、需要对告警做二次过滤、补充元数据等定制化需求的场景

  • 开发轻量转发服务,可使用Python/Go等语言快速实现,核心逻辑如下:
    • 暴露HTTP接口接收OCP Alertmanager发送的Webhook告警
    • 解析告警payload,按照业务需求做字段加工、过滤逻辑
    • 调用zabbix_sender工具或者Zabbix API,将加工后的告警数据推送到Zabbix server
      以下是Python实现的核心代码示例:
from flask import Flask, request
import subprocess

app = Flask(__name__)
ZABBIX_SERVER_ADDR = "你的Zabbix Server地址"

@app.route("/ocp-alert", methods=["POST"])
def receive_ocp_alert():
    alerts = request.json.get("alerts", [])
    for alert in alerts:
        host = alert["labels"].get("namespace", "ocp-default-cluster")
        item_key = f'ocp.alert[{alert["labels"]["alertname"]}]'
        value = f"级别:{alert['labels']['severity']} 资源:{alert['labels'].get('pod','集群')} 详情:{alert['annotations']['description']}"
        # 调用zabbix_sender推送告警
        subprocess.run([
            "zabbix_sender", "-z", ZABBIX_SERVER_ADDR, "-s", host,
            "-k", item_key, "-o", value
        ], check=False)
    return {"code": 0, "msg": "success"}

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)
  • 部署转发服务到OCP集群内或与Zabbix网络打通的服务器上,配置健康检查保障可用性
  • OCP侧将Alertmanager的Webhook地址配置为转发服务的访问地址,Zabbix侧提前创建对应监控项和触发器即可

注意事项

  • 网络连通性:需确保OCP Alertmanager可访问Zabbix Webhook地址或自定义转发服务地址,使用zabbix_sender时需保证转发服务可访问Zabbix Server的10051端口
  • 状态同步:必须开启send_resolved配置,保证告警恢复信号可以同步到Zabbix,避免出现告警不自动关闭的问题
  • 安全配置:建议在Webhook地址中添加鉴权token参数,避免未授权请求发送伪造告警

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:54:01