在使用Dubbo进行服务化或者整合应用后,假设某个服务后台日志显示有异常,这个服务又被多个应用调用的状况下,咱们一般很难判断是哪一个应用调用的,问题的原由是什么,所以咱们须要一套分布式跟踪系统来快速定位问题,Pinpoint能够帮助咱们快速定位问题(固然,解决方案也不止这一种)。java
摘自Pinpoint学习笔记git
https://skyao.gitbooks.io/learning-pinpointgithub
Pinpoint是一个开源的 APM (Application Performance Management/应用性能管理)工具,用于基于java的大规模分布式系统。 仿照Google Dapper,Pinpoint经过跟踪分布式应用之间的调用来提供解决方案,以帮助分析系统的整体结构和内部模块之间如何相互联系。web
注:对于各个模块之间的通信英文原文中用的是transaction一词,可是我以为若是翻译为"事务"容易引发误解,因此替换为"交互"或者"调用"这种比较直白的字眼。
Pinpoint是一个分析大型分布式系统的平台,提供解决方案来处理海量跟踪数据。2012年七月开始开发,2015年1月9日做为开源项目启动。spring
ServerMapshell
经过可视化分布式系统的模块和他们之间的相互联系来理解系统拓扑。点击某个节点会展现这个模块的详情,好比它当前的状态和请求数量。apache
Realtime Active Thread Chartbootstrap
实时监控应用内部的活动线程。segmentfault
Request/Response Scatter Charttomcat
长期可视化请求数量和应答模式来定位潜在问题。经过在图表上拉拽能够选择请求查看更多的详细信息。
CallStack
在分布式环境中为每一个调用生成代码级别的可视图,在单个视图中定位瓶颈和失败点。
Inspector
查看应用上的其余详细信息,好比CPU使用率,内存/垃圾回收,TPS,和JVM参数。
本次基础环境搭建我就不讲了,如不会,请自行搜索或者参考我博客文章https://www.souyunku.com
进入GitHub 找到须要的版本:https://github.com/naver/pinpoint/releases
wget https://github.com/naver/pinpoint/releases/download/1.7.3/pinpoint-agent-1.7.3.tar.gz wget https://github.com/naver/pinpoint/releases/download/1.7.3/pinpoint-collector-1.7.3.war wget https://github.com/naver/pinpoint/releases/download/1.7.3/pinpoint-web-1.7.3.war wget https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/1.4.5/hbase-1.4.5-bin.tar.gz
./hbase shell hbase-create.hbase
建立相关存储结构pinpoint-collector-1.7.3.war
修改 WEB-INF\classes\hbase.properties 文件 hbase.client.host 设置为 hbase 所用的 zk 地址 修改 WEB-INF\classes\pinpoint-collector.properties 文件 cluster.zookeeper.address 修改成给 Pinpoint 准备的 zk 地址
pinpoint-web-1.7.3.war
修改 WEB-INF\classes\hbase.properties 文件 hbase.client.host 设置为 hbase 所用的 zk 地址 修改 WEB-INF\classes\pinpoint-web.properties 文件 cluster.zookeeper.address 修改成给 Pinpoint 准备的 zk 地址
pinpoint-web-1.7.3.war
修改成 ROOT.war
pinpoint-collector-1.7.3.war
修改成 collector.war
查看 tomcat/logs 下的日志, 注意观察有没有链接不到 2181 端口的日志, 若是有, 多是 war 中的配置没有修改正确, 建议清空 tomcat 下 work、temp 文件夹后重试
profiler.collector.ip
属性值修改成部署 collector 机器的主机名或 IP注意: 每一个项目所在的服务器都须要部署 agent
个人测试项目:https://github.com/souyunku/s...
配置 application.properties
,修改地址 zookeeper.connect=127.0.0.1:2181
为本身的zk
mvn clean package
须要添加三个启动参数
-javaagent: 指向 agent 目录下的 pinpoint-bootstrap-1.7.3.jar -Dpinpoint.agentId:设置全局惟一标示 ID -Dpinpoint.applicationName: 设置项目的名称(若是同一项目部署两台实例,这两台的参数应该一致)
Tomcat 和 Jar 项目有不一样的添加方式,可参考以下方式修改
Tomcat
找到 bin/catalina.sh 添加下面的代码
CATALINA_OPTS="$CATALINA_OPTS -javaagent:$AGENT_PATH/pinpoint-bootstrap-1.7.3.jar" CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=tomcat1" CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=webcontroller"
SpringBoot
# DUBBO 提供者 java -javaagent:/opt/pinpoint-bootstrap-1.7.3.jar -Dpinpoint.agentId=dubbo-provider-1 -Dpinpoint.applicationName=dubbo-provider -jar dubbo-provider-1.0-SNAPSHOT.jar # DUBBO 消费者 java -javaagent:/opt/pinpoint-bootstrap-1.7.3.jar -Dpinpoint.agentId=dubbo-consumer-1 -Dpinpoint.applicationName=dubbo-consumer -jar dubbo-consumer-1.0-SNAPSHOT.jar
在本身的项目添加完毕启动后,便可登陆 web 后台查看集群的状态, 跟踪请求
访问消费方地址模拟用户请求
http://localhost:8080/sayHello?name=souyunku
首页
指定时间点的,选中区域的请求明细
请求响应明细和系统拓扑
视图中定位瓶颈和失败点
消费者机器的, CPU使用率,内存/垃圾回收,TPS,和JVM参数
参考:
http://www.javashuo.com/article/p-ojgoltoo-ee.html
http://dubbo.apache.org/#!/blog/pinpoint.md?lang=en-us