[云原生] Prometheus之部署 Alertmanager 发送告警

news/2024/5/19 0:58:52 标签: 云原生, prometheus, 运维

一、Alertmanager 发送告警的介绍

Prometheus 对指标的收集、存储与告警能力分属于 Prometheus Server 和 AlertManager 两个独立的组件,前者仅负责定义告警规则生成告警通知, 具体的告警操作则由后者完成。

Alertmanager 负责处理由 Prometheus Server 发来的告警通知,Alertmanager对告警通知进行分组、去重后,根据路由规则将其路由到不同的receiver,如
Email、钉钉或企业微信等。

除了基本的告警通知能力外,Altermanager还支持对告警进行去重、分组、抑制、静默和路由等功能:
●分组(Grouping):将相似告警合并为单个告警通知的机制,在系统因大面积故障而触发告警潮时,分组机制能避免用户被大量的告警噪声淹没,进而导致关键信息的隐没

●抑制(Inhibition):系统中某个组件或服务故障而触发告警通知后,那些依赖于该组件或服务的其它组件或服务可能也会因此而触发告警,抑制便是避免类似的级联告警的一种特性,从而让用户能将精力集中于真正的故障所在

●静默(Silent):是指在一个特定的时间窗口内,即便接收到告警通知,Alertmanager也不会真正向用户发送告警信息的行为;通常,在系统例行维护期间,需要激活告警系统的静默特性

●路由(route):用于配置Alertmanager如何处理传入的特定类型的告警通知,其基本逻辑是根据路由匹配规则的匹配结果来确定处理当前告警通知的路径和行为

二、Alertmanager邮箱报警设置

(1)上传 alertmanager-0.24.0.linux-amd64.tar.gz 到 /opt 目录中,并解压 
cd /opt/
tar xf alertmanager-0.24.0.linux-amd64.tar.gz
mv alertmanager-0.24.0.linux-amd64 /usr/local/alertmanager
(2)修改 alertmanager 配置文件,添加邮件告警路由信息
vim /usr/local/alertmanager/alertmanager.yml
#global 配置段用于定义全局配置
#templates 配置段负责自定义告警内容模板文件
#route 配置段用于指定如何处理传入的告警
#receiver 配置段则定义了告警信息的接收器,每个接收器都应该有其具体的定义
 
global:                       #在全局配置段设置发件人邮箱信息
  resolve_timeout: 5m             #定义持续多长时间未接收到告警通知后,就将告警状态标记为resolved
  smtp_smarthost: 'smtp.qq.com:25'
  smtp_from: '这里使用的是个人邮箱'
  smtp_auth_username: '这里使用的是个人邮箱'
  smtp_auth_password: 'xxxxxx'    #此处为授权码,登录QQ邮箱【设置】->【账户】中的【生成授权码】获取
  smtp_require_tls: false         #禁用TLS的传输方式
route:                        #设置告警的分发策略
  group_by: ['alertname']         #采用哪个标签来作为分组依据,这里使用告警名称做为规则,满足规则的告警将会被合并到一个通知中
  group_wait: 20s                 #一组告警第一次发送之前等待的时延,即产生告警20s将组内新产生的消息合并发送,通常是0s~几分钟(默认是30s)
  group_interval: 5m              #一组已发送过初始告警通知的告警,接收到新告警后,下次发送通知前等待时延,通常是5m或更久(默认是5m)
  repeat_interval: 20m            #一组已经发送过通知的告警,重复发送告警的间隔,通常设置为3h或者更久(默认是4h)
  receiver: 'my-email'    #定义告警接收人
receivers:                    #设置收件人邮箱信息
- name: 'my-email'
  email_configs:
  - to: '收件人的邮箱'    #设置收件人邮箱地址
    send_resolved: true

(3)配置启动文件 
cat > /usr/lib/systemd/system/alertmanager.service <<'EOF'
[Unit]
Description=alertmanager
Documentation=https://prometheus.io/
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/alertmanager/alertmanager \
--config.file=/usr/local/alertmanager/alertmanager.yml \
--log.level=debug
 
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
EOF
 
