最常见原因是 grafana-server 默认绑定 127.0.0.1:3000,导致外部无法访问;需修改 grafana.ini 中 http_addr = 0.0.0.0 并重启服务。

为什么 grafana-server 启动后访问不了 3000 端口
最常见原因是服务没真正监听在 0.0.0.0:3000,而是绑定了 127.0.0.1:3000(默认行为),导致宿主机外无法访问。
检查方式:ss -tlnp | grep :3000,看 Local Address:Port 列是不是 *:3000 或 0.0.0.0:3000;如果是 127.0.0.1:3000,就得改配置。
- 修改
/etc/grafana/grafana.ini,找到[server]段,把http_addr = 127.0.0.1改成http_addr = 0.0.0.0 - 确认
http_port是3000(别被防火墙或 systemd socket 占用) - 重启服务:
sudo systemctl restart grafana-server,再查一遍ss输出 - 如果用 Docker 启动,必须加
-p 3000:3000,且镜像内配置仍需设为0.0.0.0,否则容器网络层不转发
添加 Prometheus 数据源时显示 “Failed to fetch”
不是 Grafana 配置错,而是它根本连不上 Prometheus 的 /api/v1/status/config 接口。Grafana 运行在服务端,所有请求都从服务端发起,不是浏览器发的 —— 所以填 localhost:9090 在容器或远程部署时必然失败。
典型错误场景:Prometheus 跑在本机 Docker,Grafana 跑在另一台服务器;或者两者都在同一台机器但用了不同网络模式(如 host vs bridge)。
- 填数据源 URL 时,用能被 Grafana 进程直接访问的地址,比如
http://prometheus-host:9090(确保 DNS 或 hosts 可解析) - 如果 Prometheus 开了认证,必须在数据源配置里勾选
Basic Auth并填用户名密码,不能只靠反向代理透传 - 检查 Grafana 日志:
journalctl -u grafana-server -n 50 -f,搜HTTP GET和timeout关键字 - 临时验证连通性:进 Grafana 容器或服务器执行
curl -v http://<em>your-prom-url</em>/api/v1/status/config,看是否返回 JSON
rate() 和 irate() 在面板里数值跳变太大
这不是 bug,是函数设计使然:rate() 基于时间窗口内总增量平滑计算每秒速率,适合观察长期趋势;irate() 只取最近两个样本点算瞬时变化率,对短周期抖动极度敏感 —— 尤其当 Prometheus 抓取间隔不稳、或指标本身采样稀疏时。
韩顺平,毕业于清华大学,国内著名的软件培训高级讲师,先后在新浪、点击科技、用友就职。 主持或参与《新浪邮件系统》、《橙红sns(社会化网络)网站》、《点击科技协同软件群组服务器端(Linux/solaris平台)》、《国家总参语音监控系统》、《英语学习机系统》、《用友erp(u8产品)系统》等项目。实战经验丰富,授课耐心细致,通俗易懂,勇于实践,勤于创新,授课风格贴近生活,授课语言生动风趣,多年
比如抓取间隔是 15s,但某次延迟到 40s,irate() 就会把这 40s 的增量全摊到“最后 2 个点之间”,造成虚高。
- 监控 QPS、HTTP 错误率这类业务指标,优先用
rate(http_requests_total[5m]),5m 是稳妥下限 - 调试突发毛刺时才用
irate(),且必须配合足够密的抓取间隔(≤10s)和稳定 scrape_target - 避免在
irate()外再套sum by()等聚合,会放大误差;先聚合再算速率更合理 - 如果面板刷新频繁(irate() 图形会疯狂闪烁,建议调大面板刷新间隔或换
rate()
仪表盘导入后变量不生效、下拉为空
变量(Variables)是 Grafana 的运行时逻辑,不会随 JSON 导入自动重建 —— 导入只是覆盖面板布局和查询语句,变量定义必须单独配置。
现象:导入 JSON 后,面板里写着 $job,但顶部变量下拉框是空的,查询也报 Variable not found。
- 进该 dashboard 设置 →
Variables→ 点右上角Add variable,手动补全名称、类型(如Query)、数据源、查询语句(如label_values(up, job)) - 注意变量名大小写必须和面板查询里完全一致(
$Job≠$job) - 如果变量类型是
Custom或Ad hoc,它们不依赖数据源,但需确认是否被 dashboard JSON 里的templating.list正确引用 - 某些旧版导出 JSON 里变量定义嵌在顶层字段,新版 Grafana 可能忽略;建议统一用 UI 创建变量,再导出
变量逻辑跑在前端还是后端不重要,关键是 Grafana server 启动后要能执行变量查询语句并缓存结果。任何一步断开(权限、语法、超时),下拉就为空。









