Linux/监控 生产排查台账:Prometheus 动态接入新 Linux 服务器 (纳管指南)
01 前置理论与核心机制
1. Prometheus 的 Pull(拉取)模型本质
- 时序采集机制:Prometheus 的核心架构为“时序数据库 + 定时拉取器”。它会按照配置的目标地址(Targets),按固定周期向被监控节点暴露的
/metrics接口发起 HTTP GET 请求,拉取监控指标并持久化到本地时序数据库(TSDB)中。 - 采集端格式标准化:Prometheus 不限制被监控端的具体实现方式(无论是标准的官方
Node Exporter还是自定义的 Python/Go 脚本)。只要目标接口返回符合 Prometheus 规范的纯文本指标格式(Text-based Exposition Format),服务端即可正常解析并入库。
2. 文件服务发现 (File-Based Service Discovery)
- 规避主配置频繁重载:若将所有服务器的 IP 硬编码在主配置文件
prometheus.yml的static_configs中,每次扩缩容节点都需要修改主配置文件并执行服务重载(Reload)或重启。 - 配置解耦与动态感知:生产环境通常采用文件服务发现(
file_sd_configs),将监控目标列表抽离至独立的外部 YAML 或 JSON 文件中(如nodes.yml)。Prometheus 会通过文件系统事件监听或定时轮询自动热加载该文件,实现真正的动态纳管与零重启接入。
02 故障排查与纳管闭环 SOP
当有新上线的 Linux 服务器(如 192.168.0.89)需要接入 Prometheus 服务端(如 192.168.0.88)时,按以下标准步骤配置:
步骤一:被监控端部署并验证 Metrics 接口
在被监控节点(89 号机器)上启动监控采集程序(如 node_exporter 或自定义 Exporter 脚本),确保其在指定端口(默认 9100)正常监听并暴露指标:
# 在被监控节点启动采集程序 (生产环境建议使用 systemd 托管)
nohup python3 custom_exporter.py >/dev/null 2>&1 &
# 验证本地接口输出格式是否符合 Prometheus 文本规范
curl -s http://localhost:9100/metrics | head -n 20
- 观测点:确认返回文本中包含标准的
# HELP、# TYPE注释行以及具体的指标键值对,表明采集端数据就绪。
步骤二:配置主文件引入文件服务发现
在 Prometheus 服务端(88 号机器),编辑主配置文件 /opt/monitoring/prometheus.yml,使用 file_sd_configs 关联外部目标文件路径:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'linux-nodes'
file_sd_configs:
- files:
- /opt/monitoring/targets/nodes.yml
refresh_interval: 1m