PinPoint全链路监控
简介
Pinpoint是一个开源的 APM (Application Performance Management/应用性能管理)工具,用于基于java的大规模分布式系统,基于Google Dapper论文。
仿照 Google Dapper , Pinpoint 通过跟踪分布式应用之间的调用来提供解决方案, 以帮助分析系统的总体结构和内部模块之间如何相互联系。
如今的服务通常由很多不同模块组成,前端向后台发起一个查询请求,后台服务可能要调用多个服务,每个服务可能又会调用其它服务,最终将结果返回,汇总到页面上。如果某个环节发生异常,工程师很难准确定位这个问题到底是由哪个服务调用造成的,Pinpoint的作用就是追踪每个请求的完整调用链路,收集调用链路上每个服务的性能数据,方便工程师能够快速定位问题。
架构图
如图所示,为Pinpoint的架构图,主要由四部分组成:
Pinpoint-Collector:收集器,收集各种性能数据
Pinpoint-Agent:探针,与应用服务器关联,采集性能数据,传给Collector
Pinpoint-Web:UI,展示性能数据
HBase Storage:存储,保存性能数据
优点
1、分布式事务跟踪,跟踪跨分布式应用的消息
2、自动检测应用拓扑,帮助你搞清楚应用的架构
3、水平扩展以便支持大规模服务器集群
4、提供代码级别的可见性以便轻松定位失败点和瓶颈
5、使用字节码增强技术,添加新功能而无需修改代码
功能
1、故障快速定位
2、各个调用环节的性能分析
3、数据分析等
4、生成服务调用拓扑图
支持的模块
ü JDK 6+
ü Tomcat 6/7/8, Jetty 8/9, JBoss EAP 6
ü Spring, Spring Boot
ü Apache HTTP Client 3.x/4.x, JDK HttpConnector, GoogleHttpClient, OkHttpClient, NingAsyncHttpClient
ü Thrift Client, Thrift Service, DUBBO PROVIDER, DUBBO CONSUMER
ü MySQL, Oracle, MSSQL, CUBRID, DBCP, POSTGRESQL, MARIA
ü Arcus, Memcached, Redis, CASSANDRA
ü iBATIS, MyBatis
ü gson, Jackson, Json Lib
ü log4j, Logback
环境搭建所需要的工具
1、JDK 1.8
2、Tomcat 8.5.3 发布用
3、Pinpoint-Web 将收集到的数据显示成WEB网页形式
4、Pinpoint-Collector 收集各种性能数据
5、Pinpoint-Agent 和自己运行的应用关联起来的探针
6、HBase Storage 收集到的数据存到HBase中
7、hbase_scripts Pinpoint初始化数据库
HBase脚本介绍
l hbase-create.hbase - 创建pinpoint必须的表。
l hbase-drop.hbase - 删除pinpoint必须的所有表
l hbase-flush-table.hbase - 刷新所有表
l hbase-major-compact-htable.hbase- 压缩主要的所有表
JDK和Tomcat的搭建这里就不再介绍了。
1、安装HBase
下载地址:http://archive.apache.org/dist/hbase/
这里下载hbase-1.4.12来进行安装
将hbase-1.4.12-bin.tar.gz包移动到/apps/software目录下,然后解压
接下来进入到hbase目录下的conf文件夹夹中修改hbase-env.sh文件对JAVA的配置,找到JAVA_HOME的位置,打开JAVA_HOME的注释行并修改,或者直接添加一行,如下图
然后回到bin目录下启动hbase服务 sh start-hbase.sh
启动如果遇到错误,可以检查一下虚拟机cpu的核心数,貌似至少得双核以上才能起得来。启动成功会显示如下画面
Hbase默认端口是16010,在网页*问http://192.168.3.31:16010
然后初始化Hbase的pinpoint库,执行
登录web,来查看HBase的数据是否初始化成功
2、安装pinpoint
为了方便省事,我们把pinpoint-web 和 pinpoint-collector 都放进一个Tomcat中
为了方便访问将pinpoint-web-1.1.2.war改名为pinpoint
启动tomcat然后访问http://192.168.3.31:8080/pinpoint
到这里我们的环境就发布好了