Prometheus通过命令行标志和配置文件进行配置。 虽然命令行标志配置了不可变的系统参数(例如存储位置,保留在磁盘和内存中的数据量等),但配置文件定义了与抓取作业及其实例相关的所有内容,以及哪些规则文件 载入。
要查看所有可用的命令行参数,执行./prometheus -h
Prometheus可以在运行时重新加载其配置。 如果新配置格式不正确,则不会应用更改。 通过向Prometheus进程发送SIGHUP或向/-/reload
端点发送HTTP POST请求(启用--web.enable-lifecycle
标志时)来触发配置重新加载。 这也将重新加载任何已配置的规则文件。
一、配置文件
要指定要加载的配置文件,请使用--config.file
标志。
该文件以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: <duration> | default = 1m ]
# 抓取超时时间.
[ scrape_timeout: <duration> | default = 10s ]
# 评估规则的频率.
[ evaluation_interval: <duration> | default = 1m ]
# 与外部系统通信时添加到任何时间序列或警报的标签
#(联合,远程存储,Alertma# nager).
external_labels:
[ <labelname>: <labelvalue> ... ]
# 规则文件指定了一个globs列表.
# 从所有匹配的文件中读取规则和警报.
rule_files:
[ - <filepath_glob> ... ]
# 抓取配置列表.
scrape_configs:
[ - <scrape_config> ... ]
# 警报指定与Alertmanager相关的设置.
alerting:
alert_relabel_configs:
[ - <relabel_config> ... ]
alertmanagers:
[ - <alertmanager_config> ... ]
# 与远程写入功能相关的设置.
remote_write:
[ - <remote_write> ... ]
# 与远程读取功能相关的设置.
remote_read:
[ - <remote_read> ... ]
1.1 <scrape_config>
<scrape_config>
部分指定一组描述如何刮除它们的目标和参数。 在一般情况下,一个scrape配置指定单个作业。 在高级配置中,这可能会改变。
目标可以通过<static_configs>
参数静态配置,也可以使用其中一种支持的服务发现机制动态发现。
此外,<relabel_configs>
允许在抓取之前对任何目标及其标签进行高级修改。
其中<job_name>
在所有scrape配置中必须是唯一的。
# 默认分配给已抓取指标的job名称。
job_name: <job_name>
# 从job中抓取目标的频率.
[ scrape_interval: <duration> | default = <global_config.scrape_interval> ]
# 抓取此job时,每次抓取超时时间.
[ scrape_timeout: <duration> | default = <global_config.scrape_timeout> ]
# 从目标获取指标的HTTP资源路径.
[ metrics_path: <path> | default = /metrics ]
# honor_labels控制Prometheus如何处理已经存在于已抓取数据中的标签与Prometheus将附加服务器端的标签之间的冲突("job"和"instance"标签,手动配置的目标标签以及服务发现实现生成的标签)。
#
# 如果honor_labels设置为"true",则通过保留已抓取数据的标签值并忽略冲突的服务器端标签来解决标签冲突。
#
# 如果honor_labels设置为"false",则通过将已抓取数据中的冲突标签重命名为"exported_ <original-label>"(例如"exported_instance","exported_job")然后附加服务器端标签来解决标签冲突。 这对于联合等用例很有用,其中应保留目标中指定的所有标签。
#
# 请注意,任何全局配置的"external_labels"都不受此设置的影响。 在与外部系统通信时,它们始终仅在时间序列尚未具有给定标签时应用,否则将被忽略。
#
[ honor_labels: <boolean> | default = false ]
# 配置用于请求的协议方案.
[ scheme: <scheme> | default = http ]
# 可选的HTTP URL参数.
params:
[ <string>: [<string>, ...] ]
# 使用配置的用户名和密码在每个scrape请求上设置`Authorization`标头。 password和password_file是互斥的。
basic_auth:
[ username: <string> ]
[ password: <secret> ]
[ password_file: <string> ]
# 使用配置的承载令牌在每个scrape请求上设置`Authorization`标头。 它`bearer_token_file`和是互斥的。
[ bearer_token: <secret> ]
# 使用配置的承载令牌在每个scrape请求上设置`Authorization`标头。 它`bearer_token`和是互斥的。
[ bearer_token_file: /path/to/bearer/token/file ]
# 配置scrape请求的TLS设置.
tls_config:
[ <tls_config> ]
# 可选的代理URL.
[ proxy_url: <string>