首页 > 其他分享 >Alertmanager配置详解

Alertmanager配置详解

时间:2023-06-07 21:07:49浏览次数:36  
标签:Alertmanager 0.1 标签 配置 127.0 nginx 详解 告警 路由

一、  配置概述

Alertmanager主要负责对Prometheus产生的告警进行统一处理,在Alertmanager配置中一般会包含以下几个主要部分:

  • 全局配置(global):用于定义一些全局的公共参数,如全局的SMTP配置,Slack配置等内容;
  • 模板(templates):用于定义告警通知时的模板,如HTML模板,邮件模板等;
  • 告警路由(route):根据标签匹配,确定当前告警应该如何处理;
  • 接收人(receivers):接收人是一个抽象的概念,它可以是一个邮箱也可以是微信,Slack或者Webhook等,接收人一般配合告警路由使用;
  • 抑制规则(inhibit_rules):合理设置抑制规则可以减少垃圾告警的产生

二、  告警路由

1.   配置详解

告警路由可以使我们的告警根据不同的标签告警匹配到不同的渠道发送处理。配置文件解析如下:

route: #配置路由树
  receiver: # 接收组名,对于不同级别的告警,我们可能多个完全不同的接收组进行处理。
  group_by: []# 根据label标签的key进行匹配,如果是多个,就要多个都匹配
  continue: false # 告警是否去继续路由子节点
  match: [labelname:labelvalue,labelname1,labelvalue1] # 通过标签去匹配这次告警是否符合这个路由节点。
  match_re: [labelname:regex] # 通过正则表达是匹配标签,意义同上
  group_wait: 30s  # 组内等待时间,同一分组内收到第一个告警等待多久开始发送,目标是为了同组消息同时发送,不占用告警信息,默认30s
  group_interval: 5m # 当组内已经发送过一个告警,组内若有新增告警需要等待的时间,默认为5m,这条要确定组内信息是影响同一业务才能设置,若分组不合理,可能导致告警延迟,造成影响
  repeat_inteval: 4h # 告警已经发送,且无新增告警,若重复告警需要间隔多久 默认4h 属于重复告警,时间间隔应根据告警的严重程度来设置
  routes:
    - route: #路由子节点 配置信息跟主节点的路由信息一致

2.   路由匹配

每一个告警都会从配置文件中顶级的route进入路由树,需要注意的是顶级的route必须匹配所有告警(即不能有任何的匹配设置match和match_re),每一个路由都可以定义自己的接受人以及匹配规则。默认情况下,告警进入到顶级route后会遍历所有的子节点,直到找到最深的匹配route,并将告警发送到该route定义的receiver中。但如果route中设置continue的值为false,那么告警在匹配到第一个子节点之后就直接停止。如果continue为true,报警则会继续进行后续子节点的匹配。如果当前告警匹配不到任何的子节点,那该告警将会基于当前路由节点的接收器配置方式进行处理。

其中告警的匹配有两种方式可以选择。一种方式基于字符串验证,通过设置match规则判断当前告警中是否存在标签labelname并且其值等于labelvalue。第二种方式则基于正则表达式,通过设置match_re验证当前告警标签的值是否满足正则表达式的内容。

如果警报已经成功发送通知, 如果想设置发送告警通知之前要等待时间,则可以通过repeat_interval参数进行设置。

3.   告警分组

Alertmanager可以对告警通知进行分组,将多条告警合合并为一个通知,避免短期内频繁收到多条相关告警。这里我们可以使用group_by来定义分组规则。基于告警中包含的标签,如果满足group_by中定义标签名称,那么这些告警将会合并为一个通知发送给接收器。

有的时候为了能够一次性收集和发送更多的相关信息时,可以通过group_wait参数设置等待时间,如果在等待时间内当前group接收到了新的告警,这些告警将会合并为一个通知向receiver发送。

group_interval配置,则用于定义相同的Group之间发送告警通知的时间间隔。

