在APP爆炸的今天,app之间、app内部的耦合越来越多也越来越复杂,如何监控管理这些APP实际情况成了越来越热门的话题。本文介绍开源APM(Application Performance Management)工具pinpoint的部署和简单的使用方法。
现在的服务(Services )通常包括许多不同的组件(components),这些组件内部使用API调用,与外部服务之间也有API调用关系。每个事务如何在服务内部被执行通常是一个黑盒(blackbox)。Pinpoint精确跟踪这些组件之间的事务流,并提供一个清晰的视图,以便识别问题点和潜在的瓶颈。
Pinpoint提供以下五种视图:
服务器图(ServerMap) - 通过可视化其组件的互连方式来了解任何分布式系统的拓扑。单击节点将显示有关组件的详细信息,例如其当前状态和事务计数。
实时活动线程图(Realtime Active Thread Chart) - 实时监视应用程序内的活动线程。
请求/响应散布图(Request/Response Scatter Chart) - 可视化请求计数和响应模式,以确定潜在问题。可以通过在图表上拖动来选择事务以获取更多详细信息。
调用栈信息(CallStack) - 增强分布式环境中每个事务的代码级可见性,识别单个视图中的瓶颈和故障点。
检查器(Inspector) - 查看应用程序的其他详细信息,如CPU使用率,内存/垃圾收集,TPS和JVM参数。
从pinpoint 1.5.0开始,Pinpoint可以直接通过Collector将请求从Web发送到Agents(反之亦然)。为了实现这一点,Pinpoint使用Zookeeper来协调Agents和Collector之间的通信,以及Collector和Web实例之间的通信。通过添加zookeeper,现在可以进行实时通信(例如活动线程计数监视),因为HBase自带zookeeper,通常使用HBase后端提供的Zookeeper实例。
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, ThriftService, DUBBO PROVIDER, DUBBO CONSUMER
MySQL, Oracle, MSSQL,CUBRID, DBCP, POSTGRESQL, MARIA
Arcus, Memcached, Redis,CASSANDRA
iBATIS, MyBatis
gson, Jackson, Json Lib
log4j, Logback
Pinpoint代码是java编写的,使用maven进行编译,准备如下安装包:
1、上传到服务器/home/lkx/目录下:
[root@server ~]# cd /home/lkx/
[root@server lkx]# rpm -ivh jdk-8u101-linux-x64.rpm
[root@server lkx]# cd /opt/
[root@server opt]# tar zxf /home/lkx/apache-maven-3.3.9-bin.tar.gz
[root@server opt]# mv apache-maven-3.3.9/ maven/
[root@server opt]# vim /etc/profile
2、增加如下内容:
export JAVA_HOME=/usr/java/default
export MAVEN_HOME=/opt/maven
export JRE_HOME=/usr/java/default/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$MAVEN_HOME/bin
3、检查jdk,maven安装情况
[root@server opt]# java version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
[root@server opt]# mvn version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47 08:00)
Maven home: /opt/maven
Java version: 1.8.0_101, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_101/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"
[root@server opt]#
4、克隆pinpoint代码:
[root@server opt]# git clone https://github.com/naver/pinpoint
[root@server opt]# cd pinpoint
[root@server pinpoint]# git branch a
* master
remotes/origin/1.0.x
remotes/origin/1.1.x
remotes/origin/1.5.x
remotes/origin/HEAD -
|