问题说明
本文用于排查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状态码和发生时间。
处理方式
- 恢复Grafana或Prometheus服务,修正数据源地址、反向代理和服务端口。
- 修正Prometheus目标配置或云平台指标连接,确保目标健康且包含ZCenter需要的资源标签。
- 通过受支持的任务管理流程恢复监控同步任务;等待一个同步周期后再查询数据。
- 修正资源、云类型或时间范围选择。单个资源异常时优先定位该资源,不要重建全部Dashboard。
- 不要直接删除Prometheus历史数据、批量清空监控表或手动修改Prometheus时序数据。
验证方法
- Grafana验证:
/api/health和/api/datasources返回正常,Dashboard变量能加载。 - Prometheus验证:目标健康,
cpu_util{moUuid="<MO_UUID>"}等查询返回数据。 - 任务验证:
task_5持续运行,监控配置的更新时间持续变化。 - 接口验证:
QueryVmMonitorData等资源监控接口返回指标数据。 - 页面验证:刷新Dashboard后,云环境、资源下拉列表和监控曲线均正常显示。
风险与回滚
- 修改Grafana数据源、Prometheus目标或任务配置前记录原配置,避免影响其他云环境。
- 恢复任务时不要同时修改采集周期、时间范围和数据源,以便区分处理效果。
- 配置变更异常时恢复原配置;不要通过删除监控数据或重建全部Dashboard回滚。
补充信息
- 监控数据同步由VM服务的
syncMetricDataTask处理,具体执行周期以目标环境任务配置为准。