#启动 Alertmanager
systemctl start alertmanager
systemctl enable alertmanager
 
netstat -natp | grep :9093

(4)添加告警规则  
mkdir /usr/local/prometheus/alter_rules
 
vim /usr/local/prometheus/alter_rules/instance_down.yaml
groups:
#若某个 Instance 的 up 指标的值转为 0 持续超过 1 分钟后,将触发告警
- name: AllInstances
  rules:
  - alert: InstanceDown                  #告警规则的名称,一个组内的告警规则名称必须惟一
    # Condition for alerting
    expr: up == 0                        #基于PromQL表达式的告警触发条件(布尔表达式)
    for: 1m                              #控制在触发告警之前,测试表达式的值必须为true的时长
	                                     #表达式值为true,但其持续时间未能满足for定义的时长时,相关的告警状态为pending
	                                     #满足该时长之后,相关的告警将被触发,并转为firing状态
	                                     #表达式的值为false时,告警将处于inactive状态
    # Annotation - additional informational labels to store more information
    annotations:                         #附加在告警之上的注解信息
      title: 'Instance down'
      description: Instance has been down for more than 1 minute.'
    # Labels - additional labels to be attached to the alert
    labels:
      severity: 'critical'               #在告警上附加的自定义的标签
#CPU 使用率大于 80% 触发告警
- name: node_alert
  rules:
  - alert: cpu_alert
    expr: 100 -avg(irate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance)* 100 > 80
    for: 5m
    labels:
      level: warning
    annotations:
      description: "instance: {{ $labels.instance }} ,cpu usage is too high ! value: {{$value}}"
      summary:  "cpu usage is too high"

(5)修改 prometheus 配置文件,添加 Alertmanager 实例的配置 
vim /usr/local/prometheus/prometheus.yml
......
alerting:
  alertmanagers:
    - static_configs:
        - targets:
            - 192.168.80.30:9093 #任意一台k8s主机IP及exporter服务监听端口
 
rule_files:
  - "/usr/local/prometheus/alter_rules/*.yaml"
  
 
systemctl reload prometheus

 (6)进行报警测试
systemctl stop node_exporter.service 

(7)恢复监控节点的exporter服务 
systemctl start node_exporter.service

三、Alertmanager钉钉报警设置 

prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz%20%E5%88%B0%20%2Fopt%20%E7%9B%AE%E5%BD%95%E4%B8%AD%EF%BC%8C%E5%B9%B6%E8%A7%A3%E5%8E%8B">(1)上传 prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz 到 /opt 目录中,并解压
cd /opt/
tar xf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz
mv prometheus-webhook-dingtalk-2.1.0.linux-amd64 /usr/local/dingtalk
(2)登录阿里钉钉,并且进行设置 
创建群 -> 群设置 -> 智能群助手 -> 添加机器人 -> 添加机器人 -> 自定义
消息推送    开启
Webhook     复制
安全设置 -> 勾选 加签 -> 复制
点击完成
(3)修改 dingtalk 告警插件配置文件 
cd /usr/local/dingtalk
cp -p config.example.yml config.yml
 
vim config.yml
timeout: 5s
 
## Uncomment following line in order to write template from scratch (be careful!)
#no_builtin_template: true
 
## Customizable templates path
templates:
  - contrib/templates/legacy/template.tmpl
 
## You can also override default template using `default_message`
## The following example to use the 'legacy' template from v0.3.0
default_message:
  title: '{{ template "legacy.title" . }}'
  text: '{{ template "legacy.content" . }}'
 
## Targets, previously was known as "profiles"
targets:
  webhook1:
    url: <粘贴Webhook的内容>
    # secret for signature
    secret: <粘贴加签的内容>
 
#启动服务 
./prometheus-webhook-dingtalk
(4)修改 alertmanager 配置文件 
vim /usr/local/alertmanager/alertmanager.yml
global:
  resolve_timeout: 5m
 