4.   示例:告警分组功能的实现

  • 默认情况下所有的告警都会发送给管理员default-receiver,因此在Alertmanager的配置文件的根路由中,对告警信息按照集群以及告警的名称对告警进行分组。
  •  如果告警是来源于数据库服务如MySQL或者pgsql,此时则需要将告警发送给相应的数据库管理员(dba)。这里定义了一个单独子路由,如果告警中包含service标签,并且service为mysql或者pgsql,则向dba-pager发送告警通知,由于这里没有定义group_by等属性,这些属性的配置信息将从上级路由继承,dba-pager将会接收到按cluser和alertname进行分组的告警通知。
  • 而某些告警规则来源可能来源于开发团队,这些告警中通过添加标签team来标示这些告警的创建者。在Alertmanager配置文件的告警路由下,定义单独子路由用于处理这一类的告警通知,如果匹配到告警中包含标签team,并且team的值为dev,Alertmanager将会按照标签product和environment对告警进行分组。此时如果应用出现异常,开发团队就能清楚的知道哪一个环境(environment)中的哪一个应用程序出现了问题,可以快速对应用进行问题定位。
route:
  receiver: 'default-receiver'
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 4h
  group_by: [cluster, alertname]
  routes:
 
- receiver: 'dba-pager'
   
group_wait: 10s
   
match_re:
     
service: mysql|pgsql
 
- receiver: 'dev-pager'
   
group_by: [product, environment]
   
match:
     
team: dev

receivers:
 
- name: 'default-receiver'
   
webhook_configs:
     
- url: 'http://127.0.0.1:5001/'
 
- name: 'dba-pager'
   
webhook_configs:
     
- url: 'http://127.0.0.1:5001/'
 
- name: 'dev-pager'
   
webhook_configs:
     
- url: 'http://127.0.0.1:5001/'

 

5.   示例:告警分级功能的实现

  • 在每条告警配置的标签中添加severity配置,有三种等级,分别为warning、critical和emergency。严重等级依次递增。
  • 不论收到那种等级的告警,都会邮件通知给默认的管理员default-receiver
  • 当告警等级为critical时,比较严重的告警,发送短信通知,每2h重复发送一次,直到问题解决
  • 当告警等级为emergency时,特别严重的告警,打电话通知,每1h重复发送一次,直到问题解决

三、  告警接收

1.  receiver配置介绍

在Alertmanager中路由负责对告警信息进行分组匹配,并向告警接收器发送通知。每一个receiver具有一个全局唯一的名称,并且对应一个或者多个通知方式,告警接收配置如下:

receivers:
- name: # 接收器名称,全局唯一

  # Configurations for several notification integrations.
  email_configs:
    [ - <email_config>, ... ]
  pagerduty_configs:
    [ - <pagerduty_config>, ... ]
  pushover_configs:
    [ - <pushover_config>, ... ]
  slack_configs:
    [ - <slack_config>, ... ]
  opsgenie_configs:
    [ - <opsgenie_config>, ... ]
  webhook_configs:
    [ - <webhook_config>, ... ]
  victorops_configs:
    [ - <victorops_config>, ... ]
  wechat_configs:
    [ - <wechat_config>, ... ]
- name: # 另一个接收器名称,全局唯一
    ………………

四、  告警静默

假设节点1持续处于宕机状态,并配置了repeat_interval: 1h,也就是如果故障没有解决,每1h会通知一次,直到故障恢复。但有可能这台服务器硬件损坏,短期内无法恢复,为了避免告警打扰,可以设置临时静默。

Alertmanager配置详解_Alertmanager

五、  告警抑制

Alertmanager的抑制机制可以避免当某种问题告警产生之后用户接收到大量由此问题导致的一系列的其它告警通知。例如当集群不可用时,用户可能只希望接收到一条告警,告诉他这时候集群出现了问题,而不是大量的如集群中的应用异常、中间件服务异常的告警通知。

