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

文章目录

    • 一、前提准备及规划
    • 二、安装及启动
      • 2.1 Prometheus安装启动
      • 2.2 Node_export安装启动
      • 2.3 Alertmanager安装启动
      • 2.4 Webhook-dingtalk安装启动
    • 三、配置及测试
      • 3.1 Webhook-dingtalk配置钉钉webhook地址
      • 3.2 Alertmanager配置钉钉告警
      • 3.3 Prometheus集成Alertmanager及告警规则配置
    • 四、测试告警

一、前提准备及规划

1、服务端口规划:

服务端口
Prometheus59090
Node_exporter59100
Alertanager9093
Webhook-dingtalk8060

2、本次实验架构调用图如下:
在这里插入图片描述

3、钉钉创建机器人保存Webhook地址:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
总共需要保存两项,我们后续会用到:
1、加签后的秘钥
2、webhook地址

二、安装及启动

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

mkdir /usr/local/prometheus

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

yum -y install ntpdate
ntpdate ntp1.aliyun.comecho "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.gztar 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,显示下图表示无误~
在这里插入图片描述

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.gztar 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,显示下图表示无误~
在这里插入图片描述

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.gztar 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,显示下图表示无误~
在这里插入图片描述

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

在这里插入图片描述
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.ymlroute:group_by: ['dingding']group_wait: 30sgroup_interval: 1hrepeat_interval: 1hreceiver: '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']

重点修改地方我已图片圈出,如下图:
在这里插入图片描述

2、重启

systemctl restart alertmanager
systemctl status alertmanager

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

1、修改prometheus配置

vim /usr/local/prometheus/prometheus/prometheus.ymlglobal:scrape_interval: 15s evaluation_interval: 15s alerting:alertmanagers:- static_configs:- targets:- 16.32.15.200:9093rule_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"]

重点修改地方,我已图片形式标注,如下图:
在这里插入图片描述

2、添加node_exporter告警规则

mkdir /usr/local/prometheus/prometheus/rule
vim /usr/local/prometheus/prometheus/rule/node_exporter.ymlgroups:
- name: 服务器资源监控rules:- alert: 内存使用率过高expr: 100 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 > 80for: 3m labels:severity: 严重告警annotations:summary: "{{ $labels.instance }} 内存使用率过高, 请尽快处理!"description: "{{ $labels.instance }}内存使用率超过80%,当前使用率{{ $value }}%."- alert: 服务器宕机expr: up == 0for: 1slabels: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) > 90for: 5mlabels: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 > 90for: 5mlabels: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) > 102400for: 5mlabels: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) > 102400for: 5mlabels:severity: 严重告警annotations:summary: "{{$labels.instance}} 流出网络带宽过高,请尽快处理!"description: "{{$labels.instance}} 流出网络带宽持续5分钟高于100M. RX带宽使用量{$value}}."- alert: TCP连接数expr: node_netstat_Tcp_CurrEstab > 10000for: 2mlabels: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) > 90for: 1mlabels:severity: 严重告警annotations:summary: "{{$labels.mountpoint}} 磁盘分区使用率过高,请尽快处理!"description: "{{$labels.instance}} 磁盘分区使用大于90%,当前使用率{{ $value }}%."

3、重启

systemctl restart prometheus
systemctl status prometheus

4、访问Prometheus Web页面可以查看到添加的规则,如下图:
在这里插入图片描述

四、测试告警

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

systemctl stop node_exporter

2、Prometheus 管理页面可以看到告警信息如下图:
在这里插入图片描述
3、Prometheus会将告警信息发送给Alertmanager,所以说Alertmanager页面可以看到告警信息如下图:
在这里插入图片描述
4、此时会发送到钉钉机器人告警,如下图所示:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/19851.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

和chatgpt学架构02-环境搭建

目录 1 安装vs code2 vs code功能介绍3 安装nodejs4 安装vue5 在vs code打开工程总结 我们在上一篇 技术选型 里咨询了chatgpt前后端的框架选择和数据库的选择。有了框架之后就需要选择合适的开发工具了,继续咨询一下chatgpt 我现在选型,前端使用vue&am…

〖编程初学者的自我修养 - 职业规划篇①〗- 大学生选择职业前的自我认知与剖析

历时18个月,采访 850 得到的需求。 不管你是在校大学生、研究生、还是在职的小伙伴,该专栏有你想要的职业规划、简历、面试的答案。说明:该文属于 编程初学者的自我修养 专栏,购买任意白宝书体系化专栏可加入易编程社区&#xff0…

谷歌Bard被曝剽窃ChatGPT?BERT一作跳槽OpenAI,揭惊天内幕

【导读】谷歌有大麻烦了!外媒爆料说,Bard的训练数据部分来自ChatGPT。谷歌可能跳到黄河里也洗不清了。 3月29日,外媒The Information曝出了一个惊天大瓜! 谷歌的离职员工、已跳槽OpenAI的顶级研究员竟然曝出——Bard竟是用ChatG…

人工智能AIGC最新综述:从 GAN 到 ChatGPT 的AI生成历史

一句话总结 本综述全面回顾了生成模型的历史、基本模型组件、AIGC从单模态交互和多模态交互的最新进展,以及模态之间的交叉应用,最后讨论了AIGC中存在的开放问题和未来挑战。 摘要 最近,ChatGPT 与 DALL-E-2 和 Codex 一起受到了社会的广泛关…

