Pinpoint 是一个APM(Application performance management)工具,相对于其他APM工具(例如ZipKin)有一个强大的优势,那就是应用程序无需修改一行代码就能直接使用,例如Java程序直接使用Pinpoint提供的Java agent(jar包)就能使用。目前Pinpoint直接Java/PHP/Python三种语言,未来可能会支持更多语言,开源社区极其活跃,版本迭代比较快。
Pinpoint的优势
除了上面谈到的对用户代码无嵌入外,Pinpoint还有以下优势:
1.强大的UI
UI会自动识别程序的调用关系并且绘制图表,支持的组件多,例如Tomcat/Jetty/JBoss/Thrift/Kafka/Mysql等等。
2.调用链信息全
除了能看到调用关系及每一级耗时外,还能看到每一级的参数及SQL。
3.高性能
在JVM字节码层做处理,程序的性能损耗小于3%。
Pinpoint架构
由Pinpoint官方给出的架构图我们可以看出,Pinpoint Agent负责采集用户程序的信息 通过 网络将信息发给服务端 Pinpoint Collector,Pinpoint Collector将数据持久化到Hbase中,前端Web UI从Hbase中读取数据展示给用户。是一个标准的C/S分布式架构,选中Hbase的原因想必是为了支持海量数据。
如果测试环境,可以一键使用别人封装好的docker镜像进行启动,网上有很多docker-compose启动的,比较麻烦,里面服务独立容器启动的,封装好的镜像可以一键启动
docker run -it -d --name=pinpoint --net=host 271760513/pinpoint:2.3.3
要注意--net=host 模式,不能有端口冲突
完事打开ip:8080,则启动成功
1.下载pinpoint的agent
Release v2.3.3 · pinpoint-apm/pinpoint · GitHub
https://github.com/pinpoint-apm/pinpoint/releases/download/v2.3.3/pinpoint-agent-2.3.3.tar.gz
2.解压修改配置文件
如果端口没有通过docker映射的话,只需要改一个ip就行
profiles\release\pinpoint.config
profiler.transport.grpc.collector.ip=192.168.1.27
profiler.collector.ip=192.168.1.27
#采样率 全采样
profiler.sampling.rate=1
3.修改spring-boot项目的jvm参数
-javaagent:D:\pinpoint-agent-2.3.3\pinpoint-bootstrap-2.3.3.jar
-Dpinpoint.applicationName=imgbd-admin
-Dpinpoint.agentId=imgbd-admin-local
修改对应的路径和applicationName即可
4.启动项目
请求接口即可在pinpoint的web查看到调用链