route:
  group_by: [alertname]
  group_wait: 10s
  group_interval: 15s
  repeat_interval: 20m
  receiver: 'dingding.webhook1'
 
receivers:
- name: 'dingding.webhook1'
  webhook_configs:
  - url: 'http://192.168.73.108:8060/dingtalk/webhook1/send'
    send_resolved: true
 
  
systemctl reload alertmanager
(5)测试告警 
systemctl stop node_exporter

http://www.niftyadmin.cn/n/5430975.html

相关文章

CRC校验(FPGA实现)

1 什么是CRC校验? CRC(循环冗余校验)是一种校验和算法,用于检测数据传输或存储中是否发生了错误。它通过对数据流进行特定的数学运算(比如按照多项式进行除法运算),生成一个特定长度的校验结果,将其附加到数据中一起传输或存储。接收方可以使用相同的算法对接收到的数…

音视频如何快速转二维码?在线生成音视频活码的教程

音频文件的二维码制作步骤是什么样的呢&#xff1f;扫描二维码来展现内容是很流行的一种方式&#xff0c;基本上日常生活中经常会用的图片、音频、视频等都可以使用生成二维码的方式。现在很多的幼儿园或者学校会录制孩子的音频或者视频内容用来展示&#xff0c;那么二维码制作…

在ubuntu22.04上unsupported SSL backend ‘openssl‘. supported SSL backends: gnutls

在 Ubuntu 22.04 上遇到 Git 报告 “unsupported SSL backend ‘openssl’. supported SSL backends: gnutls” 的错误&#xff0c;通常是因为 Git 客户端被配置为尝试使用不支持的 SSL 后端。Ubuntu 的 Git 包默认使用 GnuTLS。这个问题可能是由于全局 Git 配置错误导致的&…

因聚而生 数智有为丨软通动力携子公司鸿湖万联亮相华为中国合作伙伴大会2024

3月14日&#xff0c;以“因聚而生 数智有为”为主题的“华为中国合作伙伴大会2024”在深圳隆重开幕。作为华为的重要合作伙伴和本次大会钻石级&#xff08;最高级&#xff09;合作伙伴&#xff0c;软通动力深度参与本次盛会&#xff0c;携前沿数智化技术成果和与华为的联合解决…

华为配置敏捷分布式SFN漫游实验

配置敏捷分布式SFN漫游示例 组网图形 图1 配置敏捷分布式SFN漫游示例组网图 组网需求数据规划配置思路配置注意事项操作步骤配置文件 组网需求 某医院通过部署敏捷分布式网络给医护人员提供WLAN接入服务&#xff0c;以满足医护人员办公的最基本需求。管理员希望终端在覆盖区域内…

GPT实战系列-LangChain的OutPutParser解析器

GPT实战系列-LangChain的OutPutParser解析器 LangChain GPT实战系列-LangChain如何构建基通义千问的多工具链 GPT实战系列-构建多参数的自定义LangChain工具 GPT实战系列-通过Basetool构建自定义LangChain工具方法 GPT实战系列-一种构建LangChain自定义Tool工具的简单方法…

layuiAdmin-通用型后台模板框架【广泛用于各类管理平台】

1. 主页 1.1 控制台 2. 组件 3. 页面 3.1 个人主页 3.2 通讯录 3.3 客户列表 3.4 商品列表 3.5 留言板 3.6 搜索结果 3.7 注册 3.8 登入 3.9 忘记密码 4. 应用 4.1 内容系统 4.1.1 文章列表 4.1.2 分类管理 4.1.3 评论管理 4.2 社区系统 4.2.1 帖子列表 4.2.2 回…

R语言数据挖掘-关联规则挖掘(1)

一、分析目的和数据集描述 要分析的数据是美国一区域的保险费支出的历史数据。保险费用数据表的每列分别为年龄、性别、体重指数、孩子数量、是否吸烟、所在区域、保险收费。 本文的主要目的是分析在年龄、性别、体重指数、孩子数量、是否吸烟、所在区域中这些因素中&#xf…