数据源连接失败应先查看“save & test”报错:401/403为认证问题,connection failed或failed to fetch多因网络不通,502/504指向中间层异常;需依次检查dns解析、端口连通性、直连api验证服务状态、认证凭据一致性、中间层干扰及各类数据源健康接口。

数据源连接失败,先看 Save & Test 的具体报错——这是最直接的线索。401/403 说明认证出问题;Connection failed 或 Failed to fetch 多半是网络不通;502/504 往往指向中间层(如代理、反向代理或后端服务)异常。
检查网络连通性
别跳过这步,很多问题卡在底层。
- 确认 Grafana 能解析并访问目标地址:用
nslookup zabbix.example.com或dig +short查 DNS 是否正确 - 测试端口是否可达:
telnet zabbix.example.com 443或nc -zv zabbix.example.com 443 - 绕过 Grafana,直连后端 API 验证基础服务状态:
curl -v -k -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"apiinfo.version","id":1,"params":{}}' https://zabbix.example.com/api_jsonrpc.php
关注是否建立连接、返回 200、证书是否被信任
验证认证配置是否匹配
用户名、密码、Token、API Key 这类凭据必须和后端严格一致,大小写、空格、过期时间都算。
- Zabbix 场景:确认 Grafana 中填的用户名和密码,在 Zabbix Web 界面能正常登录;API Token 需在 Zabbix 用户设置中生成并启用
- InfluxDB2 场景:检查 Token 是否有对应 bucket 的读权限;Organization 名称必须与 Token 创建时绑定的组织完全一致(区分大小写)
- Prometheus/Exporter 类:若启用了 Basic Auth,确保 Grafana 数据源配置中勾选了「Basic auth」并填入正确凭据
排查中间层干扰
防火墙、代理、SELinux、Web 服务器状态都可能悄悄拦截请求。
- 查 Zabbix 所在主机的 Web 服务是否运行:
systemctl is-active nginx或apache2应返回active (running) - 检查是否有安全模块阻拦:
ausearch -m avc -ts recent | grep zabbix(SELinux)或aa-status | grep zabbix(AppArmor) - 如果 Grafana 经代理访问外部服务,确认
/etc/grafana/grafana.ini中[proxy]配置正确,且代理白名单包含目标域名
对照数据源类型做针对性验证
不同数据源的“健康接口”不一样,用对方法才能快速定位。
- Prometheus:访问
http://<host>:9090/api/v1/status/config</host>或/api/v1/query?query=up,看能否返回 JSON 响应 - mysqld_exporter:请求
http://<host>:9104/metrics</host>,搜mysql_up,值为 1 表示采集正常 - InfluxDB2:用 curl 带 Token 请求
http://<host>:8086/health</host>,响应应含"status":"pass"











