Prometheus使用prometheus.yml配置文件进行全局变量、告警、规则等内容配置,在启动时指定相关的文件,对配置内容进行加载。

Prometheus的配置文件是YAML格式。Prometheus的解压包里自带了一个默认的配置文件prometheus.yml。

./prometheus --config.file=prometheus.yml

prometheus 定义了四个单元global、alerting、rule_files、scrape_configs

在配置文件中我们可以指定 global, alerting, rule_files, scrape_configs, remote_write, remote_read 等属性。

一、global(全局配置)

global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  scrape_timeout: 10s    # is set to the global default (10s).
    external_labels:
      monitor: 'codelab-monitor'

global 属于全局的默认配置,它主要包含 4 个属性:

  • scrape_interval: 拉取 targets 的默认时间间隔,即拉取业务监控数据的间隔时间。
  • scrape_timeout: 拉取一个 target 的超时时间,即拉取业务监控数据接口的超时时间。
  • evaluation_interval: 执行 rules 的时间间隔。即多久遍历一次告警规则列表,判断每个规则是否触发告警。和rule_files的加载没关系
  • external_labels: 额外的属性,会添加到拉取的数据并存到数据库中。

二、alerting(报警定义)

设定alertmanager和prometheus交互的接口,即alertmanager监听的ip地址和端口。

# Alertmanager configuration
alerting:
  alertmanagers:
  - scheme: http
    timeout: 10s
  - static_configs:
    - targets:
      # - alertmanager:9093

scheme:配置如何访问alertmanager,可使用http或https。

timeout:配置与alertmanager连接的超时时间。

static_configs:配置alertmanager的地址信息

三、rule_files

用于获取所有规则文件中的规则,包括记录规则(recording rules)与告警规则(alerting rule)。

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

四、scrape_configs

  • scrape_configs 主要用于配置拉取数据节点,每一个拉取配置主要包含以下参数:
  • job_name:任务名称
  • honor_labels:用于解决拉取数据标签有冲突,当设置为 true, 以拉取数据为准,否则以服务配置为准
  • params:数据拉取访问时带的请求参数
  • scrape_interval:拉取时间间隔
  • scrape_timeout: 拉取超时时间
  • metrics_path:拉取节点的 metric 路径
  • static_configs:配置访问路径前缀,如ip+port,或者域名地址,或者通过服务发现,类似alertmanager.prom-alert.svc:9093
  • scheme:拉取数据访问协议,如http
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
  
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
   -scheme:'http'
    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'node'
    static_configs:
    - targets: ['localhost:9100']

五、remote_write

remote_write 主要用于可写远程存储配置,主要包含以下参数:

  • url: 访问地址
  • remote_timeout: 请求超时时间
  • write_relabel_configs: 标签重置配置, 拉取到的数据,经过重置处理后,发送给远程存储

参考:

https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config