本文主要是介绍Java应用对接pinpoint监控工具的时候,应用名称长度超出限制而导致接入失败,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、背景
java应用需要接入pinpoint,同一个虚拟机上的其他应用接入成功,唯独本应用不行。
首先排除是pinpoint agent的问题,因为其他应用都正常。
然后,我就对比二者的启动脚本。
-javaagent:/opt/pinpoint/pinpoint-bootstrap.jar -Dpinpoint.agentId=DA301004_17 -Dpinpoint.applicationName=question-analysis-service-javaagent:/opt/pinpoint/pinpoint-bootstrap.jar -Dpinpoint.agentId=SB107003_17 -Dpinpoint.applicationName=product-service
启动命令,并没有缺少必填参数,只是他们的applicationName不同而已。
只能从错误信息里进一步去查找问题。
二、错误详情
LOGBACK: No context given for c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1002021887
09-05 17:19:27.709 INFO PinpointBootStrap : pinpoint agentArgs:null
09-05 17:19:27.782 INFO PinpointBootStrap : PinpointBootStrap.ClassLoader:null
09-05 17:19:27.784 INFO PinpointBootStrap : ContextClassLoader:sun.misc.Launcher$AppClassLoader@18b4aac2
09-05 17:19:27.789 INFO ClassAgentPathFinder : agentPath:file:/opt/pinpoint/pinpoint-bootstrap-3.0.0.jar
09-05 17:19:27.799 INFO PinpointBootStrap : JavaAgentPath:/opt/pinpoint/pinpoint-bootstrap-3.0.0.jar
09-05 17:19:27.800 INFO AgentDirBaseClassPathResolver : Agent original-path:/opt/pinpoint
09-05 17:19:27.803 INFO AgentDirBaseClassPathResolver : Agent real-path:/opt/pinpoint
09-05 17:19:27.812 INFO BootDir : found pinpoint-commons.jar path:/opt/pinpoint/boot/pinpoint-commons-3.0.0.jar
// 略
//
//
09-05 17:19:27.930 INFO PinpointBootStrap : appendToBootstrapClassLoader:/opt/pinpoint/boot/pinpoint-bootstrap-java16-3.0.0.jar
09-05 17:19:27.932 INFO PinpointBootStrap : parentClassLoader:BootStrapClassLoader:null
09-05 17:19:27.939 INFO IdValidator : check SystemProperties(-D) agentId:DA301004_17
09-05 17:19:27.940 INFO AgentIdResolver : SystemProperties(-D) pinpoint.agentId=DA301004_17
09-05 17:19:27.941 INFO IdValidator : check SystemProperties(-D) applicationName:question-analysis-service
09-05 17:19:27.942 INFO IdValidator : invalid Id. SystemProperties(-D) applicationName can only contain [a-zA-Z0-9], '.', '-', '_'. maxLength:24 value:question-analysis-service
09-05 17:19:27.943 WARN AgentIdResolver : Failed to resolve ApplicationName(-Dpinpoint.applicationName)
09-05 17:19:27.944 WARN PinpointStarter : Failed to resolve AgentId and ApplicationId
*****************************************************************************
* Pinpoint Agent load failure
*****************************************************************************
报错信息在启动日志中,看最后几行:
09-05 17:19:27.942 INFO IdValidator : invalid Id. SystemProperties(-D) applicationName can only contain [a-zA-Z0-9], ‘.’, ‘-’, ‘_’. maxLength:24 value:question-analysis-service
09-05 17:19:27.943 WARN AgentIdResolver : Failed to resolve ApplicationName(-Dpinpoint.applicationName)
09-05 17:19:27.944 WARN PinpointStarter : Failed to resolve AgentId and ApplicationId
问题已很明确了,就是说,applicationName的最大长度限制为24,由字符[a-zA-Z0-9], ‘.’, ‘-’, ‘_’. 组成。
而我们的applicationName是question-analysis-service,特殊字符倒是没有,不过长度超出了其限制。
于是,我们修改为question-analysis,再次启动应用程序。
三、总结
从这个接入案例中,再次告诫我们,没有理所当然的事情。
环境都一样,不同的应用就是可能不同。
要排查问题,还得是查看日志。
也提醒我们开发人员,日志打印是多么重要。
这篇关于Java应用对接pinpoint监控工具的时候,应用名称长度超出限制而导致接入失败的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!