跳到主要内容

Targets 与服务发现

Target 是 Prometheus 实际抓取的 HTTP 端点。每个 Target 带有发现标签、relabel 后标签、最近抓取时间、耗时、健康状态和错误信息。Targets 页面是采集故障的第一入口。

1. Target 概念​

job 表示一类采集任务,例如 node-exporter;instance 表示该任务下的具体目标,默认是 host:port。同一个业务可使用多个 job,但必须让查询、告警和 Dashboard 清楚区分它们。

# 每个 job 的健康 Target 数量
sum by (job) (up)

# 所有不可达的 Target
up == 0

2. Target 发现方式​

Static 配置​

适合数量少且地址稳定的主机。配置见 Prometheus 配置管理。

File Discovery​

适合由 CMDB、Terraform 或自动化任务生成目标清单:

scrape_configs:
- job_name: node-exporter
file_sd_configs:
- files: [/etc/prometheus/targets/*.json]
/etc/prometheus/targets/nodes.json
[
{"targets": ["node-01.internal.example:9100"], "labels": {"environment": "production"}}
]

生成文件应使用原子替换,避免 Prometheus 读取到半写入内容;同时监控自动化任务本身的失败。

Kubernetes Discovery​

Kubernetes 通过 API 动态发现 Pod、Service、Endpoint 或 Node。推荐使用 Prometheus Operator 的 ServiceMonitor/PodMonitor;原生 kubernetes_sd_configs 适合需要更细粒度 relabel 的场景。详见 Kubernetes 监控。

3. Target 状态​

UP 表示最近一次抓取成功,DOWN 表示请求失败、超时、认证失败、TLS 错误或解析失败。UP 不表示业务功能完全正常,只表示 Prometheus 能成功获取该端点的指标。

# 按 job 统计失败目标
sum by (job) (up == 0)

# 最近 15 分钟是否存在样本
present_over_time(up{job="node-exporter"}[15m])

4. Target 故障排查​

  1. 在 Targets 页面读取最新错误,而不是只看 DOWN 状态。
  2. 从 Prometheus 所在网络执行 DNS、TCP、TLS 与 HTTP /metrics 检查。
  3. 检查 Exporter 或应用进程、监听地址、认证与证书。
  4. 检查服务发现过滤条件、relabel 与 RBAC 是否误删目标。
  5. 检查抓取超时、Prometheus 负载和目标端点响应耗时。

Target 数据缺失、查询变慢和 TSDB 问题的进一步处理见 故障排查。