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

这篇具有很好参考价值的文章主要介绍了Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前提准备及规划

1、服务端口规划:

服务 端口
Prometheus 59090
Node_exporter 59100
Alertanager 9093
Webhook-dingtalk 8060

2、本次实验架构调用图如下:
Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警,# 4-Prometheus监控系统,prometheus,钉钉,linux

3、钉钉创建机器人保存Webhook地址:
Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警,# 4-Prometheus监控系统,prometheus,钉钉,linux

Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警,# 4-Prometheus监控系统,prometheus,钉钉,linux

Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警,# 4-Prometheus监控系统,prometheus,钉钉,linux

Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警,# 4-Prometheus监控系统,prometheus,钉钉,linux
总共需要保存两项,我们后续会用到:
1、加签后的秘钥
2、webhook地址

二、安装及启动

安装配置只涉及到安装及正常启动无误,并不涉及配置内容!
创建 /usr/local/prometheus 目录,设计到所有安装的服务,咱们都放到此目录中。

mkdir /usr/local/prometheus

配置时间同步 && 定时同步

yum -y install ntpdate
ntpdate ntp1.aliyun.com

echo "0 1 * * * ntpdate ntp1.aliyun.com" >> /var/spool/cron/root
crontab -l

2.1 Prometheus安装启动

1、安装Prometheus

官方下载地址:

wget https://github.com/prometheus/prometheus/releases/download/v2.42.0/prometheus-2.42.0.linux-amd64.tar.gz

tar zxf prometheus-2.42.0.linux-amd64.tar.gz 
mv prometheus-2.42.0.linux-amd64 /usr/local/prometheus/prometheus

2、配置Prometheus使用systemd管理

vim /usr/lib/systemd/system/prometheus.service

[Unit]
Description=Prometheus-Server
Documentation=https://prometheus.io/
After=network.target

[Service]
ExecStart=/usr/local/prometheus/prometheus/prometheus --web.listen-address=0.0.0.0:59090  --config.file=/usr/local/prometheus/prometheus/prometheus.yml 
User=root

[Install]
WantedBy=multi-user.target

3、启动 && 开机自启

systemctl enable prometheus --now
systemctl status prometheus

4、验证
浏览器访问 http://IP:59090,显示下图表示无误~
Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警,# 4-Prometheus监控系统,prometheus,钉钉,linux

2.2 Node_export安装启动

1、安装node_export

官方下载地址:

wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz

tar zxf node_exporter-1.5.0.linux-amd64.tar.gz
mv node_exporter-1.5.0.linux-amd64 /usr/local/prometheus/node_exporter

2、配置node_exporter使用systemd管理

vim /usr/lib/systemd/system/node_exporter.service

[Unit]
Description=Prometheus-Server
After=network.target

[Service]
ExecStart=/usr/local/prometheus/node_exporter/node_exporter --web.listen-address=0.0.0.0:59100
User=root

[Install]
WantedBy=multi-user.target

3、启动 && 开机自启

systemctl enable node_exporter --now
systemctl status node_exporter

4、验证 浏览器查看 收集数据信息
浏览器访问 http://IP:59100/metrics,显示下图表示无误~
Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警,# 4-Prometheus监控系统,prometheus,钉钉,linux

2.3 Alertmanager安装启动

1、安装Altermanager

官方下载地址:

wget https://github.com/prometheus/alertmanager/releases/download/v0.25.0-rc.2/alertmanager-0.25.0-rc.2.linux-amd64.tar.gz

tar zxf alertmanager-0.25.0-rc.2.linux-amd64.tar.gz 
mv alertmanager-0.25.0-rc.2.linux-amd64 /usr/local/prometheus/alertmanager

2、配置Alertmanager使用systemd管理

vim /usr/lib/systemd/system/alertmanager.service

[Unit]
Description=Prometheus-Server
After=network.target

[Service]
ExecStart=/usr/local/prometheus/alertmanager/alertmanager --cluster.advertise-address=0.0.0.0:59093 --config.file=/usr/local/prometheus/alertmanager/alertmanager.yml
User=root

[Install]
WantedBy=multi-user.target

3、启动 && 开机自启

