pinpoint实现告警推送至钉钉和微信群
前言
在前面的文章中,我们学习了如何通过java实现将消息发送到钉钉、和将消息发送到微信群聊。
基于上述基础,我们今天来接入pinpoint的告警,发送到钉钉群。
实操前准备
开始之前,推荐阅读一下,官方的告警说明文档。
阅读官方文档后,我们实际的来操作一遍。
按照官方说明,首先需要创建对应的用户组和用户,但是我们这里打开有异常:

通过后台,pinpoint-web的日志可以发现,这是由于没有配置mysql表的原因。

步骤1-配置mysql表
首先,我们创建一个名为pinpoint的数据库。

然后,导入官方的脚本,配置好需要的表。

导入的所有表显示如下:

导入15张数据表后,我们需要修改pinpoint-web的jdbc.properties配置文件。
配置好正确的数据库和账号密码后,重启pinpoint-web。
步骤2-界面配置用户组和用户
首先配置一个用户组,然后在这个组下面新建一个用户。
用户这里输入id、用户名、手机号、邮箱等信息添加即可。

步骤3-添加应用的告警规则
配置完用户后,接着我们配置对应应用的告警规则

这里我针对testboot这个服务,配置了一个慢 请求告警,当慢请求大于5个时,就会触发。
这里的type选项指定告警的方式,可以是短信、邮件,或者两者。

然后包含具体的告警指标,这里我单纯选择的是Slow count,慢请求个数。

具体每个指标的含义,考虑后续再出一篇文章来作详细解释。
这篇主要以实现告警功能为目的,就不再深入了。
至此,告警规则就配置好了。
步骤4-改造源码思路分析
冷静分析
pinpoint 采用Spring Batch框架来运行job,其中
一个Job有多个Step,每个step又包含一系列规定动作(read,process,write)。
界面上所有的可配置指标都是通过Checker计算出来的,我们的Slow Count的也不例外。

AlarmMessageSender是我们需要关注的告警接口,它有一个空的实现类,EmptyMessageSender。
本来打算直接在这个类里面写代码的,但转念一想,还是算了,因为他没有被spring管理,是直接new出来的,我们后面可能需要依赖spring的一些bean,避免用着不方便,所以还是自己写一个类来实现把。

默认情况下,我们都只是使用不带任何参数的@Autowired。
设置required参数为false,表示忽略当前要注入的bean,如果有直接注入,没有跳过,不会报错。
步骤5-进行源码改造
新建一个类,实现告警接口,源码我上传到了github,需要的小伙伴,公众号回复钉钉,即可获取。

写完代码后,我们上传编译后的class文件到WEB-INF/classes/com/navercorp/pinpoint/web/alarm目录下:

由于我使用了一个内部类,所以一共有两个class文件。
改一下文件权限
chmod 777 ./DingTalkAndWechatMessageSender.class
chmod 777 ./DingTalkAndWechatMessageSender$DingResponse.class
在/WEB-INF/classes/pinpoint-web.properties配置中新增
web.ding.talk.url属性配置,这个属性就是钉钉的webhok地址。
当然你也可以写具体的微服务地址,来进行更多的逻辑处理,这里为了让大家开箱即用,我将消息直接推送给钉钉。
有了推送的url后,我们在applicationContext-web.xml中添加一个bean配置。
<bean id="dingTalkAndWechatMessageSender" class="com.navercorp.pinpoint.web.alarm.DingTalkAndWechatMessageSender" >
<property name="dingTalkUrl" value="#{pinpointWebProps['web.ding.talk.url'] ?: ''}"/>
</bean>
步骤6-测试验证
查看是否赋值成功:

调用业务接口,我伪造了一个慢请求接口

验证日志:

验证钉钉消息:

总结
如上,就是将pinpoint告警接入钉钉群的全部过程,若有任何疑问,欢迎来交流讨论。
通过这篇文章,来复测以下,是否掌握了以下知识呢:
1、如何发送消息接入钉钉群聊。
2、如何编译class增量发布。(虽然并不是很推荐这种方式,但是为了提高效率所以这样用了)
3、如何实现pinpoint的告警接口。
4、pinpoint告警类读取配置文件方式。
推送告警到微信群,就不再文章讲述了,有需求的小伙伴可以自行研究实现。希望大家多多总结,提高自己。
欢迎来公众号【侠梦的开发笔记】,回复干货,领取精选学习视频一份
pinpoint实现告警推送至钉钉和微信群的更多相关文章
- zabbix告警推送至个人微信
文章原文 自从接触zabbix后,就一直想着怎么才能把告警推送到个人微信上.有这样的想法主要是个人微信的使用频率远远要比钉钉,企业微信,邮箱,飞书等使用频率要高.比如我,就遇到过在周末的时候,因为没有 ...
- Prometheus+Grafana+Alertmanager实现告警推送教程 ----- 图文详解
前言 本文主要介绍的是Prometheus采集数据,通过Grafana加上PromQL语句实现数据可视化以及通过Alertmanage实现告警推送功能.温馨提示,本篇文章特长,2w多的文字加上几十张图 ...
- prometheus-alertmanager告警推送到钉钉
1. Prometheus告警简介 告警能力在Prometheus的架构中被划分成两个独立的部分.如下所示,通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性 ...
- SVN提交后自动推送消息到钉钉群
钉钉设置机器人配置 1.进入配置机器人入口 2.添加机器人 3.测试WebHook请求 本人使用Postman进行测试 4.配置SVN 4.1 配置 Pre-commit hook 设置提交内容必须包 ...
- [钉钉通知系列]SVN提交后自动推送消息到钉钉群
钉钉设置机器人配置 1.进入配置机器人入口 2.添加机器人 3.测试WebHook请求 本人使用Postman进行测试 4.配置SVN 4.1 配置 Pre-commit hook 设置提交内容必须包 ...
- Spring Websocket实现文本、图片、声音、文件下载及推送、接收及显示(集群模式)
相关环境 Nginx,Spring5.x当前(要选择4.0+),tomcat8.x,Quartz 2.x集群(实际运用是Quartz的集群模式和单机模式共存的) 测试面页:http://sms.rey ...
- zabbix 布署实践【6 使用微信公众号-消息模版推送告警】
使用这个服务的前提是,你必须要有一个微信订阅号,或者公众号,并且是通过认证的号 因为认证过后的号才有模版消息和获取用户openid等信息的权限 ,如下,登录微信公众号的登录页后,底下有个接口权限的展示 ...
- [钉钉通知系列]Jenkins发布后自动通知
一.前言 最近使用Jenkins进行自动化部署,但是发布署后,并没有相应的通知,虽然有邮件发送通知,但是发现邮件会受限于大家接受的设置,导致不能及时看到相关的发布内容.由于之前有用Gitlab推送消息 ...
- Asp.Net Core对接钉钉群机器人
钉钉作为企业办公越来越常用的软件,对于企业内部自研系统提供接口支持,以此来打通多平台下的数据,本次先使用最简单的钉钉群机器人完成多种形式的消息推送,参考钉钉开发文档中自定义机器人环节,此次尝试所花的时 ...
随机推荐
- js利用select标签生成简易计算功能
html中使用select option作为运算符的承接容器,输入值,选择不同运算符,计算结果. 文章地址 https://www.cnblogs.com/sandraryan/ <!DOCTY ...
- python模块之包
包:将解决一类问题的模块放在同一目录下就形成了一个包 为了更好的了解包,我们就模拟创建一个包 import os os.makedirs('glance/api') os.makedirs('glan ...
- js基础——正则表达式
1.创建方式: var box = new RegExp('box');//第一个参数字符串 var box = new RegExp('box','ig');//第二个参数可选模式修饰符 等同于 v ...
- Linux 内核 PCI 总线
任何在 PCI 总线上的设备有参数 name 和 SUBSYSTEM 环境变量设置为值 pci. PCI 子系 统也一直添加下面 4 个环境变量: PCI_CLASS 设备的 PCI 类号, 16 进 ...
- hihocoeder1384
hihocoeder1384 算法竞赛进阶指南上的题目 我们肯定是吧最大值和最小值匹配,次大值和次小值匹配以此类推 首先,类似于区间覆盖的思想,我们对于一个\(L\),找到最大的满足条件的\(R\) ...
- CF1137 C. Museums Tour
CF1137 C. Museums Tour 一般来说的正常思路:看到有向图的第一思路都是缩点(但是要分析一波证明强联通分量中的个体可以拼凑成整体,一般都是边和点可以经过无数次然后贡献只算一次这种类型 ...
- 微软软件开发技术二十年回顾-Windows DNA篇
五. Windows DNA篇 微软的Windows分布式因特网应用体系(简称Windows DNA)是微软创建新一代高适应性商业解 决方案的框架,它使公司能够充分地挖掘数字神经系统的优点.Windo ...
- codeforces 600E E. Lomsat gelral (线段树合并)
codeforces 600E E. Lomsat gelral 传送门:https://codeforces.com/contest/600/problem/E 题意: 给你一颗n个节点的树,树上的 ...
- centos6.5单用户模式拯救系统
系统出现启动异常,某个软件卡住了不能启动(按Fx键可以查看是哪个软件卡住了),需要进入单用户模式或修复模式对系统进行管理. 使用单用户模式有一个前提,只要系统引导器(grub)能正常工作,否则要进行系 ...
- 前端vue——阿里图标的使用方法
阿里图标库的官方网址:https://www.iconfont.cn/ 使用前需要先登录,这里有三种登录方式,本人使用的是新浪微博登录 第一步:找到你需要的图标,点击添加入库 第二步:点击右上角的购物 ...