文档目录

问题说明

本文用于排查“HTTP 通知对象 / 第三方应用对接”类问题。

适用环境

  • 产品:ZCF
  • 版本:4.x、5.x
  • 组件:Cloud
  • 涉及对象:告警中心、报警器、HTTP 应用通知对象、客户侧 HTTP 接收程序
  • 场景:客户通过 HTTP URL 接收 ZStack Cloud 告警并接入第三方平台。

问题现象

  • 平台侧报警器触发后,HTTP 应用通知对象被调用。
  • 客户侧应用可以感知到告警触发或 HTTP 请求到达。
  • 客户侧应用读取到的告警内容为空,无法解析告警详情。

可能原因

  • 客户侧 HTTP 应用或网关过滤了请求体。
  • 客户程序只读取了 URL、Header 或状态码,未正确读取 Body。
  • 客户侧应用框架对 Content-Type、请求方法或 Body 解析方式有限制。
  • 平台侧通知发送失败,但客户侧将其他探测请求误认为告警请求。

排查步骤

  1. 确认报警器已触发,并记录报警器 uuid、通知对象 uuid、触发时间和告警内容。
  2. 检查管理节点日志,确认平台侧是否发送 HTTP 请求,以及发送过程是否有异常。
  3. 在客户侧 HTTP 接收端打印完整请求,包括 Method、Path、Header、Body 和响应码。
  4. 如果管理节点无发送失败记录,而客户侧能看到请求但 Body 为空,重点检查客户程序是否过滤或未读取请求体。
  5. 使用临时测试接收端复现,例如一个只记录原始请求的 HTTP 服务,隔离客户业务程序逻辑。

关键命令

grep -a -nE "Alarm|alarm|notification|notify|webhook|HTTP" /usr/local/zstack/apache-tomcat/logs/management-server.log*

解决方案

  • 客户侧修改 HTTP 应用程序,使其保留并解析 ZStack Cloud 推送的请求体。
  • 必要时调整客户侧网关、反向代理或应用框架的 Body 透传/解析规则。
  • 重新触发测试告警,确认客户侧能记录完整 Body。

验证方法

  • 平台侧无通知发送失败日志。
  • 客户侧 HTTP 日志能看到完整请求体。
  • 第三方平台能从请求体中解析告警标题、对象、级别和触发时间。

风险与回滚

  • 不要只凭客户侧“收到请求”判断 ZStack Cloud 已发送完整内容。
  • 客户侧程序调整可能影响既有告警接收流程,建议先用测试 URL 验证。

注意事项

  • 涉及管理服务、数据库、证书、权限、审计和安全配置调整时,应先确认 HA 状态、业务窗口、回退方案和合规保留要求。
  • 若需要数据库修改、底层文件处理、锁释放、服务重启、驱动/固件升级或批量资源变更,应联系 ZStack 官方技术支持确认后再执行。
ZStack Cloud HTTP 通知对象告警内容为空排查 | 故障排查 · KB | ZStack 资源中心