prometheus告警发送组件部署

一、前言

要实现Prometheus的告警发送需要通过alertmanager组件,当prometheus触发告警策略时,会将告警信息发送给alertmanager,然后alertmanager根据配置的策略发送到邮件或者钉钉中,发送到钉钉需要安装额外的prometheus-webhook-dingtalk组件,用于发送告警信息到钉钉中,如果是用邮件的话直接在alertmanager配置即可,不用安装额外组件

二、部署

这里就主要讲解发送告警信息到钉钉中的配置

2.1部署alertmanager

下载altermanager安装包,我这边下载的是0.25.0版本

下载路径:Releases · prometheus/alertmanager · GitHub

 mkdir /opt/alertmanager && cd /opt/alertmanager

tar -zxvf alertmanager-0.25.0.linux-amd64.tar.gz

mv alertmanager-0.25.0.linux-amd64 alertmanager

cd alertmanager && ls

配置系统管理启动alertmanager服务

vi /usr/lib/systemd/system/alertmanager.serivce

[Unit]
Description=alertmanager
After=network.target[Service]
ExecStart=/opt/alertmanager/alertmanager/alertmanager --config.file=/opt/alertmanager/alertmanager/alertmanager.yml  #配置启动服务命令,指定配置文件
User=root[Install]
WantedBy=multi-user.target

2.2部署prometheus-webhook-dingtalk

在部署前先配置好钉钉机器人,启用加签功能,复制webhook地址和加签密钥

下载prometheus-webhook-dingtalk安装包,我这边下载的是2.1.0版本

 下载路径:Releases · timonwong/prometheus-webhook-dingtalk · GitHub

mkdir /opt/dingtalk && cd /opt/dingtalk

tar -zxvf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz

mv prometheus-webhook-dingtalk-2.1.0.linux-amd64 dingtalk

cd dingtalk && ls

复制重命名配置文件

cp  config.example.yml config.yml

编辑配置文件

vi config.yml

templates:- /opt/dingtalk/dingtalk/template.tmpl     #配置告警信息模板targets:webhook1:url: https://oapi.dingtalk.com/robot/send?access_token=cfe1e0d1cfb457a31b20d6005785f5c7367542d5bd82725eb1b2f6738d0be418   #配置上面记录的钉钉机器人的webhook# secret for signaturesecret: SEC60b0e5076407b1d1d97c26afa2acb54edf7270b9e23826a65c3f085e48c5dcfd  #配置上面记录的钉钉机器人加签的密钥,下面的内容按照默认配置即可webhook2:url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxwebhook_legacy:url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx# Customize template contentmessage:# Use legacy templatetitle: '{{ template "legacy.title" . }}'text: '{{ template "legacy.content" . }}'webhook_mention_all:url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxmention:all: truewebhook_mention_users:url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxmention:mobiles: ['156xxxx8827', '189xxxx8325']

编辑告警模板

vi  /opt/dingtalk/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" . }}

 配置系统管理启动prometheus-webhook-dingtalk服务

vi /usr/lib/systemd/system/dingtalk.service

[Unit]
Description=prometheus-webhook-dingtalk
After=network.target[Service]
ExecStart=/opt/dingtalk/dingtalk/prometheus-webhook-dingtalk --config.file=/opt/dingtalk/dingtalk/config.yml
User=root[Install]
WantedBy=multi-user.target

配置开机启动dingtalk服务

systemctl enable dingtalk && systemctl start dingtalk

查看钉钉服务端口

 netstat -tlpn

前面还没有配置和启动alertmanager服务,现在来编辑alertmanager配置文件

vi /opt/alertmanager/alertmanager/alertmanager.yml

