【云原生】Prometheus之部署 Alertmanager 发送告警

这篇具有很好参考价值的文章主要介绍了【云原生】Prometheus之部署 Alertmanager 发送告警。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言 

1. Alertmanager 发送告警的介绍

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

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

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

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

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

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

2.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

【云原生】Prometheus之部署 Alertmanager 发送告警,云原生,prometheus

 

【云原生】Prometheus之部署 Alertmanager 发送告警,云原生,prometheus

 

【云原生】Prometheus之部署 Alertmanager 发送告警,云原生,prometheus

 

(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

【云原生】Prometheus之部署 Alertmanager 发送告警,云原生,prometheus

【云原生】Prometheus之部署 Alertmanager 发送告警,云原生,prometheus 

 

 (6)进行报警测试

systemctl stop node_exporter.service 

【云原生】Prometheus之部署 Alertmanager 发送告警,云原生,prometheus

【云原生】Prometheus之部署 Alertmanager 发送告警,云原生,prometheus

【云原生】Prometheus之部署 Alertmanager 发送告警,云原生,prometheus

【云原生】Prometheus之部署 Alertmanager 发送告警,云原生,prometheus

 

 3.Alertmanager钉钉报警设置

(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文章来源地址https://www.toymoban.com/news/detail-600305.html

(5)测试告警

systemctl stop node_exporter

到了这里,关于【云原生】Prometheus之部署 Alertmanager 发送告警的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警

    1、服务端口规划: 服务 端口 Prometheus 59090 Node_exporter 59100 Alertanager 9093 Webhook-dingtalk 8060 2、本次实验架构调用图如下: 3、钉钉创建机器人保存Webhook地址: 总共需要保存两项,我们后续会用到: 1、加签后的秘钥 2、webhook地址 安装配置只涉及到安装及正常启动无误,并不涉及

    2024年02月11日
    浏览(28)
  • prometheus告警发送到钉钉群机器人的全部署流程

    前置条件:prometheus安装完成,创建钉钉群机器人,我这里使用的是指定ip的方式 修改Prometheus配置文件prometheus.yml,添加以下配置: 在目录/usr/local/prometheus/rules/下创建告警文件hoststats-alert.rules内容如下: 重启Prometheus后访问Prometheus http://127.0.0.1:9090/rules可以查看当前以加载的规

    2024年02月11日
    浏览(43)
  • 【云原生】3分钟快速在Kubernetes1.25部署Prometheus2.42+Grafana9.5.1+Alertmanager0.25

    1、简介 Prometheus-operator帮助我们快速创建Prometheus+Grafana+Alertmanager等服务,而kube-prometheus更加完整的帮助我们搭建全套监控体系,这包括部署多个 Prometheus 和 Alertmanager 实例, 指标导出器,例如用于收集节点指标node_exporter,将prometheus链接到各种 指标终结点,以及用于通知群集

    2024年02月11日
    浏览(38)
  • 云原生之深入解析Prometheus AlertManager的实战操作

    Prometheus 包含一个报警模块,就是 AlertManager,Alertmanager 主要用于接收 Prometheus 发送的告警信息,它支持丰富的告警通知渠道,而且很容易做到告警信息进行去重、降噪、分组等,是一款前卫的告警通知系统。 Prometheus 的学习资料: GitHub 地址 官方文档 关于 Prometheus 整体介绍

    2024年02月16日
    浏览(47)
  • 部署prometheus、grafana、alertmanager

    简介:由于资源有限,本实验用了两台机器 监控端:部署prometheus、grafana、alertmanager 被监控端:node_exporter、mysqld_exporter https://prometheus.io/download/ ​  mkdir -p /data/prometheus ​  tar -zxvf /root/prometheus-2.42.0.linux-amd64.tar.gz -C /data/ ​  cd /data ​  mv prometheus-2.42.0.linux-amd64/ prometheus 创建

    2023年04月19日
    浏览(44)
  • 容器云平台监控告警体系(五)—— Prometheus发送告警机制

    在Prometheus的架构中告警被划分为两个部分,在Prometheus Server中定义告警规则以及产生告警,Alertmanager组件则用于处理这些由Prometheus产生的告警。本文主要讲解Prometheus发送告警机制也就是在Prometheus Server中定义告警规则和产生告警部分,不过多介绍Alertmanager组件。 在Prometheus中

    2023年04月23日
    浏览(46)
  • 云原生监控系统Prometheus:基于Prometheus构建智能化监控告警系统

    目录 一、理论 1.Promethues简介 2.监控告警系统设计思路 3.Prometheus监控体系 4.Prometheus时间序列数据 5.Prometheus的生态组件 6.Prometheus工作原理 7.Prometheus监控内容 8.部署Prometheus 9.部署Exporters 10.部署Grafana进行展示 二、实验 1.部署Prometheus 2.部署Exporters 2.监控远程MySQL 3.部署Grafana进行

    2024年02月07日
    浏览(46)
  • 云原生周刊 | 使用 ChatGPT 协助解决 Prometheus 告警

    kubernetes-chatgpt-bot 这是一个适用于 Slack 的 ChatGPT 机器人,只要有监控告警发送到 Slack 频道中,你就可以通过机器人向 ChatGPT 咨询如何解决这个告警,ChatGPT 将会给出一个较为详细的解决方案。 Copacetic Copacetic 是一个使用 Go 语言编写的 CLI 工具,它可以根据 Trivy 等工具的漏洞扫

    2024年02月02日
    浏览(48)
  • 外独立部署Prometheus+Grafana+Alertmanager监控K8S

    用集群外的prometheus来监控k8s,主要是想把监控服务跟k8s集群隔离开,这样就能减少k8s资源的开销。 CentOS Linux release 7.7.1908 (Core)  3.10.0-1062.el7.x86_64  Docker version 20.10.21 主机名 IP 备注 prometheus-server.test.cn 192.168.10.166 k8s集群 192.168.10.160:6443 集群master-vip 需要通过exporter收集各种维

    2024年02月08日
    浏览(52)
  • K8s部署Prometheus+grafana+alertmanager报警监控系统(持续更新)

    自行准备一套k8s集群,如果不知道怎么搭建,可以参考一下我之前的博客 https://blog.csdn.net/qq_46902467/article/details/126660847 我的k8s集群地址是: k8s-master1 10.0.0.10 k8s-node1 10.0.0.11 k8s-node2 10.0.0.12 一、安装nfs服务 二、安装nfs客户端 三、部署Prometheus 四、部署grafana 五、部署alertmanage

    2023年04月24日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包