Prometheus 是一个开源的系统监控和报警工具。它的配置文件通常是一个YAML文件,默认路径为 /etc/prometheus/prometheus.yml
。下面是 Prometheus 配置文件的详细解释,包括常见配置项及其含义。
Prometheus 配置文件结构
一个典型的 prometheus.yml
配置文件的结构如下:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_timeout: 10s
scrape_configs:
- job_name: 'example'
static_configs:
- targets: ['localhost:9090']
1. global
配置
global
配置定义了全局的配置参数,这些参数可以在 scrape_configs
中被覆盖。
global:
scrape_interval: 15s # 全局抓取间隔,默认是 1m
evaluation_interval: 15s # 全局规则评估间隔,默认是 1m
scrape_timeout: 10s # 抓取超时时间,默认是10秒
2. scrape_configs
配置
scrape_configs
定义了 Prometheus 应该抓取的目标。它是一个列表,每个条目代表一个抓取任务(job)。
scrape_configs:
- job_name: 'example' # 抓取任务的名称
static_configs:
- targets: ['localhost:9090'] # 静态配置的抓取目标
常见的 scrape_configs
配置选项:
job_name
:任务名称,必须唯一。static_configs
:一组静态目标配置,直接指定目标地址。relabel_configs
:重新标签配置,用于修改抓取目标标签。tls_config
:TLS 配置,用于 HTTPS。basic_auth
:基本认证,用于 HTTP Basic Auth。
详细示例配置
下面是一个更详细的 prometheus.yml
配置示例:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
relabel_configs:
- source_labels: [__address__]
target_label: instance
regex: '(.*):.*'
replacement: '${1}'
- job_name: 'cadvisor'
static_configs:
- targets: ['localhost:8080']
- job_name: 'kubernetes-apiservers'
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
action: keep
regex: default;kubernetes;https
alerting:
alertmanagers:
- static_configs:
- targets: ['localhost:9093']
rule_files:
- 'rules/*.yml'
3. relabel_configs
relabel_configs
用于修改抓取目标的标签,可以用于动态配置目标地址或去除不需要的标签。
relabel_configs:
- source_labels: [__address__]
target_label: instance
regex: '(.*):.*'
replacement: '${1}'
4. alerting
alerting
配置定义了 Alertmanager 实例,Prometheus 会将报警发送到这些实例。
alerting:
alertmanagers:
- static_configs:
- targets: ['localhost:9093']
5. rule_files
rule_files
配置定义了 Prometheus 读取的规则文件的路径,用于定义报警规则和录制规则。
rule_files:
- 'rules/*.yml'
其他配置项
Prometheus 提供了许多其他配置项,例如 remote_read
和 remote_write
用于远程存储,alert_relabel_configs
用于报警重新标签等。
完整的配置选项可以参考 Prometheus 官方文档:Prometheus Configuration