route:group_by: ['dingding']   #配置告警分组的标签group_wait: 30s          #配置项定义分组等待时间,当一组告警被触发后,在这个时间段内,其他属于同一组的告警也会被等待。这可以用于在一定时间内收集同一组告警,以便一次性发送通知group_interval: 5m       #配置项定义分组间隔时间,一旦一个告警组的首个告警触发了通知,等待指定的间隔时间后,即使组内有其他告警,也会重新触发通知。这可以避免过于频繁地发送通知repeat_interval: 1h       #配置项定义重复通知的间隔时间,在一组告警已经触发过一次通知后,过了指定的间隔时间,如果该组内的告警仍然处于触发状态,会再次触发通知。这可以用于周期性地提醒用户receiver: 'web.hook'   #配置默认的接收者名称,用于定义接收告警通知的目标routes:- receiver: 'web.hook'  #定义一个路由规则,将告警发送到名为 'web.hook' 的接收者match_re:              #使用正则表达式来匹配告警标签,该配置是匹配所有告警alertname: ".*"
receivers:- name: 'web.hook'   #定义名为 'web.hook' 的接收者webhook_configs:    #指定接收者的配置- url: 'http://10.1.60.118:8060/dingtalk/webhook1/send'  #指定启用的钉钉组件服务为接收者,webhook1也是刚刚dingtalk配置文件的指定项send_resolved: true     #表示也会发送已解决的告警通知
inhibit_rules:     #- source_match: 和 - target_match: 定义了一条抑制规则,这条规则表示当源告警的标签中 severity 是 'critical' 时,会抑制目标告警中 severity 是 'warning' 的告警- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']  #指定了需要相等的标签列表,只有这些标签相同的告警才会进行抑制

alertmanager服务开机启动

systemctl enable alertmanager && systemctl start alertmanager

查看altermanager服务

netstat -tlpn

9094是alertmanager集群服务的通信端口,9093是alertmanager的服务端口

 访问alertmanager服务

http://10.1.60.118:9093

 在Prometheus的配置文件中配置alertmanager服务地址并配置告警规则就可以使用alertmanager服务实现钉钉告警了

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

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

相关文章

模拟实现消息队列(以 RabbitMQ 为蓝本)

目录 1. 需求分析1.1 介绍一些核心概念核心概念1核心概念2 1.2 消息队列服务器(Broker Server)要提供的核心 API1.3 交换机类型1.3.1 类型介绍1.3.2 转发规则: 1.4 持久化1.5 关于网络通信1.5.1 客户端与服务器提供的对应方法1.5.2 客户端额外…

一站式FlinkSpark平台解决方案——StreamX

随着Flink&Spark生态的不断完善,越来越多的企业选择这两款组件,或者其中之一作为离线&实时的大数据开发工具,但是在使用他们进行大数据的开发中我们会遇到一些问题,比如: 任务运行监控怎么处理?使…

【LangChain概念】了解语言链️:第2部分

一、说明 在LangChain的帮助下创建LLM应用程序可以帮助我们轻松地链接所有内容。LangChain 是一个创新的框架,它正在彻底改变我们开发由语言模型驱动的应用程序的方式。通过结合先进的原则,LangChain正在重新定义通过传统API可以实现的极限。 在上一篇博…

一文读懂!一年耗能堪比2个三峡电站的大数据中心,背后竟隐藏着这些秘密......

全国大数据中心1年的能耗规模相当于2个三峡电站一整年的发电量,这是为什么? 大数据中心每耗费1度电,只有一半用在了“计算”上面,其他的都应用在散热、照明等方面到底是怎么回事? 为什么说在算力上每投入1元&#xff0…

【二】数据库系统

数据库系统的分层抽象DBMS 数据的三个层次从 数据 到 数据的结构----模式数据库系统的三级模式(三级视图)数据库系统的两层映像数据库系统的两个独立性数据库系统的标准结构 数据模型从 模式 到 模式的结构----数据模型三大经典数据模型 数据库的演变与发…

【系统软件03】centos7安装和使用node-v18.16.0(centos7升级glibc 2.28)

