6.Prometheus 监控技术与实践 --- 告警处理

Posted enlyhua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6.Prometheus 监控技术与实践 --- 告警处理相关的知识,希望对你有一定的参考价值。

第6章 告警处理 
	在 prometheus 监控体系中,指标的采集存储于告警是分开的。告警规则是在 prometheus server 端定义的,告警规则被触发后,才会将信息发送给独立组件
Alertmanager 上,经过对告警的处理后,最终通过接收器通知用户。

6.1 概述 

6.2 Alertmanager部署 
	6.2.1 Alertmanager机制 
		Prometheus server 和 Alertmanager 是互相分离的两个组件,我们使用 prometheus server 采集各类监控指标,然后基于 PromQL 对这些指标定义
	阈值告警规则(Rules)。prometheus server 对告警规则周期性的进行计算,如果满足触发条件,便生成一条告警信息,并将其推送到 Alertmanager 组件。收到
	告警信息后,Alertmanager 会处理告警,进行分组(grouping)并将它们最终路由(routing)到正确的接收器(receiver)。

		在prometheus 中,我们不仅可以对一条告警规则进行命名并通过 PromQL 定义规则,更多的时候是对相关的多条告警进行分组后统一定义。

		1.告警分组(Grouping)
			Alertmanager 将同类型的告警进行分组,合并多条告警到一个通知中。
		2.告警抑制(Inhibition)
			当某告警已经发出,停止重复发送由此告警引发的其他异常或故障的告警机制。
		3.告警静默(Silences)
			告警静默提供了一个简单的机制,可以根据标签快速对告警进行静默处理。对传入的告警进行匹配检查,如果接收到的告警符合静默的配置,Alertmanager不会发送
		告警通知。

	6.2.2 使用二进制文件方式安装 
		https://prometheus.io/download/  

	6.2.3 使用Docker安装 
		docker pull prom/alertmanager
		docker run -p 9093:9093 -v /Users/weijianhua/Sites/config_file/prometheus/alertmanager/simple.yml:/etc/alertmanager/simple.yml --name alertmanager prom/alertmanager

6.3 Alertmanager配置 
	6.3.1 global 	
		全局配置均为公共设置,可以作为其他配置下的默认值,也可以被其他配置项中的设置覆盖。
	6.3.2 templates 
		告警模板可以自定义告警通知的外观格式及其包含的对应告警数据。
	6.3.3 route 
		告警路由模块描述了在收到 prometheus server 生成的告警后,将告警发送到 receiver 指定的目的地址的规则。
	6.3.4 receivers 
		接收器是一个统称,每一个 receiver 需要设置一个全局唯一的名称,并且对应一个或者多个通知方式。
	6.3.5 inhibit_rules 
		在 inhibit_rule 模块中设置实现告警抑制功能,我们可以指定在特定条件下要忽略的告警条件。

	https://prometheus.io/webtools/alerting/routing-tree-editor/

6.4 Prometheus告警规则 
	6.4.1 与Alertmanager关联 
		prometheus 把生产的告警发送给 Alertmanager 进行告警处理时,需要在prometheus 使用的配置文件中添加关联 Alertmanager 组件的对应配置内容。

		1.编辑 prometheus.yml 文件中加入关联 Alertmanager 组件的访问地址。

alerting:
	alertmanagers:
	- static_configs:
		- targets:
			- 192.168.186.7:9093

		2.添加监控 Alertmanager 与监控 prometheus 操作过程一样,Alertmanager 公开了相关指标。可以在 prometheus.yml 文件中创建一个 prometheus job
	来监控 Alertmanager 组件示例地址,内容如下:

- job_name: 'Alertmanager'
	static_configs:
	- targets: ['192.168.186.7:9093']

	//查看配置内容
	http://localhost:9090/config 

	6.4.2 告警规则 
		告警规则文件使用yaml格式进行定义,在 prometheus server 中使用 PromQL 配置实际告警触发条件,prometheus 会根据告警规则及配置周期进行周期性的计算,
	若触发条件则会发告警通知。告警规则加载是在 prometheus.yml 文件中进行配置,默认情况下 prometheus 对设置的告警规则进行计算的时间间隔是 1分钟,可以使用global
	中的 evaluation_interval 配置项设置间隔时间。例如:
global:
	evaluation_interval: 15s

		告警规则可以直接指定文件,也可以指定到特定的目录下,为了方便管理可以把告警规则拆分成多个文件,以特定命名格式被 prometheus.yml 指定后加载,如:
rules_files:
	- '/data/prometheus/rules/*._rules.yml'
	- 'second_rules.yml'

		一个告警信息在生命周期内可能会有三种状态:
		1.Interval,没有满足触发条件,告警未激活状态
		2.Pending,已满足触发条件,但为满足告警持续时间的状态,即为满足告警中for子句中指定的持续时间
		3.Firing,已满足触发条件且已经超过for子句中指定的持续时间时的状态

		带有 for 子句的告警将首先转换为 pengding 状态,然后转换为 firing 状态,至少需要2个计算周期才触发告警。从pending状态到firing状态的转换,确保了告警的
	有效性。而没有for子句的告警自动会从 Inactive 状态转换为 Firing 状态,只需要一个计算周期即可被触发。

		prometheus 从收集监控目标开始,到触发一条告警的过程:
		1.定义规则
		2.周期计算
		3.告警状态转换

	6.4.3 使用模板 
		模板是在告警中使用时间序列数据的标签和值的一种方法,可以用于告警规则中的注释和标签。

6.5 告警接收器 
	6.5.1 Email接收告警 
		1.修改 Alertmanager 默认配置文件,在 global 中添加全局的 smtp 配置信息。
		2.在配置文件的 receivers 模块中配置 email_configs 内容

	6.5.2 企业微信接收告警 
	6.5.3基于Webhook的钉钉接收告警 
	6.5.4 告警通知模板 

6.6 告警临时静默 
	静默是使告警在给定时间内暂时静音的一种方法。我们可以通过两种方法来完成静默设置:一种是通过 Alertmanager Web 控制台控制;一种是通过 amtool 命令行设置。

	1.打开 http://localhost:9093/#/silences
	2.New Silence

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是关于6.Prometheus 监控技术与实践 --- 告警处理的主要内容,如果未能解决你的问题,请参考以下文章

Prometheus在kubernetes集群的搭建教程

3.Prometheus 监控技术与实践 --- Exporter

7.Prometheus 监控技术与实践 --- 可视化

1.Prometheus 监控技术与实践 --- 云计算时代的监控系统

4.Prometheus 监控技术与实践 --- 服务发现

8.Prometheus 监控技术与实践 --- Pushgateway