[转帖]JAVA⽣态的微服务⽆侵⼊链路追踪

一. ⽆侵⼊链路追踪APM⼯具​

应⽤性能管理(Application Performance Management,APM) 是指对企业的关键业务应⽤进⾏监测、优化,提⾼企业应⽤的可靠性和质量,保证⽤户得到良好的服务,降低IT总运维成本,为企业带来更多的商业利益。

Pinpoint简介​

Pinpoint是一个APM(应用程序性能管理)工具,适用于用Java / PHP编写的大型分布式系统。在使用上力图简单高效,通过在启动时安装agent,不需要修改哪怕一行代码,最小化性能损失(3%)。

  • 优势:

    1)分布式事务跟踪,跟踪跨分布式应用的消息;
    2)自动检测应用拓扑,帮助你搞清楚应用的架构;
    3)水平扩展以便支持大规模服务器集群;
    4)提供代码级别的可见性以便轻松定位失败点和瓶颈;
    5)使用字节码增强技术,添加新功能而无需修改代码。

  • 主要组件

组件 组件功能  
Pinpoint-Collector 收集各种性能数据  
Pinpoint-Agent 探针与应用服务器(例如 tomcat) 关联,部署到同一台服务器上  
HBase Storage 收集到数据存到 HBase 中  
Pinpoint-Web 将收集到的数据层现在 web 展示  

二. 快速在Rainbond部署 pinpoint​

基于Rainbond应用市场⼀键安装。

这种部署方式对于像pinpoint这种多组件的复杂应用来说,最大程度的降低了部署难度与工作量

  • 通过pinpoint-web应用进入到pinpoint的UI界面

  • 在默认设置中,pinpoint应用 已经监控了它自身的 collector 、web组件。在进入UI界面后,就可以发现二者已经存在于应用列表中了

三. 添加被监控的对象​

  • 在war启动过程中插⼊agent

    1)事先将pinpoint-agent资源打进镜像;
    2)插入启动关键代码:

  • 在jar启动过程中插⼊agent

    1)事先将pinpoint-agent资源放进源码仓库;

    2)启动脚本内容:

传统架构下的pinpoint,需要在被监控的对象里附加Agent,并通过修改配置文件使之生效。在云帮平台上,我们将这两个步骤也做了相应的简化。

云帮平台利用设置 环境变量 的方式,代替了配置文件,键值对形式的环境变量非常简单易用。

添加Pinpoint监控对象实践​

方法一

下面以todoapi为例,介绍添加被监控对象的方法

    1. 关联Pinpoint-Collector

    1. 查看 连接信息

    1. 访问 Pinpoint-Web查看:

  • 对于已部署的应用,也可以通过 应用管理界面 中的 依赖 、设置 选项卡,来配置相应的服务依赖和环境变量。

方法二

    1. 开启Pinpoint-Collector对外服务后,平台网关会定义一层端口映射关系

    1. 查看todoshow变量值,检查端口号是否正确,激活agent的开关

    1. 访问 Pinpoint-Web查看,todoshow已经出现在界面上

  • 在Pinpoint-Web中实时推送使用的是Websocket协议,但我们在访问Pinpoint-Web应用时使用的是http协议;所以不能实时接收推送,需在平台中 应用网关-->访问控制中找到Pinpoint-Web应用,点击参数配置 打开Websocket协议支持。