Prometheus 配置文件介绍
原创
©著作权归作者所有:来自51CTO博客作者wx5bcd2f496a1cf的原创作品,请联系作者获取转载授权,否则将追究法律责任
Prometheus通过命令行标志和配置文件进行配置。虽然命令行标志配置了不可变的系统参数(例如存储位置,保留在磁盘和内存中的数据量等),但配置文件定义了与抓取作业及其实例相关的所有内容,以及哪些规则文件加载。
要查看所有可用的命令行标志,请运行./prometheus -h
。
Prometheus可以在运行时重新加载其配置。如果新配置格式不正确,则不会应用更改。通过向Prometheus进程发送 SIGHUP
信号或使用HTTP 发送reload的POST请求命令发送( --web.enable-lifecycle
启用标志时)来触发配置重新加载。这也将重新加载任何已配置的规则文件。
一、配置文件中的占位符
该文件以YAML格式编写,由下面描述的方案定义。括号表示参数是可选的。对于非列表参数,该值设置为指定的默认值。
通用占位符定义如下:
- <boolean>:一个可以取值true或的值的布尔值false
- <duration>:与正则表达式匹配的持续时间 [0-9]+(ms|[smhdwy])
- <labelname>:与正则表达式匹配的字符串 [a-zA-Z_][a-zA-Z0-9_]*
- <labelvalue>:一串unicode字符
- <filename>:当前工作目录中的有效路径
- <host>:由主机名或IP后跟可选端口号组成的有效字符串
- <path>:有效的URL路径
- <scheme>:一个可以取值http或的字符串https
- <string>:常规字符串
- <secret>:一个秘密的常规字符串,例如密码
- <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"