systemctl enable alertmanager --now
systemctl status alertmanager

4、验证 浏览器访问alertmanager管理页面
浏览器访问 http://IP:9093,显示下图表示无误~
Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警,# 4-Prometheus监控系统,prometheus,钉钉,linux

2.4 Webhook-dingtalk安装启动

1、安装webhook-dingtalk插件
下载地址:

wget https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v2.1.0/prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz

tar zxf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz 
mv prometheus-webhook-dingtalk-2.1.0.linux-amd64 /usr/local/prometheus/webhook-dingtalk

2、配置webhook-dingtalk使用systemd管理

cp /usr/local/prometheus/webhook-dingtalk/config.example.yml /usr/local/prometheus/webhook-dingtalk/config.yml
vim /usr/lib/systemd/system/webhook.service

[Unit]
Description=Prometheus-Server
After=network.target

[Service]
ExecStart=/usr/local/prometheus/webhook-dingtalk/prometheus-webhook-dingtalk --config.file=/usr/local/prometheus/webhook-dingtalk/config.yml
User=root

[Install]
WantedBy=multi-user.target

3、启动 && 开机自启

systemctl enable webhook.service --now
systemctl status webhook.service 

4、验证,查看端口是否启动

netstat -anput |grep 8060

三、配置及测试

3.1 Webhook-dingtalk配置钉钉webhook地址

1、 Webhook-dingtalk配置相对比较简单,只改以下三处即可,如下图:
加签秘钥、webhook地址是咱们在钉钉创建机器人时获取的!

vim /usr/local/prometheus/webhook-dingtalk/config.yml

Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警,# 4-Prometheus监控系统,prometheus,钉钉,linux
2、添加钉钉报警模板

vim /usr/local/prometheus/webhook-dingtalk/template.tmpl

{{ define "__subject" }}
[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}]
{{ end }}
 
 
{{ define "__alert_list" }}{{ range . }}
---
{{ if .Labels.owner }}@{{ .Labels.owner }}{{ end }}
 
**告警主题**: {{ .Annotations.summary }}

**告警类型**: {{ .Labels.alertname }}
 
**告警级别**: {{ .Labels.severity }} 
 
**告警主机**: {{ .Labels.instance }} 
 
**告警信息**: {{ index .Annotations "description" }}
 
**告警时间**: {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}
{{ end }}{{ end }}
 
{{ define "__resolved_list" }}{{ range . }}
---
{{ if .Labels.owner }}@{{ .Labels.owner }}{{ end }}

**告警主题**: {{ .Annotations.summary }}

**告警类型**: {{ .Labels.alertname }} 
 
**告警级别**: {{ .Labels.severity }}
 
**告警主机**: {{ .Labels.instance }}
 
**告警信息**: {{ index .Annotations "description" }}
 
**告警时间**: {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}
 
**恢复时间**: {{ dateInZone "2006.01.02 15:04:05" (.EndsAt) "Asia/Shanghai" }}
{{ end }}{{ end }}
 
 
{{ define "default.title" }}
{{ template "__subject" . }}
{{ end }}
 
{{ define "default.content" }}
{{ if gt (len .Alerts.Firing) 0 }}
**====侦测到{{ .Alerts.Firing | len  }}个故障====**
{{ template "__alert_list" .Alerts.Firing }}
---
{{ end }}
 
{{ if gt (len .Alerts.Resolved) 0 }}
**====恢复{{ .Alerts.Resolved | len  }}个故障====**
{{ template "__resolved_list" .Alerts.Resolved }}
{{ end }}
{{ end }}
 
 
{{ define "ding.link.title" }}{{ template "default.title" . }}{{ end }}
{{ define "ding.link.content" }}{{ template "default.content" . }}{{ end }}
{{ template "default.title" . }}
{{ template "default.content" . }}

3、重启

systemctl restart webhook
systemctl status webhook

3.2 Alertmanager配置钉钉告警

1、修改配置

vim /usr/local/prometheus/alertmanager/alertmanager.yml

route:
  group_by: ['dingding']
  group_wait: 30s
  group_interval: 1h
  repeat_interval: 1h
  receiver: 'dingding.webhook1'
  routes:
  - receiver: 'dingding.webhook1'
    match_re:
      alertname: ".*"
