Linux安装PrometheusAlert实现钉钉告警

小柒博客 评论30字数 1717阅读5分43秒阅读模式

一、Alertmanager简介

‌AlertManager‌是一个开源的告警管理工具,主要用于处理来自监控系统(如Prometheus)的告警。它的设计目标是提供一个统一的告警处理平台,能够集中管理告警的路由、去重、分组和通知等操作。在现代云服务架构中,AlertManager扮演着至关重要的角色,确保关键系统和服务的可靠性和稳定性‌。

‌AlertManager‌核心功能

‌告警去重‌:识别重复的告警信息,避免同一问题的多次通知,减少告警噪音‌。

‌告警分组‌:将相似的告警聚合成组,以单一通知的形式发送,有助于更有效地管理大量的告警信息‌。

‌告警路由‌:根据预定义的规则,将不同的告警发送到不同的接收器(如Email、Slack、PagerDuty等),实现告警通知的精确分发‌。

‌告警抑制‌:在某些情况下,可以配置AlertManager临时抑制某些类型的告警,以防止在已知问题处理过程中产生过多的告警干扰‌。

‌静默‌:根据标签快速对警报进行静默处理,避免在已知问题处理过程中接收到过多的无用通知‌。

二、PrometheusAlert简介

PrometheusAlert是开源的运维告警中心消息转发系统,支持主流的监控系统Prometheus、Zabbix,日志系统Graylog2,Graylog3、数据可视化系统Grafana、SonarQube。阿里云-云监控,以及所有支持WebHook接口的系统发出的预警消息,支持将收到的这些消息发送到钉钉,微信,email,飞书,腾讯短信,腾讯电话,阿里云短信,阿里云电话,华为短信,百度云短信,容联云电话,七陌短信,七陌语音,TeleGram,百度Hi(如流),Kafka等。

‌PrometheusAlert‌主要特性

‌支持多种消息来源:PrometheusAlert支持Prometheus、Graylog和Grafana等主流监控和日志系统发出的预警消息。

‌支持多种发送目标‌:支持将预警消息发送到钉钉、短信、语音等多种通知渠道。

‌针对Prometheus的优化‌:增加了告警级别,支持按照不同级别发送消息到不同目标对象。

‌简化配置‌:支持按照具体消息发送到单个或多个接收方,增加手机号码配置项,支持号码自动轮询配置,可固定发送给单一个人告警信息,也可以通过自动轮询的方式发送到多个人员‌。

三、PrometheusAlert安装

PrometheusAlert可以部署在本地和云平台上,支持Windows、Linux、公有云、私有云、混合云、容器和Kubernetes。你可以根据实际场景或需求,选择相应的方式来部署PrometheusAlert。

1)下载安装包

[root@localhost ~]# yum -y install wget unzip

[root@localhost ~]# wget --no-check-certificate https://github.com/feiyu563/PrometheusAlert/releases/download/v4.9.1/linux.zip

2)解压及重命名

[root@localhost ~]# unzip linux.zip

[root@localhost ~]# mv linux /usr/local/prometheusalert

3)授权

[root@localhost ~]# chmod +x /usr/local/prometheusalert/PrometheusAlert

4)配置app.conf

[root@localhost ~]# cp /usr/local/prometheusalert/conf/app.conf{,_bak}

# 开启告警记录

[root@localhost ~]# sed -i '/AlertRecord/s/0/1/' /usr/local/prometheusalert/conf/app.conf

# 未开启加签

[root@localhost ~]# sed -i 's#ddurl=.*#ddurl=https://oapi.dingtalk.com/robot/send?access_token=766775cae4347b1189c7a02f8ea194f5d#' /usr/local/prometheusalert/conf/app.conf

注意:766775cae4347b1189c7a02f8ea194f5d为Token参数,请更换为自己的。

# 开启加签配置

[root@localhost ~]# sed -i '/open-dingding-secret/s/0/1/' /usr/local/prometheusalert/conf/app.conf

[root@localhost ~]# sed -i 's#ddurl=.*#ddurl=https://oapi.dingtalk.com/robot/send?access_token=766775cae4347b1189c7a02f8ea194f5d\&secret=SEC8be94675d6035173f1ce0375b80915#' /usr/local/prometheusalert/conf/app.conf

注意:766775cae4347b1189c7a02f8ea194f5d为Token参数,SEC8be94675d6035173f1ce0375b80915为加签参数,请更换为自己的。

5)配置系统服务

[root@localhost ~]# vim /usr/lib/systemd/system/prometheusalert.service

[Service]
ExecStart=/usr/local/prometheusalert/PrometheusAlert
WorkingDirectory=/usr/local/prometheusalert
Restart=always

