# Prometheus 全局配置
global:
# 采集数据的间隔时间(默认 15s)
scrape_interval: 15s
# 评估告警规则的间隔时间(默认 15s)
evaluation_interval: 15s
# 抓取目标超时时间(默认 10s)
scrape_timeout: 10s
# 外部标签:会添加到所有时间序列和告警上(可用于区分环境,如 prod/test)
external_labels:
monitor: "prometheus-monitor"
# Alertmanager 配置(指定告警接收器)
alerting:
alertmanagers:
- static_configs:
- targets:
# Alertmanager 服务地址(需替换为实际地址)
- 'alertmanager:9093'
# 与 Alertmanager 通信的超时时间
timeout: 10s
# 告警规则文件配置(从文件加载告警规则)
rule_files:
# - "first_rules.yml" # 示例规则文件(取消注释并替换为实际路径)
# - "second_rules.yml"
# 抓取目标配置(定义需要采集监控数据的服务)
scrape_configs:
# 配置名称(自定义,用于标识一组目标)
- job_name: "prometheus" # 采集 Prometheus 自身的监控数据
# 覆盖全局的采集间隔(仅对当前 job 生效)
scrape_interval: 5s
# 静态配置目标(固定的服务地址)
static_configs:
- targets: ["localhost:9090"] # Prometheus 自身的地址(默认端口 9090)
# 示例:采集 Linux 服务器节点数据(需提前部署 node_exporter)
- job_name: "node"
scrape_interval: 10s
static_configs:
- targets:
- "node1:9100" # 节点 1 的 node_exporter 地址(默认端口 9100)
- "node2:9100" # 节点 2 的 node_exporter 地址
# 为该组目标添加额外标签(如区分机房)
labels:
env: "production"
机房: "北京"
# 示例:采集 Docker 容器数据(需部署 cadvisor)
- job_name: "docker"
scrape_interval: 15s
static_configs:
- targets: ["cadvisor:8080"] # cadvisor 地址(默认端口 8080)
# 示例:基于文件动态发现目标(适合大规模场景,目标地址写在文件中)
- job_name: "file_sd_demo"
# 从 JSON/YAML 文件加载目标(文件内容变化时自动更新)
file_sd_configs:
- files:
- "targets/*.yml" # 匹配 targets 目录下的所有 yml 文件
refresh_interval: 5m # 刷新文件的间隔时间
# 示例:基于 Kubernetes 服务发现(自动发现 K8s 中的 Pod/Service)
- job_name: "kubernetes-pods"
kubernetes_sd_configs:
- role: pod # 发现角色:pod(还可配置 service、node 等)
# K8s API 地址(内部部署时可使用集群内地址)
api_server: "https://kubernetes.default.svc:443"
# 认证配置(集群内可使用 serviceaccount 认证)
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
# 标签重写(可选,用于过滤或修改标签)
relabel_configs:
# 仅保留 annotation 中包含 prometheus.io/scrape: "true" 的 pod
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep
regex: "true"
# 从 annotation 中提取采集路径(默认 /metrics)
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
# 构造采集地址:__address__:port(从 annotation 提取端口)
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
action: replace
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
target_label: __address__
配置生效
curl -XPOST http://127.0.0.1:9090/-/reload
curl -XPOST http://127.0.0.1:9090/-/restart