receivers:
  - name: 'dingding.webhook1'
    webhook_configs:
    - url: 'http://16.32.15.200:8060/dingtalk/webhook1/send'
      send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

重点修改地方我已图片圈出,如下图:
Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警,# 4-Prometheus监控系统,prometheus,钉钉,linux

2、重启

systemctl restart alertmanager
systemctl status alertmanager

3.3 Prometheus集成Alertmanager及告警规则配置

1、修改prometheus配置

vim /usr/local/prometheus/prometheus/prometheus.yml

global:
  scrape_interval: 15s 
  evaluation_interval: 15s 

alerting:
  alertmanagers:
    - static_configs:
        - targets:
           - 16.32.15.200:9093

rule_files:
   - "/usr/local/prometheus/prometheus/rule/node_exporter.yml"

scrape_configs:
  - job_name: "VMware-16.32.15.200"
    static_configs:
      - targets: ["16.32.15.200:59100"]

重点修改地方,我已图片形式标注,如下图:
Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警,# 4-Prometheus监控系统,prometheus,钉钉,linux

2、添加node_exporter告警规则

mkdir /usr/local/prometheus/prometheus/rule
vim /usr/local/prometheus/prometheus/rule/node_exporter.yml

groups:
- name: 服务器资源监控
  rules:
  - alert: 内存使用率过高
    expr: 100 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 > 80
    for: 3m 
    labels:
      severity: 严重告警
    annotations:
      summary: "{{ $labels.instance }} 内存使用率过高, 请尽快处理!"
      description: "{{ $labels.instance }}内存使用率超过80%,当前使用率{{ $value }}%."
          
  - alert: 服务器宕机
    expr: up == 0
    for: 1s
    labels:
      severity: 严重告警
    annotations:
      summary: "{{$labels.instance}} 服务器宕机, 请尽快处理!"
      description: "{{$labels.instance}} 服务器延时超过3分钟,当前状态{{ $value }}. "
 
  - alert: CPU高负荷
    expr: 100 - (avg by (instance,job)(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90
    for: 5m
    labels:
      severity: 严重告警
    annotations:
      summary: "{{$labels.instance}} CPU使用率过高,请尽快处理!"
      description: "{{$labels.instance}} CPU使用大于90%,当前使用率{{ $value }}%. "
      
  - alert: 磁盘IO性能
    expr: avg(irate(node_disk_io_time_seconds_total[1m])) by(instance,job)* 100 > 90
    for: 5m
    labels:
      severity: 严重告警
    annotations:
      summary: "{{$labels.instance}} 流入磁盘IO使用率过高,请尽快处理!"
      description: "{{$labels.instance}} 流入磁盘IO大于90%,当前使用率{{ $value }}%."
 
 
  - alert: 网络流入
    expr: ((sum(rate (node_network_receive_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance,job)) / 100) > 102400
    for: 5m
    labels:
      severity: 严重告警
    annotations:
      summary: "{{$labels.instance}} 流入网络带宽过高,请尽快处理!"
      description: "{{$labels.instance}} 流入网络带宽持续5分钟高于100M. RX带宽使用量{{$value}}."
 
  - alert: 网络流出
    expr: ((sum(rate (node_network_transmit_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance,job)) / 100) > 102400
    for: 5m
    labels:
      severity: 严重告警
    annotations:
      summary: "{{$labels.instance}} 流出网络带宽过高,请尽快处理!"
      description: "{{$labels.instance}} 流出网络带宽持续5分钟高于100M. RX带宽使用量{$value}}."
  
  - alert: TCP连接数
    expr: node_netstat_Tcp_CurrEstab > 10000
    for: 2m
    labels:
      severity: 严重告警
    annotations:
      summary: " TCP_ESTABLISHED过高!"
      description: "{{$labels.instance}} TCP_ESTABLISHED大于100%,当前使用率{{ $value }}%."
 
  - alert: 磁盘容量
    expr: 100-(node_filesystem_free_bytes{fstype=~"ext4|xfs"}/node_filesystem_size_bytes {fstype=~"ext4|xfs"}*100) > 90
    for: 1m
    labels:
      severity: 严重告警
    annotations:
      summary: "{{$labels.mountpoint}} 磁盘分区使用率过高,请尽快处理!"
      description: "{{$labels.instance}} 磁盘分区使用大于90%,当前使用率{{ $value }}%."

3、重启

systemctl restart prometheus
systemctl status prometheus

4、访问Prometheus Web页面可以查看到添加的规则,如下图:
Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警,# 4-Prometheus监控系统,prometheus,钉钉,linux

四、测试告警

1、故意将node_exporter停止掉,模拟服务器宕机

systemctl stop node_exporter

2、Prometheus 管理页面可以看到告警信息如下图:
Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警,# 4-Prometheus监控系统,prometheus,钉钉,linux
3、Prometheus会将告警信息发送给Alertmanager,所以说Alertmanager页面可以看到告警信息如下图:
Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警,# 4-Prometheus监控系统,prometheus,钉钉,linux
4、此时会发送到钉钉机器人告警,如下图所示:
Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警,# 4-Prometheus监控系统,prometheus,钉钉,linux文章来源地址https://www.toymoban.com/news/detail-680676.html

到了这里,关于Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Jenkins DingTalk 钉钉通知插件

    目录 前言 一、相关文档 二、组件版本 三、钉钉配置 四、Jenkins配置 1、安装钉钉插件DingTalk 2、在Jenkins用户管理中填写钉钉手机号 3、在Jenkins中配置钉钉 5、在流水线任务中编写pipeline 写在最后 完整版文档下载方式: 今天要和大家聊聊一个关于Jenkins和钉钉的插件——“Jen

    2024年02月08日
    浏览(45)
  • Python:使用钉钉dingtalk发送通知消息

    通过钉钉的开放API接口,可以很容易的将消息发送到钉钉dingtalk,比起邮件发送更稳定,及时 文档 官网:https://www.dingtalk.com/ API Explorer调试 https://open-dev.dingtalk.com/apiExplorer 文档:https://open.dingtalk.com/document/robots/custom-robot-access 使用场景:发送消息到聊天群 前期准备:需要新建

    2024年02月11日
    浏览(47)
  • Prometheus实现钉钉报警

    1.1 Prometheus环境 启动情况: 1.2 pushgateway环境 启动情况: 1.3 自定义机器人并获取自定义机器人Webhook地址 1、首先创建一个群聊。 进入到钉钉软件的主页面后,点击右上角的加号按钮。 弹出加号里面的选项后,点击上面的发起群聊按钮。 进入到发起群聊界面后选择内部项目群

    2024年02月16日
    浏览(31)
  • 部署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日
    浏览(47)
  • 利用钉钉机器人Webhook向钉钉群推送告警通知

    一、配置钉钉群 1、新建一个接收通知的钉钉群 如下图,创建一个接收通知的钉钉群   选择项目群,点创建   输入群名称,右侧选择群成员,最后点击右下角的创建   2、对群进行设置 点群右上角的设置按钮    点击 “智能群助手”   点 “添加机器人”   点 添加机器人

    2023年04月15日
    浏览(51)
  • 【云原生】Prometheus之部署 Alertmanager 发送告警

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

    2024年02月16日
    浏览(46)
  • [云原生] Prometheus之部署 Alertmanager 发送告警

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

    2024年04月10日
    浏览(46)
  • Prometheus+Grafana+AlertManager监控Linux主机状态

    Docker搭建并配置Prometheus Docker拉取并配置Grafana Docker安装并配置Node-Exporter Docker安装并配置cAdvisor Docker安装并运行Alertmanager 点击Add your first data source 选择Prometheus Prometheus server URL中输入IP地址及端口号 注意:此处IP地址为Prometheus在Docker容器内部的IP地址 查看容器内ID方法: 退出

    2024年02月11日
    浏览(39)
  • 【云原生】prometheus监控告警之安装部署alertmanager实战

    前言 🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉 💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺 💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘 本文中的是prome

    2023年04月27日
    浏览(54)
  • 云原生之深入解析Prometheus AlertManager的实战操作

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

    2024年02月16日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包