5. 配置项:rule_files
- 一、配置规则
- 二、语法检查规则
- 三、记录规则
- 3.1 <rule_group>
- 3.2 <rule>
- 四、警报规则
- 4.1 定义报警规则
- 4.2 模板
- 4.3 在运行时检查警报
- 4.4 发送提醒通知
prometheus配置文件内容:
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> ... ]
配置文件通用占位符:PS:本部分主要介绍rule_files的详细内容。
通用占位符定义如下:
<boolean>:一个可以取值为true或false的布尔值
<duration>:与正则表达式匹配的持续时间[-] +(ms | [smhdwy])
<labelname>:与正则表达式匹配的字符串[a-zA-Z _] [a-zA-Z0- _] *
<labelvalue>:一串unicode字符
<filename>:当前工作目录中的有效路径
<host>:由主机名或IP后跟可选端口号组成的有效字符串
<path>:有效的URL路径
<scheme>:一个可以取值http或https的字符串
<string>:常规字符串
<secret>:一个秘密的常规字符串,例如密码
<tmpl_string>:在使用前进行模板扩展的字符串
一、配置规则
Prometheus支持两种类型的规则,这些规则可以定期配置,然后定期评估:记录规则和警报规则。 要在Prometheus中包含规则,请创建包含必要规则语句的文件,并让Prometheus通过Prometheus配置中的rule_files字段加载文件。 规则文件使用YAML。
通过将SIGHUP发送到Prometheus进程,可以在运行时重新加载规则文件。 仅当所有规则文件格式正确时才会应用更改。
二、语法检查规则
要在不启动Prometheus服务器的情况下快速检查规则文件在语法上是否正确,请安装并运行Prometheus的promtool命令行实用工具:
go get github.com/prometheus/prometheus/cmd/promtool |
当文件在语法上有效时,检查器将已解析规则的文本表示打印到标准输出,然后以0返回状态退出。
如果存在任何语法错误或无效的输入参数,则会向标准错误输出错误消息,并以1返回状态退出。
三、记录规则
记录规则允许您预先计算经常需要或计算上昂贵的表达式,并将其结果保存为一组新的时间序列。 因此,查询预先计算的结果通常比每次需要时执行原始表达式快得多。 这对于仪表板尤其有用,仪表板需要在每次刷新时重复查询相同的表达式。
记录和警报规则存在于规则组中。 组内的规则以固定间隔顺序运行。
规则文件的语法是:
groups: |
3.1 <rule_group>
# 组的名称。 在文件中必须是唯一的。
name: <string> # 评估组中的规则的频率。
[ interval: <duration> | default = global.evaluation_interval ] rules:
[ - <rule> ... ]
3.2 <rule>
记录规则的语法是:
# 要输出的时间序列的名称。 必须是有效的度量标准名称。
record: <string> # 要评估的PromQL表达式。 每个评估周期都会在当前时间进行评估,并将结果记录为一组新的时间序列,其中度量标准名称由“记录”给出。
expr: <string> # 在存储结果之前添加或覆盖的标签。
labels:
[ <labelname>: <labelvalue> ]
一个简单的示例规则文件将是:
groups:
- name: sum
rules:
- record: job:up:sum
expr: sum(up) by (job)
lables:
rulesName: record
验证:
创建配置,并使其动态生效,通过prometheus可编辑浏览器查看,如下所示:

