需先部署 prometheus 并确认其运行正常,再在 grafana 中添加 prometheus 数据源(url 填宿主机或 docker 内可达地址),保存测试成功后即可读取数据。

怎么让 Grafana 读到 Prometheus 数据
Grafana 本身不采集指标,它只是画图工具。想看到 Linux 监控数据,第一步是确保后端有可用的数据源——最常见的是 Prometheus。如果你只装了 Grafana,面板里会一直显示 No data 或 Data source is not available。
实操建议:
- 确认
Prometheus已运行,且http://localhost:9090/metrics能返回文本格式指标(比如含node_cpu_seconds_total) - 在 Grafana Web 界面 → Configuration → Data Sources → Add data source,选
Prometheus - URL 填
http://host.docker.internal:9090(Docker 情况下),或http://192.168.x.x:9090(宿主机直连),别填localhost——Grafana 容器里没有这个地址 - 点
Save & test,出现Success才算真正通了
用 node_exporter 抓 Linux 主机指标要改哪些配置
node_exporter 是专为 Linux/Unix 设计的指标暴露器,但它默认只开基础采集器(cpu、mem、diskstats),像 systemd 状态、netstat 连接数、textfile 自定义指标都得手动开。
常见错误现象:面板里看不到服务状态、网络连接数为 0、自定义脚本输出没进 Grafana。
实操建议:
- 启动时加
--collectors.enabled参数,例如:./node_exporter --collectors.enabled="cpu,mem,systemd,netstat,textfile" - 若用 systemd 启动,编辑
/etc/systemd/system/node_exporter.service,在ExecStart=行末尾补上启用项 -
textfile需额外指定目录:--collector.textfile.directory="/var/lib/node_exporter/textfile_collector",且文件必须以.prom结尾、权限对node_exporter用户可读 - 改完记得
systemctl daemon-reload && systemctl restart node_exporter,再 curl 一下/metrics确认新指标已出现
导入现成面板时 metrics 名字对不上怎么办
从 Grafana.com 下载的 Linux 面板(比如 ID 1860 或 8919),默认查的是 node_cpu_seconds_total 这类标准名。但如果你用的是旧版 node_exporter(v0.x)、自定义重命名、或用了 relabel_configs,指标名可能变成 node_cpu_usage 或带额外 label,结果所有图表空着。
实操建议:
- 先在 Prometheus 的 Graph 页面手写查询:
count(node_cpu_seconds_total),看有没有结果;没有就说明名字不对 - 打开面板 JSON(Dashboard settings → JSON Model),搜
node_cpu_seconds_total,替换成你实际有的指标名,比如10x_node_cpu_seconds_total - 更稳妥的做法是在 Prometheus 的
scrape_configs里用metric_relabel_configs统一重命名,而不是改每个面板 - 注意 label 键也要对齐:
instance不能写成host,否则变量$__rate_interval之类内置函数会失效
为什么仪表盘刷新慢或查询超时
Linux 监控面板卡顿,90% 不是 Grafana 问题,而是 Prometheus 查询压力大或数据量爆炸。尤其当你开了 netstat、processes 这类高基数采集器,一个节点就可能产生上万时间序列,rate(node_network_receive_bytes_total[5m]) 这种查询会直接拖垮响应。
实操建议:
- 检查
prometheus_target_metadata_cache_size和prometheus_tsdb_head_chunks_write_queue_size,但更关键是控制采集粒度 - 关掉不用的 collector:
--collectors.disabled="bonding,drbd,ipvs,mdadm,ntp,sockstat,wifi,xfs,zfs" - 降低 scrape 间隔:把
scrape_interval: 15s改成30s或1m,别盲目追求“实时” - 在 Grafana 面板右上角调小
Min time interval(如设为30s),避免前端高频刷无效请求
复杂点在于:指标名、采集频率、Prometheus 内存限制、Grafana 查询缓存这四者要一起调,单改一个基本没用。最容易被忽略的是 node_exporter 默认开启的 timex 和 thermal_zone,它们在某些云主机上会反复失败并打满日志,得关掉。