【系统软件03】centos7安装和使用node-v18.16.0(centos7升级glibc 2.28) 前言:本文是解决node 18.16.0的依赖问题,具体的node安装流程,可以参考我的另外一篇文章。一、下载node v18.16.0二、下载glibc2.28(…

uniapp使用阿里矢量库

然后解压复制全部到你的项目文件 最后只要这几个 然后引入 最后在你需要的页面使用

LeetCode 2813. Maximum Elegance of a K-Length Subsequence【反悔贪心】2582

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

JavaWeb中Json传参的条件

JavaWeb中我们常用json进行参数传递 对应的注释为RequestBody 但是json传参是有条件的 最主要是你指定的实体类和对应的json参数能否匹配 1.属性和对应的json参数名称对应 2.对应实体类实现了Serializable接口,可以进行序列化和反序列化,这个才是实体类转…

黑马项目一阶段面试58题 Web14题(二)

八、内连接和外连接查询有什么区别 内连接 获取两表的交集部分 外连接 获取某表的所有数据,以及两表的交集数据 九、事务管理的作用,四大特性 作用 保证多个增删改的操作,要么同时成功,要么同时失败 四大特性 1.原子性 事…

Ajax同源策略及跨域问题

Ajax同源策略及跨域问题 同源策略ajax跨域问题什么是跨域?为什么不允许跨域?跨域解决方案1、CORS2、express自带的中间件cors3、JSONP原生JSONPjQuery发送JSONP 4、使用vscode的Live Server插件 同源策略 同源策略(Same-Origin Policy&#…

Kotlin入门:程序的逻辑控制——03

一、程序的逻辑控制 程序的执行语句主要分为3种:顺序语句、条件语句和循环语句。 二、if条件语句 if表达式在Kotlin中用于根据条件执行不同的代码块。它有两种形式:普通if和带返回值的if。 普通if语句: 普通的if语句由关键字if、一个布尔表达…

电脑合上盖子无线网络不会断开

控制面板\硬件和声音\电源选项\系统设置 最终选择不会采取任何操作 选择不会采取任何操作

前端性能优化之性能优化的指标和工具(chrome devtools、lighthouse、webpagetest)

文章目录 引言一、为什么要进行web性能优化二、RAIL测量模型1. 什么是RAIL2. 性能测量工具 三、性能测量工具的使用和性能指标以及优化目标1. Chrome DevTools1. 打开调试工具方式和配置2. network下的几个性能指标1. requests 请求总数2. transferred实际从服务器下载的数据量…

【数据结构与算法】十大经典排序算法-希尔排序

🌟个人博客:www.hellocode.top 🏰Java知识导航:Java-Navigate 🔥CSDN:HelloCode. 🌞知乎:HelloCode 🌴掘金:HelloCode ⚡如有问题,欢迎指正&#…

手撕数据结构之栈+例题

目录 一、栈的概念及结构 二、栈的头文件及基本框架 三、接口实现 1、对栈的初始化 2、栈的销毁 3、入栈操作 4、出栈操作 5、判断栈是否为空 6、返回栈顶元素 7、遍历栈 四、有效的括号 - 力扣(LeetCode) 题目描述: 思路&#xff…

静态网页和动态网页区别

1,静态网页和动态网页有何区别 1) 更新和维护 静态网页内容一经发布到网站服务器上,无论是否有用户访问,这些网页内容都是保存在网站服务器上的。如果要修改网页的内容,就必须修改其源文件,然后重新上传到服务器上。…

k8s-----集群调度

目录 一:调度约束 二:Pod 启动创建过程 三:k8s调度过程 1、Predicate 有一系列的常见的算法 2、常见优先级选项 3、指定调度节点 (1)nodeName指定 (2)nodeSelector指定 四:亲和…

【SA8295P 源码分析】68 - Android 侧用户层 输入子系统获取 /dev/input/event0 节点数据 代码流程分析

【SA8295P 源码分析】68 - Android 侧用户层 输入子系统获取 /dev/input/event0 节点数据 代码流程分析 一、EventHub.cpp 监听 /dev/input/event0 节点流程二、EventHub.cpp 读取 /dev/input/event0 节点数据流程系列文章汇总见:《【SA8295P 源码分析】00 - 系列文章链接汇总…

C++——继承

文章目录 🦜1. 什么是继承🐊1.1 概念🐊1.2 格式🐊1.3 继承方式 & 访问限定符 🐦2. 派生类和基类的赋值问题🦩3. 派生类和基类同名成员问题🐓4.派生类默认成员函数🐉4.1 构造函数…