配置规则
Prometheus支持可以配置,然后定期执行的两种规则: recording rules(记录规则)
和 alerting rules(警告规则)。为了在Prometheus系统中包括规则,我们需要创建一个包含规则语句的文件,并通过在Prometheus配置的rule_fields
字段加载这个记录规则文件。
这些规则文件可以通过像Prometheus服务发送SIGNUP
信号量,实时重载记录规则。如果所有的记录规则有正确的格式和语法,则这些变化能够生效。
语法检查规则
在没有启动Prometheus服务之前,想快速知道一个规则文件是否正确,可以通过安装和运行Prometheus的promtool
命令行工具检验:
go get github.com/prometheus/prometheus/cmd/promtool
promtool check-rules /path/to/examples.rules
当记录规则文件是有效的,则这个检查会打印出解析到规则的文本表示,并以返回值0退出程序。
如果有任何语法错误的话,则这个命令行会打印出一个错误信息到标准输出,并以返回值1退出程序。无效的输入参数,则以返回值2退出程序。
记录规则
记录规则允许你预先计算经常需要的,或者计算复杂度高的表达式,并将结果保存为一组新的时间序列数据。查询预计算结果通常比需要时进行计算表达式快得多。对于dashboard是非常有用的,因为dashboard需要实时刷新查询表达式的结果。
为了增加一个新记录规则,增加下面的记录规则到你的规则文件中:
\<new time series name\>[{\<label overrides\>}] = \<expression to record\>
例子:
# 计算每个job的http请求总数,保存到新的度量指标中
job:http_inprogree_requests:sum = sum(http_inprogress_requests) by (job)
# 放弃老标签,写入新标签的结果时间序列数据:
new_time_series{label_to_change="new_value", label_to_drop=""} = old_time_series
记录规则的执行周期有Prometheus的配置文件中的evaluate_interval
指定。规则语句的右侧表达式一旦被执行,则新的时间戳key为当前时间,value为右边表达式的样本值,新的度量指标名称和标签列表为左边名称。