告警抑制 静默(告警抑制和告警屏蔽)

来源网友投稿 1968 2022-12-28

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。
本篇文章给大家谈谈告警抑制 静默,以及告警抑制和告警屏蔽对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享告警抑制 静默的知识,其中也会对告警抑制和告警屏蔽进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

DevOps之prometheus实现优雅的告警

目前prometheus的告警,常用的有grafana自带的告警和prometheus插件alertmanger的告警两种,这里测试下alertmanger的告警功能。

综合考虑,配合上prometheus operator,使用alertmanger,能够使监控告警这块的工作更加devops。

prometheus operator 在k8s中引入了自定义资源定义(CRSs)Prometheus、ServiceMonitor、PrometheusRule和Alertmanager。

所以在k8s中搭建好prometheus operator后,当我们需要监控一个项目时,我们的配置顺序是配置ServiceMonitor获取监控数据,配置PrometheusRule获取告警阈值,配置Alertmanager制定告警发送方式

如果我们已经完成了ServerMonitor的对象的编写,下面就要将监控好的重要数据,设置阈值,触发告警。

这里用spark 服务cpu使用率为例,介绍下PrometheusRule的写法

这样我们就完成一个PrometheusRule 资源对象的编写了,那么prometheus是怎么识别这个告警规则的呢。

我们先查看下prometheus的资源对象

kubectl get prometheus/k8s -n monitoring -o yaml

可以看到,prometheus会自动匹配标签为prometheus=k8s 和 role=alert-rules的prometheusRule的资源对象,这里我们可以体会到prometheus operator自动发现的魅力,我们只需要编写相应的告警规则yaml文件,然后apply一下,便可以制定告警。

在prometheus界面上面查看刚刚制定的告警规则

对于告警通知,需要考虑以下几点

及时性:邮件通知有时候不会注意,尤其是不在电脑面前,所以这里我们选择工作中使用的企业微信作为告警消息推送方式
简洁性:如果服务器性能等到达了一个warning值,会有很多相关的告警全部触发,所以这里我们需要配置分组、静默、抑制方案
容灾性:如果alermanger或者prometheus本身挂掉了,发不出告警怎么办,一般会采用另一个监控来监控prometheus,或者自定义一个持续不断的告警通知,哪一天这个告警通知不发了,说明监控出现问题了。很棒的一点是,prometheus operator已经考虑了这一点,本身携带一个watchdog,作为对自身的监控

创建一个alertmanger配置文件

删除之前的secret对象,并且创建新的

查看企业微信,这个时候会发现已经收到告警信息

这个watchdog便是对prometheus自身的监控。如果有需要,可以制定一条路由,匹配severity为none的告警,然后每24h重复一次,这样可以达到每天监控prometheus本身的效果,哪一天没收到watchdog,便可以知道prometheus挂了。

正常收到的告警信息

alertmanger也支持webhook告警,但是比如钉钉和企业微信机器人这类对消息头有特殊要求的,如果直接用webhook的话,需要安装一个插件封装下,才可以调用

Alertmanager还支持临时静默告警。有时候我们在处理告警,想要临时静默告警消息,或者测试环境中,进行压测,需要临时静默一段时间的告警,我们就可以直接通过Alertmanager的UI临时屏蔽特定的告警通知。通过定义标签的匹配规则(字符串或者正则表达式),如果新的告警通知满足静默规则的设置,则停止向receiver发送通知
目前Alertmanager只支持在UI上面进行临时静默告警

当静默规则生效以后,从Alertmanager的Alerts页面下用户将不会看到该规则匹配到的告警信息,微信机器人也不会发送响应的告警消息

告警管理

将CMDB系统与Prometheus连接告警抑制 静默,实现批量部署配置文件告警抑制 静默,批量管理告警信息等

1.收到告警后,能通过页面针对不合理的阈值进行单个
批量修改,在告警消息上能针对
单个阈值进行修改。
2.对应用进行分组,并针对该组制定告警规则。
3.告警发送通道的自助式配置。
4.维护窗口进行告警的单个
批量静默。