四、警报规则
警报规则允许您基于Prometheus表达式语言表达式定义警报条件,并将有关触发警报的通知发送到外部服务。 每当警报表达式在给定时间点生成一个或多个向量元素时,警报将计为这些元素的标签集的活动状态。
4.1 定义报警规则
警报规则在Prometheus中与记录规则相同的方式配置。
带警报的示例规则文件将是:
# 警报的名称。 必须是有效的度量标准名称。
alert: <string> # 要评估的PromQL表达式。 每个评估周期都会在当前时间进行评估,并且所有结果时间序列都会成为待处理/触发警报。
expr: <string> # 警报一旦被退回这段时间就会被视为开启。
# 尚未解雇的警报被认为是未决的。
[ for: <duration> | default = 0s ] # 为每个警报添加或覆盖的标签。
labels:
[ <labelname>: <tmpl_string> ] # 要添加到每个警报的注释。
annotations:
[ <labelname>: <tmpl_string> ]
labels子句允许指定要附加到警报的一组附加标签。 任何现有的冲突标签都将被覆盖。 标签值可以是模板化的。
可选的for子句使Prometheus在第一次遇到新的表达式输出向量元素和将此警告作为此元素的触发计数之间等待一段时间。 在这种情况下,Prometheus将在每次评估期间检查警报是否继续处于活动状态10分钟,然后再触发警报。 处于活动状态但尚未触发的元素处于暂挂状态。
annotations子句指定一组信息标签,可用于存储更长的附加信息,例如警报描述或Runbook链接。 注释值可以是模板化的。
4.2 模板
可以使用控制台模板模板化标签和注释值。 $labels变量保存警报实例的标签键/值对,$value保存警报实例的评估值。
# 要插入触发元素的标签值:
{{ $labels.<labelname> }}
# 要插入触发元素的数值表达式值:
{{ $value }}
例子:
groups:
- name: example
rules: # 对于任何无法访问> 5分钟的实例的警报。
- alert: InstanceDown
expr: up ==
for: 5m
labels:
severity: page
annotations:
summary: "Instance {{ $labels.instance }} down"
description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes." # 对中值请求延迟> 1s的任何实例发出警报。
- alert: APIHighRequestLatency
expr: api_http_request_latencies_second{quantile="0.5"} >
for: 10m
annotations:
summary: "High request latency on {{ $labels.instance }}"
description: "{{ $labels.instance }} has a median request latency above 1s (current value: {{ $value }}s)"
4.3 在运行时检查警报
要手动检查哪些警报处于活动状态(待处理或触发),请导航至Prometheus实例的"警报"选项卡。 这将显示每个定义的警报当前处于活动状态的确切标签集,如下所示:

对于待处理和触发警报,Prometheus还存储ALERTS{alertname="<alert name>",alertstate ="pending|firing",<additional alert labels>}形式的合成时间序列。 只要警报处于指示的活动(pending or firing(挂起或触发))状态,样本值就会设置为1,并且当不再是这种情况时,系列会标记为过时。

