Prometheus 配置文件介绍

2019-08-25 0 By admin

Prometheus通过命令行标志和配置文件进行配置。虽然命令行标志配置了不可变的系统参数(例如存储位置,保留在磁盘和内存中的数据量等),但配置文件定义了与抓取作业及其实例相关的所有内容,以及哪些规则文件加载。
要查看所有可用的命令行标志,请运行./prometheus -h
Prometheus可以在运行时重新加载其配置。如果新配置格式不正确,则不会应用更改。通过向Prometheus进程发送 SIGHUP 信号或使用HTTP 发送reload的POST请求命令发送( --web.enable-lifecycle 启用标志时)来触发配置重新加载。这也将重新加载任何已配置的规则文件。

一、配置文件中的占位符

该文件以YAML格式编写,由下面描述的方案定义。括号表示参数是可选的。对于非列表参数,该值设置为指定的默认值。
通用占位符定义如下:

  1. <boolean>:一个可以取值true或的值的布尔值false
  2. <duration>:与正则表达式匹配的持续时间 [0-9]+(ms|[smhdwy])
  3. <labelname>:与正则表达式匹配的字符串 [a-zA-Z_][a-zA-Z0-9_]*
  4. <labelvalue>:一串unicode字符
  5. <filename>:当前工作目录中的有效路径
  6. <host>:由主机名或IP后跟可选端口号组成的有效字符串
  7. <path>:有效的URL路径
  8. <scheme>:一个可以取值http或的字符串https
  9. <string>:常规字符串
  10. <secret>:一个秘密的常规字符串,例如密码
  11. <tmpl_string>:使用前模板展开的字符串

其他占位符是单独指定的。

二、配置文件示例解析

# 配置文件中的全局配置
global:
  scrape_interval:     15s   # 多久 收集 一次数据
  evaluation_interval: 30s   # 多久评估一次 规则
  scrape_timeout:      10s   # 每次 收集数据的 超时时间
  # 当Prometheus和外部系统(联邦, 远程存储, Alertmanager)通信的时候,添加标签到任意的时间序列或者报警
  external_labels:
    monitor: codelab
    foo:     bar
# 加载规则文件, 可以使用通配符
# 规则文件指定全局变量列表。从所有匹配的文件中读取规则和警报。
rule_files:
- "first.rules"
- "my/*.rules"

# 远程写入功能相关的设置
remote_write:
  - url: http://remote1/push
    write_relabel_configs:
    - source_labels: [__name__]
      regex:         expensive.*
      action:        drop
  - url: http://remote2/push

# 远程读取相关功能的设置
remote_read:
  - url: http://remote1/read
    read_recent: true
  - url: http://remote3/read
    read_recent: false
    required_matchers:
      job: special

# 收集数据-配置列表
# scrape_config部分指定了一组目标和参数,描述了如何抓取它们。
# 在一般情况下,一个抓取资源配置指定一个作业。在高级配置中,这可能会改变。
# 可以通过static_configs参数静态配置目标,也可以使用支持的服务发现机制之一动态发现目标。
# 此外,relabel_configs 允许在抓取之前对任何目标及其标签进行高级修改。

scrape_configs:
- job_name: prometheus  # 必须配置, 自动附加的job labels, 必须唯一
  honor_labels: true   # 标签冲突, true 为以抓取的数据为准并忽略服务器中的,
                                  # false 为 通过重命名来解决冲突
  # scrape_interval is defined by the configured global (15s).
  # scrape_timeout is defined by the global default (10s).
  metrics_path:     '/metrics'
  # scheme defaults to 'http'.
  # 文件服务发现配置 列表
  #基于文件的服务发现提供了一种更通用的方法来配置静态目标,并用作插入自定义服务发现机制的接口。
  #它读取一组包含零个或多个<static_config>列表的文件。
  #对所有定义文件的更改都会通过磁盘监视检测到并立即应用。
  #文件可以yaml或json格式提供。仅应用形成良好目标组的更改。
  file_sd_configs:
    - files:  # 从这些文件中提取目标
      - foo/*.slow.json
      - single/file.yml
      refresh_interval: 10m  # 刷新文件的 时间间隔
  # 使用job名作为label的 静态配置目录的列表

  static_configs:
  - targets: ['localhost:9090', 'localhost:9191']
    labels:
      my:   label
      your: label
  # 目标节点 重新打标签的配置列表。
  #重新标记是一个功能强大的工具,可以在抓取目标之前动态重写目标的标签集。
  #可以配置多个,按照先后顺序应用
  relabel_configs:
  - source_labels: [job, __meta_dns_name]   
   #从现有的标签中选择源标签, 最后会被替换,保持,丢弃
    regex:         (.*)some-[regex]  
   # 正则表达式, 将会提取source_labels中匹配的值
    target_label:  job   # 在替换动作中将结果值写入的标签.
    replacement:   foo-${1}  
   # 如果正则表达匹配, 那么替换值. 可以使用正则表达中的 捕获组
    # action defaults to 'replace'
  - source_labels: [abc]  # 将abc标签的内容复制到cde标签中
    target_label:  cde
  - replacement:   static
    target_label:  abc
  - regex:
    replacement:   static
    target_label:  abc
  bearer_token_file: valid_token_file  # 可选的, bearer token 文件的信息

# Alertmanager相关的配置
alerting:
  alertmanagers:
  - scheme: https
    static_configs:
    - targets:
      - "1.2.3.4:9093"
      - "1.2.3.5:9093"