1.告警大屏上展示告警的关键信息,如应用、IP、维护者、重要性。
2.告警数据的分析,哪些应用或实例告警频率高。
3.告警的个例、批量修改,修改的记录有留痕。

哪里问题多?什么问题?。

1.平台下发数据是否正常,涉及规则、应用实例是否按既定规则推送。
2.规则变更后的生效时间,目前15分钟。
3.告警发生差异,触发阈值的告警数及送达告警数。
4.告警消息轨迹及时延,从产生告警及送达对应的通道。

1.针对硬件、网络、系统、应用(部分业务)四类采集器进行自助式告警规则、告警模板、应用分组配置。
2.自助式进行告警规则启用、禁用、静默。
3.告警大盘展现,不同级别不同颜色。
4.告警通知:钉钉@到人,接入电话、短信告警。
5.简化告警模板。
6.告警渠道管理。
7.支持用户订阅告警消息。
8.支持延迟通知设置。
9.行为日志记录:规则变更、阈值变更、静默变更。
10.告警消息上点击操作数据能同步到后端并处理。

2020-08-25

Prometheus 实现邮件告警(Prometheus+Alertmanager+QQ邮箱或者网易163邮箱告警抑制 静默,目前测试过这两种邮箱都可以发送告警邮件)

Prometheus实现邮件告警原理如下告警抑制 静默

Prometheus官方有一个附带告警抑制 静默的中间件:alertmanager告警抑制 静默,通过设置rules规则和路由转发可以实现邮件告警,前提是你需要有一个可以发送邮件的邮件服务端(可以自建或者使用互联网公司提供的免费邮箱)

告警原理图
Prometheus完整架构图

我之前得出的错误结论如下:

推荐直接在虚拟机操作系统上直接安装Prometheus和Alertmanager,不推荐其中任何一方在容器中运行,因为测试过在容器中运行Prometheus和alertmanager,结果出现如下错误情况

第一种情况是:我的node-exporter掉线跌机了(手动关机,模拟突然掉线跌机),Prometheus却提示节点依然在线?有时候却能够正常显示节点掉线跌机,生成告警发送邮件

第二种情况是:我的node-exporter掉线跌机了(手动关机,模拟突然掉线跌机),Prometheus提示节点掉线,告警生成,但是没有发送邮件,我手动恢复node-exporter后,告警解除,邮件能正常发送邮件提示告警已经解除。。。。

第三种情况是:我的node-exporter掉线跌机了(手动关机,模拟突然掉线跌机),Prometheus提示节点掉线,告警生成,正常成功发送邮件,我手动恢复node-exporter后,告警解除,邮件没有发送出来。。。。

以上三种情况之前经常出现,当时第一步以为是自己设置的scrape_interval不合理导致的,结果调试几次,问题没有解决,第二步以为是自己的服务器时间没有做到精确同步,然后我去设置和阿里云的ntp服务器同步,结果问题依然没有解决,第三步,换个方向,把alertmanager迁移到虚拟机操作系统上安装运行,问题解决!
北京时间是GMT+8小时,有些同志的时间可能是UTC的,但是如果是在要求不太十分精确的情况下,UTC时间是刚刚好等于GMT时间

为了避免时区的混乱,prometheus所有的组件内部都强制使用Unix时间,对外展示使用GMT时间。

要改时区有两个办法

1 .修改源码,重新编译。
2. 使用 docker 运行 Prometheus,挂载本地时区文件

docker run --restart always -e TZ=Asia/Shanghai --hostname prometheus --name prometheus-server -d -p 9090:9090 -v /data/prometheus/server/data:/prometheus -v /data/prometheus/server/conf/prometheus.yml:/etc/prometheus/prometheus.yml -u root prom/prometheus:v2.5.0

正文开始

安装alertmanager

容器安装方式:

docker run -d --name alertmanager -p 9093:9093 -v /usr/local/Prometheus/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager:latest

先在宿主机/usr/local/Prometheus下创建一个文件夹alertmanager,然后在文件夹里创建alertmanager.yml配置文件,待会才能映射到alertmanager容器里的/etc/alertmanager目录下
global:全局配置

   resolve_timeout: 问题解决的超时时间

   smtp_from: 发送告警邮件的邮箱账号

   smtp_smarthost: 邮箱 SMTP 服务地址,这里是以QQ邮箱为例,也可以用网易163邮箱,这个和我之前设置zabbix邮件告警时的配置一样

   smtp_auth_username: 如果没有设置邮箱别名,那就是账户名

   smtp_auth_password:  邮箱的授权码,不是 账户密码,你可以在QQ邮箱或者网易163邮箱网页端设置,开启 POP3/SMTP 服务时会提示,和配置zabbix邮件告警的时候几乎一样

   smtp_require_tls: 是否使用 tls,根据环境不同,来选择开启和关闭。如果提示报错 email.loginAuth failed: 530 Must issue a STARTTLS command first,那么就需要设置为 true。着重说明一下,如果开启了 tls,提示报错 starttls failed: x509: certificate signed by unknown authority,需要在 email_configs 下配置 insecure_skip_verify: true 来跳过 tls 验证。
templates: 告警模板目录,可以不编写模板,有默认模板

    Subject: '{{ template "email.default.subject" . }}'

    html: '{{ template "email.default.html" . }}'
route:报警的分发设置

    group_by:分组

    group_wait: 分组等待时间

    group_interval: 5m 每组时间间隔

    repeat_interval: 10m 重复间隔

    receiver: 接收方式,请注意!这里的名字要对应下面receivers中的任何一个名字,不然会报错,这里其实就是选择方式,有邮箱,企业微信,wehook,victorops等等
receivers:接受方式汇总,即告警方式汇总

例子:

receivers:

- name:'default-receiver' 

email_configs:

- to:'whiiip@163.com'    

  html: '{{ template "alert.html" . }}'    

  headers: { Subject: "[WARN] 报警邮件test"}
inhibit_rules:   抑制规则

当存在与另一组匹配的警报(源)时,抑制规则将禁用与一组匹配的警报(目标)。

包括源匹配和目标匹配

alertmanager官方是这样说的

Inhibition

Inhibition is a concept of suppressing notifications for certain alerts if certain other alerts are already firing.

Example:  An alert is firing that informs that an entire cluster is not reachable. Alertmanager can be configured to mute all other alerts concerning this cluster if that particular alert is firing. This prevents notifications for hundreds or thousands of firing alerts that are unrelated to the actual issue.

Inhibitions are configured through the Alertmanager's configuration file.

当存在与另一组匹配器匹配的警报(源)时,禁止规则会使与一组匹配器匹配的警报(目标)静音。目标警报和源警报的equal列表中的标签名称都必须具有相同的标签值。

在语义上,缺少标签和带有空值的标签是同一件事。因此,如果equal源警报和目标警报都缺少列出的所有标签名称,则将应用禁止规则。

为了防止警报禁止自身,与规则的目标和源端 都 匹配的警报不能被警报(包括其本身)为真来禁止。但是,我们建议选择目标匹配器和源匹配器,以使警报永远不会同时匹配双方。这很容易进行推理,并且不会触发此特殊情况。

接着是规则rules
不解释了,自己研究官方文档
alertmanager的非容器安装方式是

 wget https://github.com/prometheus/alertmanager/releases/download/v0.20.0/alertmanager-0.20.0.linux-amd64.tar.gz

tar xf alertmanager-0.20.0.linux-amd64.tar.gz
mv alertmanager-0.20.0.linux-amd64 /usr/local/alertmanager
vim /usr/lib/systemd/system/alertmanager.service
[Unit]
Description=alertmanager

Documentation=https://github.com/prometheus/alertmanager

