17.2.6 初始目标与自监控配置
初始目标与自监控配置的目标是让 Prometheus 在安装完成后即刻采集自身指标(/metrics),并作为后续新增目标的模板。最小可用配置包含 global 与 scrape_configs,其中 job_name: prometheus 是自监控作业。
原理草图(自监控链路):
基础配置示例(完整可运行):
# /etc/prometheus/prometheus.yml
global:
scrape_interval: 15s # 全局抓取频率
scrape_timeout: 10s # 全局抓取超时
scrape_configs:
- job_name: "prometheus" # 作业名称
static_configs:
- targets: ["127.0.0.1:9090"] # 自监控目标
应用配置与重载(systemd 服务示例):
# 启动/重启 Prometheus(若已安装为 systemd 服务)
systemctl restart prometheus
systemctl status prometheus --no-pager
# 在线重载(若已启用 --web.enable-lifecycle)
curl -X POST http://127.0.0.1:9090/-/reload
关键命令解释:
- systemctl restart prometheus:加载新配置并重启服务。
- systemctl status prometheus:确认进程与监听端口。
- curl -X POST .../-/reload:不中断服务热加载配置(需启动参数支持)。
自监控验证步骤:
# 1) 目标是否可达
curl -s http://127.0.0.1:9090/targets | grep -A2 "prometheus"
# 2) 直接访问指标端点
curl -s http://127.0.0.1:9090/metrics | head -n 5
# 3) 使用 PromQL 验证
# 在 Prometheus UI /graph 查询以下表达式:
# up{job="prometheus"}
# prometheus_tsdb_head_series
# process_resident_memory_bytes
初期应关注的自监控指标与含义:
- up:目标可达性(1=可达,0=不可达)
- scrape_duration_seconds:抓取耗时
- scrape_samples_post_metric_relabeling:采样数量
- prometheus_tsdb_head_series:内存中时序规模
- process_resident_memory_bytes:进程常驻内存
常见问题与排错(含命令):
1) 目标显示 DOWN
原因:端口未监听或目标地址错误
排查:
ss -lntp | grep 9090
curl -s http://127.0.0.1:9090/-/healthy
2) 配置加载失败
原因:YAML 语法错误或缩进问题
排查:
promtool check config /etc/prometheus/prometheus.yml
3) 容器部署下目标不可达
原因:容器内外地址不一致
修复思路:使用容器网络内地址或 host.docker.internal(视平台而定)。
练习与巩固:
1) 将 scrape_interval 改为 5s,重载配置并观察 scrape_duration_seconds 的变化。
2) 新增一个自定义标签:
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["127.0.0.1:9090"]
labels:
env: "dev"
在 UI 查询:up{job="prometheus", env="dev"} 验证标签生效。
3) 观察 prometheus_tsdb_head_series 随时间变化并记录基线值,作为后续容量评估参考。