Pinpoint–基础–01–介绍
1、背景
1.1、以前的网络架构
- 只有2层(web服务器和数据库),3层(web服务器,应用服务器和数据库)。
- 遇到系统问题,例如系统失败或者性能问题,只要分析2到3个组件就可以找到问题。
1.2、现在的网络架构
- n层网络架构
- 系统的复杂度因此提升
- 系统越复杂,越难解决问题
- 遇到系统问题,例如系统失败或者性能问题,需要调查大量的组件和服务器。非常难解决问题。
1.3、解决现在网络架构的系统
为了解决复杂架构下的拓扑解析与性能分析,pinpoint应运而生。
2、pinpoint介绍
- 是一款 APM监控工具(Application Performance Management/应用性能管理)
- 基于java编写
- 用于 大规模分布式系统 的监控,是 分析 大规模分布式系统 的平台
- 基于google Dapper开发,目标就是为n(n>=1)层架构开发新的跟踪平台,为n层架构的系统 提供 处理大量跟踪数据 的 解决方案
- 能够对 基于java的 大规模分布式系统和应用 做调用链的跟踪
- 提供了一个web页面 展示 分布式系统的拓扑图 以及 系统这各个组件之间关系
3、特点
- 分布式事务追踪,跟踪跨分布式应用的消息
- 自动检测应用拓扑,帮助你搞清楚应用的架构
- 水平扩展,以便支持大规模服务器集群
- 提供代码级别的可见性,以便轻松定位失败点和瓶颈
- 提供字节码增强技术,添加新功能无需修改代码
- 安装探针不需要修改哪怕一行代码及trace server端部署简单,支持hdfs存储
- 具有简单的阀值触发报警功能
- 移植性比较强的,会比较讨人喜欢(相比cat)
- 自定义插件功能(参考https://github.com/naver/pinpoint/wiki/Pinpoint-Plugin-Developer-Guide)
4、优势
4.1、非侵入式
不需要修改应用的代码,即可完成agent的部署。
4.2、资源消耗小
对性能影响最小,总体资源消耗只提高了3%左右。
5、功能
5.1、服务拓扑图
- 对整个系统中应用的调用关系进行了可视化的展示
- 单击某个服务节点,可以显示该节点的详细信息,比如当前节点状态、请求数量等
5.2、实时活跃线程图
- 监控应用内活跃线程的执行情况,对应用的线程执行性能可以有比较直观的了解
5.3、请求响应散点图
- 以时间维度进行请求计数和响应时间的展示,拖过拖动图表可以选择对应的请求查看执行的详细情况
5.4、请求调用栈查看
对分布式环境中每个请求提供了代码维度的可见性,可以在页面中查看请求针对到代码维度的执行详情,帮助查找请求的瓶颈和故障原因。
5.5、应用状态、机器状态检查
通过这个功能可以查看相关应用程序的其他的一些详细信息,比如CPU使用情况,内存状态、垃圾收集状态,TPS和JVM信息等参数。