static_configs 是什么
static_configs 是 Prometheus 里最直接的目标声明方式:在任务下写 targets 列表并附加标签,配置一次即可长期生效。它适合目标数量少、或由配置管理工具统一生成的场景;规模变大、实例频繁伸缩后应替换为 file_sd 或平台服务发现,否则每次变更都要改配置并重载。
基本信息
| 配置位置 | scrape_configs[].static_configs |
|---|---|
| 目标写法 | targets: [ip:port, ...] |
| 标签 | labels 附加到该组全部目标 |
| 生效方式 | 改配置后需重载或重启 |
| 适用规模 | 目标少且稳定 |
| 演进方向 | file_sd / kubernetes_sd / 平台服务发现 |
典型使用场景
- 小型环境里手工维护十几台机器的监控目标
- 由 Ansible 等配置管理工具生成配置,机器清单变更时同步更新
- 给不同角色的目标打标签(master/replica、prod/test)便于查询
- 临时接入几台新机器做验证,稳定后再迁移到服务发现
- 为固定地址的中间件(数据库、缓存)配置采集目标
- 教学与 PoC 环境中快速搭起可用的抓取配置
多目标与按目标打标
多目标与按目标打标
scrape_configs:
- job_name: mysql
static_configs:
- targets:
- 10.0.3.11:9104 # 主库
- 10.0.3.12:9104 # 从库
labels:
role: mysql
env: prod
- targets: [10.0.3.21:9104]
labels:
role: mysql
env: test # 不同组可打不同标签字段说明
| 字段 | 作用 | 注意 |
|---|---|---|
| targets | 目标地址列表 | 格式为 host:port |
| labels | 附加标签 | 作用于该组全部目标 |
| job_name | 任务名 | 会成为 job 标签 |
| metrics_path | 指标路径 | 默认 /metrics |
| scheme | 协议 | 默认 http,可改 https |
静态目标不会随实例变化自动更新;实例频繁伸缩时应迁移到 file_sd 或平台服务发现,让目标清单自动跟随。
targets 变更需要重载配置才会生效,漏重载会导致新实例未被采集,或已下线实例持续显示异常。
同一 job 下可以写多个 static_configs 组,每组带自己的标签,适合按环境或角色分组管理。
静态列表写进版本库后要配套下线流程:机器退役时同步删除目标,否则长期 up=0 会形成噪声并干扰告警。