1.  模拟3条告警

服务器宕机

nginx服务停止

nginx端口不通

由于nginx部署的服务器突然宕机,导致nginx服务停止、端口不存在。同时触发3条告警规则,收到3条告警通知。这种情况一般只需要通知告警优先级较高的告警,受关联告警不进行通知。

Alertmanager配置详解_配置文件解读_02

2.  模拟抑制

首先对nginx服务异常、网络端口异常告警增加一个标签【project:test-web】,标注这两种告警属同一业务。

页面查看抑制规则是否被读取。

第一条抑制规则为:当收到告警【服务器宕机】并且【host=192.168.3.154】时,触发抑制规则,后续收到的告警带有【project:test-web】标签的告警全部被抑制。(也就是服务器宕机时,nginx服务停止、端口不通的告警不再通知)

第二条抑制规则为:当收到告警标签中带有【severity=critical】标签时,触发抑制规则,后续收到告警带有【severity=warning】标签的告警全部被抑制。需要注意的是,这里还添加了【equal】标签,作用是source和target中都包含project这个标签,且他们的值一致时,才会抑制(也就是抑制nginx网络端口不通的告警)。

Alertmanager配置详解_子节点_03

3.   测试抑制规则1的告警数据:

服务器宕机,nginx服务停止,网络不通

[{

		"labels": {

			"team": "dev",

			"alertname": "服务器宕机",

			"cluster": "127.0.0.1",

			"product": "test",

			"host": "127.0.0.1",

			"severity": "emergency",

			"msgtype": "testing"

		},

		"annotations": {

			"info": "服务器宕机",

			"locahost": "127.0.0.1",

			"summary": "请检查服务器"

		}
	},
	{

		"labels": {

			"team": "dev",

			"alertname": "nginx停止",

			"project": "test-web",

			"cluster": "127.0.0.1",

			"product": "test",

			"host": "127.0.0.1",

			"severity": "critical",

			"msgtype": "testing"

		},

		"annotations": {

			"info": "nginx停止",

			"locahost": "127.0.0.1",

			"summary": "请检查nginx"

		}
	},
	{

		"labels": {

			"team": "dev",

			"alertname": "nginx网络端口不通",

			"project": "test-web",

			"cluster": "127.0.0.1",

			"product": "test",

			"prot": "80",

			"severity": "warning",

			"msgtype": "testing"

		},

		"annotations": {
			"info": "nginx网络端口不通",

			"locahost": "127.0.0.1:80",

			"summary": "请检查网络策略"

		}
	}
]

结果:

只存在服务器宕机告警,ngxin服务停止,网络端口不通告警被抑制

Alertmanager配置详解_Alertmanager_04

4.   测试抑制规则2的告警数据:

nginx服务停止,网络端口不通

[{

	"labels": {

		"team": "dev",

		"alertname": "nginx停止",

		"project": "test-web",

		"cluster": "127.0.0.1",

		"product": "test",

		"host": "127.0.0.1",

		"severity": "critical",

		"msgtype": "testing"

	},

	"annotations": {

		"info": "nginx停止",

		"locahost": "127.0.0.1",

		"summary": "请检查nginx"

	}
},
{

	"labels": {

		"team": "dev",

		"alertname": "nginx网络端口不通",

		"project": "test-web",

		"cluster": "127.0.0.1",

		"product": "test",

		"prot": "80",

		"severity": "warning",

		"msgtype": "testing"

	},

	"annotations": {

		"info": "nginx网络端口不通",

		"locahost": "127.0.0.1:80",

		"summary": "请检查网络策略"

	}
}
]

结果:

只存在nginx停止的告警,网络不通告警被抑制

Alertmanager配置详解_Alertmanager_05

标签:Alertmanager,0.1,标签,配置,127.0,nginx,详解,告警,路由
From: https://blog.51cto.com/u_16153276/6434312