ChatGPT is not all you need,一文综述6大公司9类生成式AI模型

关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 计算机视觉研究院专栏 作者:Edison_G 生成模型领域里,ChatGPT 并不是一切。 转自《机器之心》 过去两年,AI 领域里…

chatgpt赋能python:Python最简单的小游戏:猜数

Python 最简单的小游戏:猜数 作为一门高效、简单而且易于学习的编程语言,Python 受到了越来越多的开发者的喜爱。其中,编写小游戏是Python语言学习中一个很有趣的领域,因为它可以帮助你通过实践加深对Python语法和概念的理解。在…

chatgpt赋能Python-python3小游戏

Python3小游戏:为你的休闲时光增添乐趣 如果你正处于寻找一款简单好玩的小游戏,那么Python3小游戏将是你的不二之选。作为一名有10年Python编程经验的工程师,我可以说Python3小游戏是一款非常有趣、挑战性适中、易于上手的游戏。接下来&…

Github推荐--PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了)

逛Github的时候会遇到一些很好玩的项目 今天分享一个可以在PC端实现QQ防撤回功能的项目。(安卓手机有Xposed框架) 首先是项目地址: 我已经看到了,撤回也没用了 使用方法: 下载后解压,会出现RevokeMsgPatche…

微信防撤回功能修改

今天无意之中看到了一个帖子,谈到了有关微信消息撤回的。突发奇想实现一下,以后就不怕错过朋友的消息了。 首先介绍一下基本思路,由于微信采用的是CS端原理,所有的数据请求均通过服务器,客户端只是响应指令而已。 A向…

Git 如何撤回已经push到远端上的代码

首先 git log,目的是找到这次想要撤回的提交的上一次提交,并记录下红框中的commit id 回退代码,输入 git reset --soft commit id 回退代码, 回退完成后代码相当于刚写完的状态,即还没有进行add、commit、push…

微信多开防撤回工具再也不用担心好友撤回消息和登录多个账号了

微信,大家工作中生活中用的最多的一款应用;很多公司喜欢用微信来作为工作沟通的工具,官方原版只支持登陆一个微信,这对于需要在电脑上登陆多个微信账号的朋友来说肯定是极其的不方便。另外有的时候别人撤回了一些重要消息&#xf…

Python神级操作,还原已撤回的微信消息

项目环境 语言:Python3 编辑器:Pycharm 导包效果展示 以下截图显示的撤回消息类型依次是文字消息、微信自带表情、图片、语音、定位地图、名片、公众号文章、音乐、视频。有群里撤回的,也有个人号撤回的。 图文来源:http://kk…

利用Python查看微信好友撤回的消息

效果图如下: 不仅可以查看微信好友撤回的文字消息,如位置、视频、音频、图片等等都可以查看。 直接上源代码: # Python查看微信撤回消息 import re import os import time import itchat import platform from itchat.content import TEXT …

用Python实现微信撤回消息还原

在使用微信过程中,有时候我们会撤回一些发错或者不该发的一些信息,今天我就用一段代码实现将撤回的消息还原。。。 从此再也不怕别人撤回消息,自己不能看的尴尬了 import osimport reimport shutilimport timeimport itchatfrom itchat.con…

python学习 -对象把微信消息撤回后好慌,有了这个你就能看到撤回的消息了(超详解)

目录​​​​​​​ 一.简介 普通人 python技术人员 1、准备环境 2、itchat介绍 3、itchat使用 4、pycharm解释器写入代码 一.简介 当我们与朋友,亲人,爱人聊天的时候,我估计每个人都经理过,那就是微信撤回功能中所提到的…

微信能自定义“撤回消息”? QQ 笑了!

大家有没有遇到过和小伙伴聊天,结果输入法突然崛起,等到你撤回的时候尴尬到不行的窘境? 没办法,只好撤回...(咳咳,只能说我的输入法已经妖魔化了 但是小伙伴的?号已经紧随其后,要是…

Telegram防撤回工具(Windows)

使用方法 Telegram v2.8.5 及之后版本 使用最新版本补丁将 TAR-Resources文件夹 、TAR-Launcher-x64.exe 、TAR-Launcher-x86.exe 全部解压到Telegram根目录 通过 TAR-Launcher-x64.exe 或 TAR-Launcher-x86.exe(取决于你安装的Telegram版本,如果不知道…

用python实现监听微信撤回消息

import itchat from itchat.content import * import os import time import xml.dom.minidom temp d:/itchat / 撤回的消息 if not os.path.exists(temp):os.mkdir(temp)itchat.auto_login(True) dict {} itchat.msg_register([TEXT, PICTURE, FRIENDS, CARD, MAP, …

Git回退已经提交commit的(还未推送push的)代码及撤回代码回退

1.Git回退已经提交的代码 原文链接(原文写的是已经推送push的代码) http://t.csdn.cn/CDjgq 已经开始难过了,我提交后没有推送就按照上文提示进行了代码回退,结果idea里面没得我最后一次提交的代码。。。然后我开始了第二轮操作…

用Python找回微信撤回信息,(来自程序员的小骄傲)就算你撤回我也看的到~

微信(WeChat) 是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序,由张小龙所带领的腾讯广州研发中心产品团队打造 。在互联网飞速发展的下、民众的需求下,微信已经更新到2.6.2.31版本,全民…