文档目录

问题说明

本文用于排查ZCenter监控报表页面空白、Grafana面板无曲线或资源监控接口返回空数据的问题。空白现象可能发生在Grafana、Prometheus、监控同步任务、目标资源标签或云平台指标接口中的任一环节,不能直接判定为Grafana故障。

现象

  • 进入监控报表后页面空白,或面板显示“No data”。
  • 监控页面能打开,但云环境、资源下拉列表为空。
  • 只有某个资源无数据,其他资源正常;或者所有资源均无数据。
  • 监控接口返回空数组,Prometheus查询没有匹配到时间序列。
  • VM服务日志可能出现 MetricDataApiImpl has no executable configuration info、the mo didn't get any metric data!、sync cloud metric error! 或 sync metric data error!。

适用环境

  • 产品:ZCenter
  • 版本:5.1.0
  • 组件:VM服务、Prometheus、Grafana、监控同步任务
  • 资源类型:云主机、物理主机、裸金属主机或存储资源

可能原因

  • Grafana不可访问、数据源缺失或Prometheus数据源URL与ZCenter配置不一致。
  • Prometheus未运行、目标采集状态异常,或目标缺少moUuid、nodeType等必要标签。
  • syncMetricDataTask被暂停、未构建、配置不存在或执行失败。
  • 云平台监控插件未返回指标,或者目标资源没有可用监控数据。
  • 查询使用的moUuid、云类型或资源类型不正确。
  • Grafana默认只查询最近30分钟,数据存在但不在当前时间范围内。

排查步骤

1. 确认影响范围

  • 记录资源的ZCenter moUuid、云账号、云类型、资源类型、页面URL、选择的时间范围和发生时间。
  • 分别确认是单个资源、单个云环境,还是全部资源无数据。
  • 注意:Grafana查询使用ZCenter的moUuid,不能直接把云平台的originalId当作moUuid。

2. 检查Grafana

  • 命令:
  curl -sS -i http://<grafana-host>:3000/api/health
  • 检查项:通过Grafana管理页面或使用部署环境认可的认证方式查询/api/datasources,不要把Grafana管理员密码直接写入命令历史或工单。
  • 预期结果:Grafana可访问,认证后的数据源列表中存在与当前Prometheus地址一致的数据源。未认证请求返回401只能证明HTTP服务可达,不能证明数据源异常。
  • 异常处理:Grafana不可达时检查进程、监听地址、反向代理和防火墙;数据源缺失或URL不一致时按部署规范修正Grafana数据源配置。

3. 检查Prometheus及目标状态

  • 命令:
  curl -sS -i http://<prometheus-host>:9090/-/healthy
  curl -sS http://<prometheus-host>:9090/api/v1/targets
  curl -sS --get http://<prometheus-host>:9090/api/v1/query --data-urlencode 'query=up'
  • 预期结果:Prometheus健康,目标处于可用状态,并包含目标资源的moUuid、originalId、nodeType和cloudType等标签。
  • 异常处理:Prometheus不可达时检查服务和端口;目标不健康时检查云平台指标接口、网络和目标配置;标签缺失时继续检查ZCenter监控同步和资源映射。

4. 查询目标资源的实际时间序列

  • 命令:
  curl -sS --get http://<prometheus-host>:9090/api/v1/query \
    --data-urlencode 'query=cpu_util{moUuid="<MO_UUID>"}'
  • 预期结果:返回目标资源的指标数据。
  • 异常处理:结果为空时检查moUuid是否正确、时间范围是否覆盖数据产生时间,并搜索VM服务日志中的指标同步错误。内置面板默认时间范围约为最近30分钟。

5. 检查监控任务和云级配置

  • UI路径:进入任务管理,检查监控指标同步任务task_5及对应云环境的监控配置。
  • 检查项:任务状态、执行时间、Cron配置、云类型监控配置、起止时间和执行间隔。
  • 预期结果:task_5处于运行状态,对应云环境存在可执行监控配置,最近执行时间持续更新。
  • 异常处理:任务暂停或未构建时,使用平台支持的任务管理流程恢复;不要直接修改任务表或手动插入监控配置。

6. 检查ZCenter监控接口和变量接口

  • 监控资源接口示例:GET /api/vm/v4/resource/QueryVmMonitorData?moUuid=<MO_UUID>。
  • Grafana变量接口示例:GET /api/portal/v4/pub/monitor/grafana/getCloudType、GET /api/portal/v4/pub/monitor/grafana/getVm?cloudType=<CLOUD_TYPE>。
  • 预期结果:接口能返回目标资源和指标数据,云类型和资源下拉列表不为空。
  • 异常处理:接口返回空数据时检查资源纳管状态、云账号状态和对应云平台监控插件;接口有数据但Grafana为空时,重点检查数据源、Dashboard变量和Prometheus标签。

7. 收集支持信息

  • Grafana、Prometheus、VM服务日志及目标资源的moUuid。
  • Prometheus /api/v1/targets和目标指标查询结果。
  • 监控任务状态、最近执行时间、云类型和时间范围。
  • 页面请求URL、HTTP状态码和发生时间。

处理方式

  1. 恢复Grafana或Prometheus服务,修正数据源地址、反向代理和服务端口。
  2. 修正Prometheus目标配置或云平台指标连接,确保目标健康且包含ZCenter需要的资源标签。
  3. 通过受支持的任务管理流程恢复监控同步任务;等待一个同步周期后再查询数据。
  4. 修正资源、云类型或时间范围选择。单个资源异常时优先定位该资源,不要重建全部Dashboard。
  5. 不要直接删除Prometheus历史数据、批量清空监控表或手动修改Prometheus时序数据。

验证方法

  • Grafana验证:/api/health和/api/datasources返回正常,Dashboard变量能加载。
  • Prometheus验证:目标健康,cpu_util{moUuid="<MO_UUID>"}等查询返回数据。
  • 任务验证:task_5持续运行,监控配置的更新时间持续变化。
  • 接口验证:QueryVmMonitorData等资源监控接口返回指标数据。
  • 页面验证:刷新Dashboard后,云环境、资源下拉列表和监控曲线均正常显示。

风险与回滚

  • 修改Grafana数据源、Prometheus目标或任务配置前记录原配置,避免影响其他云环境。
  • 恢复任务时不要同时修改采集周期、时间范围和数据源,以便区分处理效果。
  • 配置变更异常时恢复原配置;不要通过删除监控数据或重建全部Dashboard回滚。

补充信息

  • 监控数据同步由VM服务的syncMetricDataTask处理,具体执行周期以目标环境任务配置为准。
ZCenter 监控报表无数据或页面空白,如何排查? | 故障排查 · KB | ZStack 资源中心