1. Pinpoint概述Pinpoint是一个由韩国人编写的为大型分布式系统服务的链路跟踪平台,并提供大量链路跟踪数据分析汇总解决方案。自2012年7月开始开发,与2015年1月做为一个开源项目推出。 2. Pinpoint主要特性
3. Pinpoint优势
4. Pinpoint架构简介先看一下官方提供的架构图,如图: Pinpoint主要包含了4个组件:
架构图从上往下看,首先是通过Agent组件收集需要的数据,通过UPD/TCP的方式将数据发送给Collector,由Collector将数据分析整理过后存入HBase,通过Web UI组件将分析好的数据从HBase中读出,展示在现代化的UI界面上。 5. Pinpoint数据结构简介Pinpoint中,核心数据结构由Span, Trace, 和 TraceId组成。
6. Pinpoint版本依赖
7. Spring Cloud与Pinpoint实战在介绍实战之前,我们先介绍一下Pinpoint部署构建。 笔者构建的一些前置条件: java:1.8
存储方式需要使用HBase1.2.x的版本,笔者这里选择的是HBase1.2.6,下载地址为Apache官网,推荐使用有端点续传功能的下载器下载(实在是有点慢),HBase全版本下载地址:http://archive./dist/hbase/ ,各位读者选择自己喜欢的版本下载。 下载完成后,将HBase1.2.6放入CentOS的opt目录中,执行如下命令: tar -xvzf hbase-1.2.6-bin.tar.gzmv hbase-1.2.6/ /data/service/hbase/ 修改hbase中config目录中的JAVA_HOME,将这里的JAVA_HOME修改为自己本地的路径,笔者这里修改如下: export JAVA_HOME=/opt/jdk1.8.0_221 修改完成后就可以进入hbase的bin目录,启动hbase了,执行如下语句: ./start-hbase.sh 启动成功后,可以执行jps,如果看到有HMaster,可有证明启动成功,如下: 19263 HMaster 也可以打开浏览器访问:http://ip:16010/master-status ,结果如图: 接下来我们先把Pinpoint的HBase的构建脚本导入,进入HBase的bin目录下执行如下语句: ./hbase shell /opt/hbase-create.hbase 数据导入成功我们在HBase的UI界面上可以看到,如图: 后面的目录是笔者用来存放HBase初始化脚本的路径,各位读者可根据情况自行替换,至此,HBase环境准备完成,接下来开始部署Collector和Web UI。
出于简单方便考虑,不推荐初学者自行编译代码进行部署,可以直接使用官方提供的发行版本进行部署。 浏览器访问链接:https://github.com/naver/pinpoint/releases/ ,直接下载当前最新Release版本即可,笔者现在看到的最新版本是1.8.4,如图,需要下载的内容有 首先需要准备两个tomcat,笔者这里下载的tomcat8,解压两份后并重命名为 将 将8005改成18005,8080改成18080,8443改为18443,8009改为18009。 同样也将 将8005改成28005,8080改成28080,8443改为28443,8009改为28009。 将 同样,将 当Collector和Web UI都启动成功后,就可以使用打开浏览器访问:http://ip:28080/#/main ,初次访问如图:
实战案例,本实战案例和上一篇实战案例保持一致,同样是4个服务,包括Zuul-Service、Eureka-Service、Consumer-Service和Provider-Service。 接入方式和上一篇的Skywalking是一致的,都是使用探针技术接入应用程序,java -jar的方式来加载Agent探针。 首先在工程的跟目录中执行 java -javaagent:/opt/pinpoint-bootstrap-1.8.4.jar -Dpinpoint.agentId=consumer-service -Dpinpoint.applicationName=consumer-server -jar /opt/project/consumer_service/consumer-0.0.1-SNAPSHOT.jarjava -javaagent:/opt/pinpoint-bootstrap-1.8.4.jar -Dpinpoint.agentId=eureka-service -Dpinpoint.applicationName=eureka-server -jar /opt/project/eureka_service/eureka-0.0.1-SNAPSHOT.jarjava -javaagent:/opt/pinpoint-bootstrap-1.8.4.jar -Dpinpoint.agentId=provider-service -Dpinpoint.applicationName=provider-server -jar /opt/project/provider_service/provider-0.0.1-SNAPSHOT.jarjava -javaagent:/opt/pinpoint-bootstrap-1.8.4.jar -Dpinpoint.agentId=zuul-service -Dpinpoint.applicationName=zuul-server -jar /opt/project/zuul_service/zuul-0.0.1-SNAPSHOT.jar 上述命令执行完成之后,再打开Web UI查看显示情况。 首先打开浏览器访问:http://192.168.44.129:8080/client/hello?name=spring ,页面正常显示Hello, name is spring,查看Pinpoint的Web UI,如图: 图清楚的显示了我们当前系统的拓扑结构,横线上面的数字代表了调用次数,右边部分,最上面显示的是成功和失败的情况,中间部分显示的是响应时间,下面显示的是加载所使用的时间。 检查器(Inspector):这里已Zuul-Service为例,Timeline显示的是请求的时间段,Information显示的是节点的一些当前信息,包含Application Name、Agent Id、Agent版本、JVM信息、开始时间等。 Heap信息的使用情况,如图: 系统CPU、活动线程、响应时间等信息如图: 更多Pinpoint的信息,读者可以通过官方Demo(http://125.209.240.10:10123/#/main )或者自行构建试验来查看结果,这里不再一一赘述。 8. 小结这里总结一下整个案例的启动顺序:
同Skywalking一样,以上启动顺序供各位读者参考,请各位读者最好按照以上顺序启动,因为不同的组件之前其实是有相互依赖关系的,如果随意更改启动顺序可能会造成某些未知问题。至此,Spring Cloud和APM的相关操作就告一段落了。APM可以很好的帮我们理解系统行为,也是分析系统性能的工具,更是发生问题故障的时候利器,可以帮我们快速的定位查找问题。 |
|
来自: 新用户32269360 > 《待分类》