Prometheus 的配置文件通常使用 YAML 格式编写,用于定义 Prometheus 的行为。配置文件主要包括以下部分:
- global:全局配置,用于设置 Prometheus 的基本参数,例如工作目录、日志级别等。
- scrape_configs:数据采集配置,用于定义如何从目标中抓取数据。每个数据采集配置包含一个 job 名称、目标地址、抓取间隔、超时时间等参数。
- rules:规则配置,用于定义基于时间序列数据的报警或记录规则。
以下是 Prometheus 配置文件中各部分的参数说明: - global 参数:
- log_level:日志级别,可选值为 debug、info、warn、error。
- metrics_path:Prometheus 服务器上用于访问指标的路径。
- scrape_interval:抓取间隔时间,单位为秒。
- scrape_timeout:抓取超时时间,单位为秒。
- scrape_configs 参数:
- job_name:作业名称,用于标识数据采集任务。
- targets:目标地址列表,用于指定抓取数据的地址。
- metrics_path:目标上用于访问指标的路径。
- params:请求参数列表,用于向目标发送参数。
- scrape_interval:抓取间隔时间,单位为秒。
- scrape_timeout:抓取超时时间,单位为秒。
- rules 参数:
- rule_files:规则文件列表,用于指定规则文件的路径。
- alert_relabel_configs:报警标签重写配置列表,用于在报警时修改标签。
- alertmanager_config:告警管理器配置列表,用于指定告警管理器地址等参数。
- duration:规则匹配的持续时间。
Prometheus 的配置加载过程如下:
- Prometheus 启动时加载配置文件,并根据配置文件中的参数初始化内部结构。
- Prometheus 启动后按照配置文件中的 scrape_configs 参数定时抓取目标数据,并将抓取到的数据存储在本地存储中。
- Prometheus 启动后按照配置文件中的 rules 参数匹配时间序列数据,并根据匹配结果触发报警或记录规则。
- Prometheus 提供 Web API,用户可以通过该 API 查看当前运行状态、查询时间序列数据、获取报警信息等。
- Prometheus 支持动态加载配置文件,可以在运行时重新加载配置文件而不停止服务。重新加载配置文件后,Prometheus 会根据新配置文件中的参数更新内部结构并调整数据采集或规则匹配等行为。
在编写 Prometheus 配置文件时,需要注意以下几点: - YAML 格式要求严格,行尾需要加上空格才能正确解析。
- 参数值中不能包含特殊字符或空格,否则会导致解析错误。
- scrape_configs 中可以配置多个 target,每个 target 指定一个目标地址和端口号。Prometheus 会依次向这些 target 发送请求并抓取数据。
- rules 中可以配置多个 rule file 或 inline rules,每个规则文件中可以定义多个规则,每个规则包含匹配条件和操作。