跳转到主内容
极星编程网:以代码为星,赴技术山海!

Linux Prometheus 部署与指标采集

Prometheus target 显示 DOWN 的最常见原因是 scrape_config 中 target 端口错误,如将 node_exporter 的 :9100 误写为 :9090;需核对 static_configs 下 targets 端口与实际服务监听端口(node_exporter 默认 0.0.0.0:9100)是否一致。 prometheus.yml 配置文件写错端口导致 target 一直显示 down Prometheus 启动后 target 状态始终是
DOWN
,最常见原因是
scrape_config
里写的
target
地址端口不对,比如把
node_exporter
默认的
:9100
写成
:9090
(那是 Prometheus 自己的 Web 端口)。
curl http://localhost:9100/metrics
能通,但 Prometheus 抓不到,基本就是配置里地址或端口拼错了。 检查
prometheus.yml
中
static_configs
下的
targets
,确认端口和实际服务监听端口一致
node_exporter
默认监听
0.0.0.0:9100
,
cadvisor
是
:8080
,
blackbox_exporter
是
:9115
——别凭印象写 如果 target 是域名或内网 DNS 名,确保 Prometheus 容器或进程能正常解析并访问该地址(宿主机网络、Docker 网络模式、k8s Service DNS 都可能影响) systemd 启动 Prometheus 报 failed to load configuration 用 systemd 管理 Prometheus 时,启动失败日志里出现
failed to load configuration
,大概率是
prometheus.yml
有 YAML 语法错误,比如缩进不一致、用了 tab 而不是空格、漏了冒号或引号。 先手动运行
prometheus --config.file=/etc/prometheus/prometheus.yml --dry-run
,它会校验配置并报具体哪一行出错 YAML 对缩进极其敏感:所有
scrape_configs
下的字段必须比上一级多两个空格,
static_configs
和
metrics_path
必须对齐,不能一个缩进 2 个、一个缩进 4 个 路径中如果有变量(如
${HOSTNAME}
),Prometheus 不支持 shell 展开,得用 relabel_configs 或外部模板工具预处理 node_exporter 没有磁盘 IO 或进程数指标 部署完
node_exporter
,发现 Grafana 里看不到
node_disk_io_time_seconds_total
或
node_processes_threads
这类指标,不是采集问题,而是默认启动没开对应收集器。 CentOS Linux 7.9.2009 CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。 下载
node_exporter
默认只启用基础收集器(cpu、mem、load),IO、进程、硬件传感器等需显式开启,例如:
node_exporter --collectors.enabled="cpu,mem,load,diskstats,processes"
注意
diskstats
收集的是块设备 IO,不是文件系统使用率;后者靠
filesystem
收集器(对应
node_filesystem_avail_bytes
) 某些收集器需要额外权限:比如
systemd
收集器要读
/run/systemd/system
,在容器里得挂载
/run
目录;
textfile
收集器依赖
--collector.textfile.directory
参数指定路径 Prometheus 内存暴涨、查询变慢甚至 OOM 跑几天后 Prometheus 进程 RSS 内存持续上涨,Web 页面响应卡顿,
/api/v1/query
超时,通常不是 bug,而是时间序列数量失控或保留策略没设好。 检查
tsdb
数据量:
du -sh /var/lib/prometheus/data/
,如果单日增长超 1GB,大概率有高基数标签(比如带用户 ID、请求 URL 全路径的 metric) 限制采集频率:高频抓取(
scrape_interval: 5s
)+ 大量 targets 容易撑爆内存,生产环境建议
15s–60s
,
node_exporter
通常
30s
就够 务必配
storage.tsdb.retention.time
(如
15d
),否则数据无限堆积;同时确认磁盘有足够空间,TSDB 压缩失败也会导致内存缓存积压 指标基数、label 组合爆炸、retention 和 scrape_interval 的搭配,这几个地方一松动,Prometheus 就容易从监控工具变成被监控对象。

相关文章