After=network.target

[Service]

Type=simple

User=root

ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml

Restart=on-failure

[Install]

WantedBy=multi-user.target

Alertmanager 安装目录下默认有 alertmanager.yml 配置文件,可以创建新的配置文件,在启动时指定即可。

其余方式和上面一样

接着是Prometheus,我之前的博客里有写了容器安装和非容器安装的方法,自己去翻阅

然后是在prometheus.yml里修改相关配置

首先去掉alertmanager的注释,改成IP加你设置的端口号,默认是9093
接着在rule_files: 下面写下规则文件的绝对路径,可以是具体文件名,也可以是*,也可以分几级文件,*默认是全部匹配
接着是被监控项的设置,这里设置完成可以在Prometheus网页里的targets里看得到

请注意,这里设置的参数名字要和rule规则中设置的参数名字一模一样,否则你的prometheus服务会无法启动,然后报错

如果不在特定的job下设置scrape_interval(优先级高于全局),则默认采用gobal下的scrape_interval
最后模拟节点掉线,手动关闭node-exporter或者Cadvisor

docker stop node-exporter 或者容器ID

docker stop cadvisor 或者容器ID

或者把up{{job='prometheus'}} == 1 设置成1,反向设置,不用关掉服务,就可以看看告警成不成功
说明一下 Prometheus Alert 告警状态有三种状态:Inactive、Pending、Firing。

Inactive:非活动状态,表示正在监控,但是还未有任何警报触发。

Pending:表示这个警报必须被触发。由于警报可以被分组、压抑/抑制或静默/静音,所以等待验证,一旦所有的验证都通过,则将转到 Firing 状态。

Firing:将警报发送到 AlertManager,它将按照配置将警报的发送给所有接收者。一旦警报解除,则将状态转到 Inactive,如此循环。
没有配置告警模板时的默认告警格式是这样的
节点恢复后邮件告知是这样的
写了模板后是这样的
还要重新映射模板文件夹路径到alertmanager容器里的相对路径,然后重启alertmanager,当然,如果目录下没有模板文件,则不显示
告警模板
在alertmanager.yml中修改相关设置

重启alertmanager

docker restart alertmanager

最终效果不是很好

“SuppressWarnings”是什么意思呀?

释义告警抑制 静默:“SuppressWarnings”该批注的作用是给编译器一条指令告警抑制 静默,告诉它对被批注的代码元素内部的某些警告保持静默。用于抑制编译器产生警告信息。

示例:

抑制单类型的警告:

抑制多类型的警告:

抑制所有类型的警告:

注解目标:通过 @SuppressWarnings 的源码可知,其注解目标为类、字段、函数、函数入参、构造函数和函数的局部变量。

机载雷达告警系统工作原理是什么?

飞机被雷达扫描时告警抑制 静默,照到飞机上的雷达波能量较少告警抑制 静默,而且是来回扫描的。飞机上的雷达告警系统接受到飞机表面的雷达告警天线接受到的雷达波告警抑制 静默,会提示飞行员某个方向有雷达扫描。当飞机被雷达锁定时告警抑制 静默,锁定需要雷达集中能量照射飞机。飞机的告警天线会接受到连续的强烈的雷达波照射。告警系统就会报警。提示飞机被锁定。红外锁定因为是完全的被动原理。被锁定的飞机没有办法得知自己被锁定。先进的飞机有全向红外接近告警。告诉飞行员可能有高速接近的物体,可能是导弹。

ixchariot 中silence suppression是什么意思?

silence suppression
静默抑制
.
___________________________
很高兴为你解答!
如有不懂,请追问。 谢谢! 关于告警抑制 静默和告警抑制和告警屏蔽的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 告警抑制 静默的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于告警抑制和告警屏蔽、告警抑制 静默的信息别忘了在本站进行查找喔。
上一篇:无人机电力巡检成常态,未来普及应用注意三点
下一篇:去除瞬时告警的方法(如何破除安全警告)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~