前言
这边文章来介绍一下在pinpoint2.x中如何开启告警。
在pinpoint 2.X中引入了默认的告警实现类DefaultAlarmMessageSender。所以我们只需要实现短信发送的接口即可。
说明
上述类封装了发送邮件和短信的方法,目前短信方法的实现仍是空,不过打印了一句话。
logger.info("can not send sms message.");
然而,邮件发送是有一个实现类来帮我们做告警邮件发送的。他就是:SpringSmtpMailSender。
实现过程
前置条件是,需要创建数据库,增加告警规则,这个相信大家都没问题,不再论述。
确认batch.properties文件中的batch.enable配置为true(默认)。
batch.enable=true
为了避免存在多个pinpoint-web产生并发计算操作,所以需要设置batch.server.ip,为进行计算的pinpoint web ip地址,如果只有一个实例,那就写127.0.0.1。
batch.server.ip=X.X.X.X
和1.x不同,2.x中需要配置参数项:
-Dspring.profiles.active=local,batch
当然,咱们是tomcat启动,所以在catalina.sh中增加 -D ,添加位置,参考截图:
JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=release,batch -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
启动时,会有启动日志:
接下来,我们只需要新建一个类,实现SmsSender接口即可。
public class Pinpoint2DingTalkSmsSender implements SmsSender {
@Override
public void sendSms(AlarmChecker checker, int sequenceCount, StepExecution stepExecution) {
...省略
和1.X不同的是,告警接口多了一个参数,这个我们用不到,也不用管它。在侠梦的开发笔记,回复钉钉获取class和源代码内容。
还是和1.X部署过程相同,我们把两个class文件上传。到WEB-INF/classes/com/navercorp/pinpoint/web/alarm目录下:
在applicationContext-web.xml中增加一个bean.
<bean id="dingTalkAndWechatMessageSender" class="com.navercorp.pinpoint.web.alarm.Pinpoint2DingTalkSmsSender" >
<property name="dingTalkUrl" value="#{pinpointWebProps['web.ding.talk.url'] ?: ''}"/>
</bean>
</beans>
在/WEB-INF/classes/pinpoint-web.properties配置中新增 web.ding.talk.url属性配置,这个属性就是钉钉的webhok地址。
同样记得改一下文件权限:
chmod 777 ./Pinpoint2DingTalkSmsSender.class
chmod 777 Pinpoint2DingTalkSmsSender$DingResponse.class
重启pinpoint-web工程。
告警效果:
web后台debug日志:
排查问题
排除是否已经产生告警,但是没有执行自定义的告警发送类:
cat logs/catalina.out |grep 'can not send sms message'
出现这个日志,说明自定义的告警发送类,没有生效,还是执行的EmptySmsSender。检查xml是否配置好了,自定义的告警bean.
如果不确定问题出在哪里,可以把pinpoint-web的debug日志打开,观察是否产生了告警:webapps/ROOT/WEB-INF/classes/profiles/release/log4j.xml
后台回复钉钉,获取最新的源码和编译后的class。
pinpoint2.X来了,学不动了?一起来看看有哪些新特性吧
●侠梦说pinpoint--左侧服务地图调用量和WasOnly含义
●侠梦说pinpoint--界面上的图标之AgetnInfo数据研究
●侠梦说pinpoint-增加web认证Basic Authentication
一文带你了解 Thrift,一个可伸缩的跨语言 RPC 框架(pinpoint 源码分析系列)
养成阅后分享转发,“在看”的好习惯