4.4 发送提醒通知
普罗米修斯的警报规则很好地判断当前发生的故障,但它们并不是一个完全成熟的通知解决方案。在简单的警报定义之上,还需要另一层来添加摘要,通知速率限制,静默和警报依赖性。 在Prometheus的生态系统中,Alertmanager担当了这个角色。 因此,Prometheus可以配置为定期将有关警报状态的信息发送到Alertmanager实例,该实例随后负责调度正确的通知。
Prometheus可以配置为通过其服务发现集成自动发现可用的Alertmanager实例。
5. 配置项:rule_files的更多相关文章
- SpringMVC配置项学习笔记
1. <mvc:annotation-driven /> <mvc:annotation-driven />是一种简写形式,默认会注册DefaultAnnotationHand ...
- JSHint配置项说明
转自:http://www.jianshu.com/p/4cb23f9e19d3 什么是JSHint? 官方网站这样介绍: JSHint, A Static Code Analysis Tool fo ...
- validate插件深入学习-03validate()方法配置项
validate()方法配置项 rules 定义校验规则 messages 定义提示信息 上面这两个已经介绍过了 rules里隐藏的属性depends,只有符合条件(返回true)的时候才会执行 su ...
- 配置项setOption -- title
标题组件,包含主标题和副标题.在 ECharts 3 中可以存在任意多个标题组件,这在需要标题进行排版,或者单个实例中的多个图表都需要标题时会比较有用. title.show boolean [ de ...
- Ext JS 4 新特性2:配置项属性(config)之二
Ext JS 4 新特征2:配置项属性config之二 ☞ Config(自动的setters和getters) Ext JS 4介绍了config声明方式,在Ext JS 中也有几个例子:在运行程序 ...
- Ext JS 4 新特性2:配置项属性(config)之一
Ext JS 4 新特征2:配置项属性config 最新版本的Ext JS 4.2的另外一个伟大的新特征就是增加了configuration配置项属性,当我们在创建一个新类的时候,经常性的要设置某某属 ...
- Redis应用配置项说明
近期整理了下项目中Redis配置参数,以便学习备用~ #指定内存大小,格式为1k 1GB 1M,单位不区分大小写 # 1k => 1000 bytes # 1kb => 1024 byt ...
- Mysql配置项的简单优化
preface 众所周知,Mysql已经成为广泛使用的开源数据库了,so 公司阿里云的数据库为Mysql,在最开始的时候是直接yum安装,配置项都是默认的,没有任何调整,这次有时间就参考各路大神的资料 ...
- 【转】VS项目属性的一些配置项的总结
首先,解决方案和项目文件夹包含关系(c++项目): VS解决方案和各个项目文件夹以及解决方案和各个项目对应的配置文件包含关系,假设新建一个项目ssyy,解决方案起名fangan,注意解决方案包括项目, ...
随机推荐
- HTTP 请求状态码
200 请求成功 304 从缓存中读取 302 + 响应头中定义location: 重定向 // 自定义重定向 @RequestMapping("/customRedirecti ...
- 二、【Docker笔记】Docker的核心概念及安装
Docker主要有三大核心的概念,分别为镜像(Image).容器(Container)及仓库(Repository). 一.核心概念 1.Docker镜像 Docker镜像其实与虚拟机镜像很类似, ...
- 模块 re_正则
模块re_正则 讲正题之前我们先来看一个例子:https://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/ 这是京东的注册页面,打开页面我 ...
- 模块 序列化 json pickle shelv xml
序列化 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. json 模块 json.dump(d,f) json.load(f ...
- logstash用jdbc插件将数据库内容导入elasticsearch时间字段相差5小时
logstash将mysql的数据导入elasticsearch之后发现时间字段的相差5个小时 解决办法: 在数据库连接配置后面加上?serverTimezone=UCT这个就OK了 logstash ...
- springboot系列(三)配置文件详解
目录 properties 文件 1.语法 2.优先级 3.自定义数据配置 4.获取自定义数据配置 1.通过prefix获取 yml文件 1.语法 2.优先级 3.自定义数据配置. 4.获取自定义数据 ...
- A 现代艺术
时间限制 : - MS 空间限制 : 165536 KB 评测说明 : 1s 问题描述 何老板是一个现代派的艺术家.他在一块由n*n的方格构成的画布上作画.一开始,所有格子里的数字都是0.何老板 ...
- POJ 3273Monthly Expense(二分答案)
题目链接 思路如下 题意:这一题让我们在一个 n 个数的序列,分成连续的的 m个子串(一个数也可是一个子串),是在所有子串中 和最大的子串 的和最小. 思路:我们可以用 二分法 来一个一个枚举答案,二 ...
- Java并发基础02. 传统线程技术中的定时器技术
传统线程技术中有个定时器,定时器的类是Timer,我们使用定时器的目的就是给它安排任务,让它在指定的时间完成任务.所以先来看一下Timer类中的方法(主要看常用的TimerTask()方法): 前面两 ...
- Spring之Bean的管理方式(Content,Beans)
Spring的bean管理(注释) 注解 代码里特殊的标记,使用注解也可以直接完成相关功能 注解写法:@注解名称(属性名=属性值) 使用在类,方法,属性上面 Spring注解开发准备 导入jar包 ( ...