pinpoint实现告警推送至钉钉和微信群

在前面的文章中,我们学习了如何通过java实现将消息发送到钉钉、和将消息发送到微信群聊。

基于上述基础,我们今天来接入pinpoint的告警,发送到钉钉群。

实操前准备

开始之前,推荐阅读一下,官方的告警说明文档。

阅读官方文档后,我们实际的来操作一遍。

按照官方说明,首先需要创建对应的用户组和用户,但是我们这里打开有异常:

file

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

file

步骤1-配置mysql表

首先,我们创建一个名为pinpoint的数据库。

file

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

file

导入的所有表显示如下:

file

导入15张数据表后,我们需要修改pinpoint-web的jdbc.properties配置文件。

配置好正确的数据库和账号密码后,重启pinpoint-web。

步骤2-界面配置用户组和用户

首先配置一个用户组,然后在这个组下面新建一个用户。

用户这里输入id、用户名、手机号、邮箱等信息添加即可。

file

步骤3-添加应用的告警规则

配置完用户后,接着我们配置对应应用的告警规则

file

这里我针对testboot这个服务,配置了一个慢 请求告警,当慢请求大于5个时,就会触发。

这里的type选项指定告警的方式,可以是短信、邮件,或者两者。

file

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

file

具体每个指标的含义,考虑后续再出一篇文章来作详细解释。

这篇主要以实现告警功能为目的,就不再深入了。

至此,告警规则就配置好了。

步骤4-改造源码思路分析 冷静分析

pinpoint 采用Spring Batch框架来运行job,其中
一个Job有多个Step,每个step又包含一系列规定动作(read,process,write)。

界面上所有的可配置指标都是通过Checker计算出来的,我们的Slow Count的也不例外。

file

AlarmMessageSender是我们需要关注的告警接口,它有一个空的实现类,EmptyMessageSender。

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

file

默认情况下,我们都只是使用不带任何参数的@Autowired。
设置required参数为false,表示忽略当前要注入的bean,如果有直接注入,没有跳过,不会报错。

步骤5-进行源码改造

新建一个类,实现告警接口,源码我上传到了github,需要的小伙伴,公众号回复钉钉,即可获取。

file

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzwspz.html