pinpoint-APM工具
介绍当前,随着互联网架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务、消息收发、分布式数据库、分布式缓存、分布式对象存储、跨域调用,这些组件共同构成了繁杂的分布式网络。当应用A发出某个请求时,其背后可能有数十个甚至更多的服务被调用,可谓是“牵一发而动全身”。 如果将分布式系统比作高速公路网,每个前端的请求就相当于高速上行驶的车辆,而处理请求的应用就是高速
介绍
当前,随着互联网架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务、消息收发、分布式数据库、分布式缓存、分布式对象存储、跨域调用,这些组件共同构成了繁杂的分布式网络。
当应用A发出某个请求时,其背后可能有数十个甚至更多的服务被调用,可谓是“牵一发而动全身”。 如果将分布式系统比作高速公路网,每个前端的请求就相当于高速上行驶的车辆,而处理请求的应用就是高速上的收费站,在收费站上将车辆通行信息记录成日志,包括时间、车牌、站点、公路、价格等,如果将所有收费站上的日志整合在一起,便可以通过唯一的车牌号确定该车的完整通行记录;分布式调用系统跟踪和监控就是类比这种思想,对每一次请求进行跟踪,进而明确每个请求所经过的应用、耗时等信息。
安装
https://skyao.gitbooks.io/learning-pinpoint/content/installation/guide.html
官方文档说的很详细
架构说明
Pinpoint-Collector:收集各种性能数据
Pinpoint-Agent:和自己运行的应用关联起来的探针
Pinpoint-Web:将收集到的数据显示成WEB网页形式
HBase Storage:收集到的数据存到HBase中
同类工具
google: Dapper
twitter: Zipkin
淘宝: 鹰眼(EgleEye)
大众点评: CAT
为什么要用Pinpoint
最重要的原因,对代码的零侵入,运用JavaAgent字节码增强技术,只需要加启动参数即可。
使用方式
集成tomcat
修改此tomat的/bin/catalina.sh,在106行左右加入启动参数:
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/Users/mc/pinpoint/pp-agent/pinpoint-bootstrap-1.6.0.jar"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=myapp"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=MyTestPP"
第一行:pinpoint-bootstrap-1.6.0.jar的位置 第二行:这里的agentId必须唯一,标志一个jvm。 第三行:applicationName表示同一种应用:同一个应用的不同实例应该使用不同的agentId,相同的applicationName。
集成spring boot
nohup java -javaagent:/Users/mc/pinpoint/pp-agent/pinpoint-bootstrap-1.6.0.jar -Dpinpoint.agentId=acheron-consumer -Dpinpoint.applicationName=acheron-consumer -jar myapp.jar &
注意
在分布式环境中 有很多不同的实例 pinpoint-agent 配置: pinpoint.agentId 必须为全局唯一标识实例, agentId必须唯一,标志一个jvm pinpoint.applicationName表示同一种应用:同一个应用的不同实例应该使用不同的agentId,相同的applicationName。 collector 地址和接口要在agent上配置 如果部署在不同的服务器上应该注意服务器地址和端口的对应
遇到的问题:
1.配置采样率的问题
https://github.com/naver/pinpoint/issues/3107
采样率取决于各家的业务逻辑,如果被采样的接口调用并发量非常大,那么高采样率开销太大了,搞不好 pinpoint 的 collector 都受不了,这种情况降低采样率得到的数据也非常有参考价值,反之,如果采样的接口总共也没几次调用,那么采样率很低的话,很有可能采样不到,或采到的数据参考价值很低。 而且改成 50 应该不是提高采样率,注释说的是 n 分之 1,想得到 50% 采样率的话,应该改成 2。
2.如何删除一个没有在运行的应用名
例子:
http://xxx/admin/removeApplicationName.pinpoint?applicationName=admin-dev&password=admin
password是web的 pinpoint-web.properties 里面配置的 默认password 为adminhttps://github.com/naver/pinpoint/issues/2340
更多推荐
所有评论(0)