[Install]
WantedBy=multi-user.target

[Unit]
Description=Prometheus Alerting Service
After=network.target

6)启动PrometheusAlert

[root@localhost ~]# systemctl daemon-reload

[root@localhost ~]# systemctl start prometheusalert.service

7)查看服务和端口

[root@localhost ~]# netstat -lntup

[root@localhost ~]# systemctl status prometheusalert.service

8)访问PrometheusAlert

# 浏览器输入http://192.168.3.127:8080,如下图所示

四、Alertmanager安装

1、下载Alertmanager

[root@localhost ~]# wget https://github.com/prometheus/alertmanager/releases/download/v0.27.0/alertmanager-0.27.0.linux-amd64.tar.gz

[root@localhost ~]# tar xf alertmanager-0.27.0.linux-amd64.tar.gz

[root@localhost ~]# mv alertmanager-0.27.0.linux-amd64 /usr/local/alertmanager

2、创建启动文件

[root@localhost ~]# 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

3、配置alertmanager.yml文件

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

[root@localhost ~]# cp /usr/local/alertmanager/alertmanager.yml{,_bak}

[root@localhost ~]# vim /usr/local/alertmanager/alertmanager.yml

global:
  resolve_timeout: 5m
# route用来设置报警的分发策略
route:
  # 采用哪个标签来作为分组依据
  group_by: ['instance']
  # 组告警等待时间。也就是告警产生后等待10s,如果有同组告警一起发出
  group_wait: 10s
  # 两组告警的间隔时间
  group_interval: 10s
  # 重复告警的间隔时间,减少相同邮件的发送频率
  repeat_interval: 1h
  # 设置默认接收人
  receiver: 'web.hook.prometheusalert'
  routes: # 可以指定哪些组接手哪些消息
  - receiver: 'web.hook.prometheusalert'
    continue: true
    group_wait: 10s
receivers:
- name: 'web.hook.prometheusalert'
  webhook_configs: 
  - url: 'http://192.168.3.127:8080/prometheusalert?type=dd&tpl=prometheus-dd&ddurl=https://oapi.dingtalk.com/robot/send?access_token=766775cae4347b116f4b0790600e464214c20145d%26secret=SEC8be94675d6035173f1ce0375b80915'
    send_resolved: true

4、配置告警规则

[root@localhost ~]# mkdir -p /usr/local/prometheus/rules

[root@localhost ~]# vim /usr/local/prometheus/rules/node.yml

groups:
- name: Node_Exporter Down
  rules:
  - alert: Node实例已宕机
    expr: up == 0
    for: 10s
    labels:
      user: root
      severity: Warning
    annotations:
      summary: "{{ $labels.job }}"
      address: "{{ $labels.instance }}"
      description: "Node_Exporter客户端在10秒内连接失败."

5、配置prometheus.yml中指定node.yml的路径

[root@localhost ~]# vim /usr/local/prometheus/prometheus.yml

global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets: ['localhost:9093']
      # - localhost:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - 'rules/*.yml'
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'node_exporter'
    static_configs:
    - targets: ['192.168.3.127:9100']

6、重启Prometheus服务

[root@localhost ~]# systemctl restart prometheus

7、启动Alertmanager

[root@localhost ~]# systemctl daemon-reload

[root@localhost ~]# systemctl start alertmanager

8、验证效果

# 此时访问Prometheus管理界面可以看到如下信息:

9、停止node_exporter服务,然后再看效果。

[root@localhost ~]# systemctl stop node_exporter

Prometheus界面的alert可以看到告警状态。

绿色表示正常。

红色状态为PENDING表示alerts还没有发送至Alertmanager,因为rules里面配置了for: 10s。

10秒后状态由PENDING变为FIRING,此时Prometheus才将告警发给alertmanager,在Alertmanager中可以看到有一个alert。

10、钉钉会收到告警通知

11、查看告警记录

12、再次启动node_exporter

[root@localhost ~]# systemctl start node_exporter

# 钉钉会收到恢复信息

# 查看告警记录

Linux安装PrometheusAlert实现钉钉告警

若文章图片、下载链接等信息出错,请在评论区留言反馈,博主将第一时间更新!如本文“对您有用”,欢迎随意打赏,谢谢!

继续阅读
Wechat
微信扫一扫,加我!
weinxin
微信号已复制
微信公众号
微信扫一扫,关注我!
weinxin
公众号已复制
小柒博客
  • 本文由 小柒博客 发表于 2024年12月2日 16:50:28
  • 声明:本站所有文章,如无特殊说明或标注,本站文章均为原创。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。转载请务必保留本文链接:https://www.yangxingzhen.com/10428.html
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

拖动滑块以完成验证