相关文章

  • Midjourney AI绘画中文教程详解(完整版)模型、命令、参数与各种高级用法
     我有一种预感,您一下子看不完这篇内容,您得【收藏】一下,以便下次接着看~~ MidjourneyAI绘画中文教程,Midjourney是一款2022年3月面世的AI绘画工具,创始人是DavidHolz。 只要输入想到的文字,就能通过人工智能产出相对应的图片,耗时只有大约一分钟,这个工具不仅能绘画,还能做海报,UI设......
  • [网络调试]在内网接口配置nat hairpin enable测试不生效问题
    用户反馈F1030在内网接口启用nathairpinenable功能后,内网PC通过公网映射地址无法访问到内部服务器。现场F1030使用Ess9308P05版本,检查映射相关配置未发现问题。沟通了解,在公网上通过公网映射地址可以正常访问服务器,内网PC通过服务器私网地址也可以正常访问服务器,初步排除服......
  • 配置和使用Ehcache
    一、介绍 网上有很多关于Ehcache的介绍,这里就不在多说了,只需要知道Ehcache是一个缓存框架。缓存嘛,就是数据存取比硬盘快,但是容量小的存储区域。当我们需要频繁使用某些数据时,我们可以将这些数据放到缓存中,下次取数据的时候,直接从缓存中取,这样可以节省不少时间。如果我们自......
  • Vue 配置项props 使用方法
     props templatescript1 script2 ......
  • 生产环境windows服务器Oracle11gR2安装配置
    1.生产环境Windows主机环境规划  os:windows2008  ip:192.168.1.51  主机:ippuxwebdb  数据库:oracle11.2.0.4+补丁  数据库名:fgwebdb  主机  物理内存:内存16G/32G,CPU:i3/i5/i7硬盘空间500G  网络要求:有线  2.Windows服务器系统安装  1.VMware虚......
  • Frida--基础配置
    一、Frida基础依赖安装fridafrida-server安装方式1--pip:1pipinstallfrida2pipinstallfrida-servera安装方式2--Pycarm--Settings-  二、模拟器安装雷电模拟器:下载地址:https://www.ldmnq.com/默认安装,安装完成后进入路径 三、Frida-server手机端下载1......
  • redmine 迁移后邮箱配置
    https://blog.csdn.net/love8753/article/details/126380927步骤一修改配置文件步骤二redmine页面配置信息步骤一修改配置文件打开C:\Bitnami\redmine-3.3.0-1\apps\redmine\htdocs\config\configuration.yml,找到如下内容:address:一般为smtp+邮箱后缀名port:端口号,......
  • SAP HANA HASR 配置
    HANAHASR设置步骤,以SUSELINUX为例,RHEL类似:1、准备集群环境--安装SUSEHA需要的packagezypperin--typepatternha_sleszypperinSAPHanaSRSAPHanaSR-doc--配置基于共享存储的STONITH--创建SBD磁盘设备sbd-d /dev/sdc create--/dev/sdc需为集群共享磁盘--启动......
  • harbor配置https
    1、首先需要准备好ssl证书,没有安全的ssl证书的话,可以用openssl配置harbor自签名证书生成CA证书私钥:opensslgenrsa-outca.key40962、生成CA证书(有两种配置,域名或者IP两种方式,下边分别说明)域名方式:opensslreq-x509-new-nodes-sha512-days3650\-subj"/C=CN/ST=Beijing......
  • 深入理解注解驱动配置与XML配置的融合与区别
    摘要:本文旨在深入探讨Spring框架的注解驱动配置与XML配置,揭示两者之间的相似性与差异。本文分享自华为云社区《Spring高手之路2——深入理解注解驱动配置与XML配置的融合与区别》,作者:砖业洋__。本文旨在深入探讨Spring框架的注解驱动配置与XML配置,揭示两者之间的相似性与差异。......