pinpoint是开源在github上的一款APM监控工具,它是用JAVA编写的,用于大规模分布式系统监控,属于分布式调用链监控组件。
它主要的特点是开箱即用、完备的Web界面,对性能影响较小,无侵入式安装探针,小团队懒人的必备佳品。
官网:https://github.com/naver/pinpoint
监控截图如下:
服务器端主要分为三部分:
1.pinpoint-collector.war 控制器,用于接受各客户端传回来的数据,保存在Hbase里。需要部署在中间件(比如Tomcat)中
2.pinpoint-web.war 监控界面,即上图这个还不错的Web界面。需要部署在中间件(比如tomcat)中
3.Habse数据库 ,用于存储数据
客户端pinpoint-agent,其实就是一个jar包,主要是放在待监控的目标机器上,随待监控的jvm启动即可。支持tomcat、jboss、spring boot.
以tomcat为例:只需要在tomcat的catalina.sh中加入以下代码即可
CATALINA_OPTS="$CATALINA_OPTS -javaagent:$AGENT_PATH/pinpoint-bootstrap-$VERSION.jar" CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=$AGENT_ID" CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.ApplicationName=$APPLICATION_NAME"
安装部署都比较简单,不赘述,参考官网即可
https://github.com/naver/pinpoint/blob/1.7.3/doc/installation.md
注意事项
pinpoint-collector对外开放的三个端口999499959996,主要用于从agent处获取数据,其中9994为tcp协议,9995及9996均为udp协议,在生产环境开通网络权限时需要注意
还有就是pinpoint-agent并不是把所有的请求都会拦截发送到pinpoint-collector上,只是部分请求(大约20%),因此只能做性能分析告警用,不能作为全数据参考。