# Prometheus 全局配置
global:
# 采集數(shù)據(jù)的間隔時(shí)間(默認(rèn) 15s)
scrape_interval: 15s
# 評(píng)估告警規(guī)則的間隔時(shí)間(默認(rèn) 15s)
evaluation_interval: 15s
# 抓取目標(biāo)超時(shí)時(shí)間(默認(rèn) 10s)
scrape_timeout: 10s
# 外部標(biāo)簽:會(huì)添加到所有時(shí)間序列和告警上(可用于區(qū)分環(huán)境,如 prod/test)
external_labels:
monitor: "prometheus-monitor"
# Alertmanager 配置(指定告警接收器)
alerting:
alertmanagers:
- static_configs:
- targets:
# Alertmanager 服務(wù)地址(需替換為實(shí)際地址)
- 'alertmanager:9093'
# 與 Alertmanager 通信的超時(shí)時(shí)間
timeout: 10s
# 告警規(guī)則文件配置(從文件加載告警規(guī)則)
rule_files:
# - "first_rules.yml" # 示例規(guī)則文件(取消注釋并替換為實(shí)際路徑)
# - "second_rules.yml"
# 抓取目標(biāo)配置(定義需要采集監(jiān)控?cái)?shù)據(jù)的服務(wù))
scrape_configs:
# 配置名稱(自定義,用于標(biāo)識(shí)一組目標(biāo))
- job_name: "prometheus" # 采集 Prometheus 自身的監(jiān)控?cái)?shù)據(jù)
# 覆蓋全局的采集間隔(僅對(duì)當(dāng)前 job 生效)
scrape_interval: 5s
# 靜態(tài)配置目標(biāo)(固定的服務(wù)地址)
static_configs:
- targets: ["localhost:9090"] # Prometheus 自身的地址(默認(rèn)端口 9090)
# 示例:采集 Linux 服務(wù)器節(jié)點(diǎn)數(shù)據(jù)(需提前部署 node_exporter)
- job_name: "node"
scrape_interval: 10s
static_configs:
- targets:
- "node1:9100" # 節(jié)點(diǎn) 1 的 node_exporter 地址(默認(rèn)端口 9100)
- "node2:9100" # 節(jié)點(diǎn) 2 的 node_exporter 地址
# 為該組目標(biāo)添加額外標(biāo)簽(如區(qū)分機(jī)房)
labels:
env: "production"
機(jī)房: "北京"
# 示例:采集 Docker 容器數(shù)據(jù)(需部署 cadvisor)
- job_name: "docker"
scrape_interval: 15s
static_configs:
- targets: ["cadvisor:8080"] # cadvisor 地址(默認(rèn)端口 8080)
# 示例:基于文件動(dòng)態(tài)發(fā)現(xiàn)目標(biāo)(適合大規(guī)模場(chǎng)景,目標(biāo)地址寫在文件中)
- job_name: "file_sd_demo"
# 從 JSON/YAML 文件加載目標(biāo)(文件內(nèi)容變化時(shí)自動(dòng)更新)
file_sd_configs:
- files:
- "targets/*.yml" # 匹配 targets 目錄下的所有 yml 文件
refresh_interval: 5m # 刷新文件的間隔時(shí)間
# 示例:基于 Kubernetes 服務(wù)發(fā)現(xiàn)(自動(dòng)發(fā)現(xiàn) K8s 中的 Pod/Service)
- job_name: "kubernetes-pods"
kubernetes_sd_configs:
- role: pod # 發(fā)現(xiàn)角色:pod(還可配置 service、node 等)
# K8s API 地址(內(nèi)部部署時(shí)可使用集群內(nèi)地址)
api_server: "https://kubernetes.default.svc:443"
# 認(rèn)證配置(集群內(nèi)可使用 serviceaccount 認(rèn)證)
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
# 標(biāo)簽重寫(可選,用于過濾或修改標(biāo)簽)
relabel_configs:
# 僅保留 annotation 中包含 prometheus.io/scrape: "true" 的 pod
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep
regex: "true"
# 從 annotation 中提取采集路徑(默認(rèn) /metrics)
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
# 構(gòu)造采集地址:__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