Pinpoint分布式系统性能监控工具

文章目录

一、pinpoint简介

pinpoint是一个分析大型分布式系统的平台,提供解决方案来处理海量跟踪数据,主要面向基于tomcat的Java 应用

存在理由:

和如今相比, 过去的因特网的用户数量相对较小,而因特网服务的架构也没那么复杂。web服务通常使用两层(web服务器和数据库)或三层(web服务器,应用服务器和数据库)架构。

然而在如今,随着互联网的成长,需要支持大量的并发连接,并且需要将功能和服务有机结合,导致更加复杂的软件栈组合。更确切地说,比三层层次更多的n层架构变得更加普遍。系统的复杂度因此提升。

系统越复杂,越难解决问题,例如系统失败或者性能问题。在三层架构中找到解决方案还不是太难,仅仅需要分析3个组件比如web服务器,应用服务器和数据库,而服务器数量也不多。
但是,如果问题发生在n层架构中,就需要调查大量的组件和服务器。另一个问题是仅仅分析单个组件很难看到大局;当发生一个低可见度的问题时,系统复杂度越高,就需要更长的时间来查找原因。最糟糕的是,某些情况下我们甚至可能无法查找出来。
为了解决复杂架构下的拓扑解析与性能分析,pinpoint应运而生。

二、功能、优势与架构

功能:

  • 分布式事务跟踪,跟踪跨分布式应用的消息

  • 自动检测应用拓扑,帮助你搞清楚应用的架构

  • 水平扩展以便支持大规模服务器集群

  • 提供代码级别的可见性以便轻松定位失败点和瓶颈

  • 使用字节码增强技术,添加新功能而无需修改代码

优势:

  • 非入侵式:不需要修改应用的代码,即可完成agent的部署。

  • 资源消耗:总体资源消耗只提高了3%左右。

架构:

  • HBase (用于存储数据)

  • Pinpoint Collector (信息的收集者,部署在tomcat中)

  • Pinpoint Web (提供WEB_UI界面,部署在tomcat中)

  • Pinpoint Agent (附加到 java 应用来做采样)

Pinpoint分布式系统性能监控工具
Web 页面效果:
Pinpoint分布式系统性能监控工具

Pinpoint分布式系统性能监控工具
Pinpoint分布式系统性能监控工具

三、部署

目标:

在pp_colle主机上部署 HBase 、Pinpoint Collector、PinpointWeb(依赖JDK和Tomcat),收集各个部署Pinpoint Agent主机上的基于tomcat的Java 应用

在pp_agent主机上部署 Pinpoint Agent 和 Tomcat ,Agent收集Tomcat的数据信息,传输给Collector

IP 操作系统 主机名 安装项 说明
192.168.1.21 CentOS 7.6 pp_colle Collector,HBase,Web UI,JDK,Tomcat Pinpoint Collector、Pinpoint Web的部署均需要Tomcat
192.168.1.22 CentOS 7.6 pp_agent agent,Tomcat,JDK 采集Tomcat数据信息

软件信息:

软件名 版本
HBase hbase-1.0.3-bin.tar.gz
Pinpoint Collector pinpoint-collector-1.5.2.war
Pinpoint Web pinpoint-web-1.5.2.war
Pinpoint Agent pinpoint-agent-1.5.2.tar.gz
Tomcat apache-tomcat-8.0.36.tar.gz
JDK jdk-8u112-linux-x64.rpm
hbase-create.hbase HBase数据库初始化脚本
test.war 测试网页脚本

pp_colle主机配置步骤

关闭防火墙和selinux

[root@pp_colle opt]# systemctl stop firewalld
[root@pp_colle opt]# setenforce 0

上传文件

[root@pp_colle ~]# cd /opt
[root@pp_colle opt]# ls
apache-tomcat-8.0.36.tar.gz  hbase-create.hbase       pinpoint-collector-1.5.2.war
hbase-1.0.3-bin.tar.gz       jdk-8u112-linux-x64.rpm  pinpoint-web-1.5.2.war

安装JDK

[root@pp_colle opt]# rpm -i jdk-8u112-linux-x64.rpm && rm -rf jdk-8u112-linux-x64.rpm
# 查看是否安装成功
[root@pp_colle opt]# java -version
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)

安装HBase

[root@pp_colle opt]# tar -zxvf hbase-1.0.3-bin.tar.gz && rm -rf hbase-1.0.3-bin.tar.gz

修改Hbase的配置信息

[root@pp_colle opt]# vi hbase-1.0.3/conf/hbase-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_112/  # 27行
[root@pp_colle opt]# vim hbase-1.0.3/conf/hbase-site.xml 
[root@pp_colle opt]# mkdir  /opt/hbase-1.0.3/HBdata
[root@pp_colle opt]# vim hbase-1.0.3/conf/hbase-site.xml # 指定Hbase本地来存储数据
<configuration> 
        hbase.rootdir
        file:///opt/hbase-1.0.3/HBdata
</configuration>

说明:

这里我们指定Hbase是在本地来存储数据,而在生产环境将数据建议存入HDFS中。因此如果HBase需要要使用HDFS存储数据,那么HBase的分布式文件存储系统依赖于hadoop,,就需要安装hadoop。如果HBase是集群部署,则需要使用 Hadoop+HBase+ZooKeeper 搭建分布式集群环境进行hbase集群环境搭建。

启动HBase

[root@pp_colle opt]# ./hbase-1.0.3/bin/start-hbase.sh 
# 查看Hbase是否启动成功,如果启动成功的会看到"HMaster"的进程
[root@pp_colle opt]# jps
14018 Jps
13715 HMaster

初始化Hbase的pinpoint库

# 执行pinpoint提供的Hbase初始化语脚本。
[root@pp_colle opt]# ./hbase-1.0.3/bin/hbase shell /opt/hbase-create.hbase && rm -rf /opt/hbase-create.hbase

测试HBase是否初始化成功

浏览器查看:

http://192.168.1.21:16010/master-status

Pinpoint分布式系统性能监控工具
安装pinpoint-collector

# 创建collector安装目录
[root@pp_colle opt]# mkdir collector-tomcat 
# 因为collector的安装需要Tomcat,所以先安装配置Tomcat
[root@pp_colle opt]# tar -xvf apache-tomcat-8.0.36.tar.gz -C collector-tomcat/
# 备份Tomcat配置文件
[root@pp_colle opt]# cp -p collector-tomcat/apache-tomcat-8.0.36/conf/server.xml{,.bak}
# 修改collector的Tomcat的配置,主要修改端口,避免与pp-web的Tomcat的端口冲突
[root@pp_colle opt]# sed -i 's/port="8005"/port="18005"/g' collector-tomcat/apache-tomcat-8.0.36/conf/server.xml
[root@pp_colle opt]# sed -i 's/port="8080"/port="18080"/g' collector-tomcat/apache-tomcat-8.0.36/conf/server.xml
[root@pp_colle opt]# sed -i 's/port="8443"/port="18443"/g' collector-tomcat/apache-tomcat-8.0.36/conf/server.xml
[root@pp_colle opt]# sed -i 's/port="8009"/port="18009"/g' collector-tomcat/apache-tomcat-8.0.36/conf/server.xml
[root@pp_colle opt]# sed -i 's/redirectPort="8443"/redirectPort="18443"/g' collector-tomcat/apache-tomcat-8.0.36/conf/server.xml
[root@pp_colle opt]# sed -i "s/localhost/`ifconfig ens33 | awk 'NR==2 {print $2}'`/g" collector-tomcat/apache-tomcat-8.0.36/conf/server.xml

# 部署pinpoint-collector.war包
[root@pp_colle opt]# rm -rf collector-tomcat/apache-tomcat-8.0.36/webapps/*
[root@pp_colle opt]# unzip pinpoint-collector-1.5.2.war -d collector-tomcat/apache-tomcat-8.0.36/webapps/ROOT && rm -rf pinpoint-collector-1.5.2.war

# 启动collector的Tomcat
[root@pp_colle opt]# ./collector-tomcat/apache-tomcat-8.0.36/bin/startup.sh 
# 查看日志,是否成功启动
[root@pp_colle opt]# tailf collector-tomcat/apache-tomcat-8.0.36/logs/catalina.out
# 出现 Catalina.start Server startup in 36015 ms 表示成功

安装pinpoint-web

[root@pp_colle opt]# tar -zxvf apache-tomcat-8.0.36.tar.gz -C web-tomcat/ && rm -rf apache-tomcat-8.0.36.tar.gz
# 备份配置文件
[root@pp_colle opt]# cp -p web-tomcat/apache-tomcat-8.0.36/conf/server.xml{,.bak}

# 修改web的Tomcat的配置,主要修改端口,避免与collector的Tomcat的端口冲突。
[root@pp_colle opt]# sed -i 's/port="8005"/port="28005"/g' web-tomcat/apache-tomcat-8.0.36/conf/server.xml
[root@pp_colle opt]# sed -i 's/port="8080"/port="28080"/g' web-tomcat/apache-tomcat-8.0.36/conf/server.xml
[root@pp_colle opt]# sed -i 's/port="8443"/port="28443"/g' web-tomcat/apache-tomcat-8.0.36/conf/server.xml
[root@pp_colle opt]# sed -i 's/port="8009"/port="28009"/g' web-tomcat/apache-tomcat-8.0.36/conf/server.xml
[root@pp_colle opt]# sed -i 's/redirectPort="8443"/redirectPort="28443"/g' web-tomcat/apache-tomcat-8.0.36/conf/server.xml
[root@pp_colle opt]# sed -i "s/localhost/`ifconfig ens33 | awk 'NR==2 {print $2}'`/g" web-tomcat/apache-tomcat-8.0.36/conf/server.xml

# 部署pinpoint-web.war包
[root@pp_colle opt]# rm -rf web-tomcat/apache-tomcat-8.0.36/webapps/*
[root@pp_colle opt]# unzip pinpoint-web-1.5.2.war -d web-tomcat/apache-tomcat-8.0.36/webapps/ROOT && rm -rf pinpoint-web-1.5.2.war
# 启动web的Tomcat
[root@pp_colle opt]# ./web-tomcat/apache-tomcat-8.0.36/bin/startup.sh 
# 查看日志,web的Tocmat是否启动成功
[root@pp_colle opt]# tailf web-tomcat/apache-tomcat-8.0.36/logs/catalina.out 
出现 org.apache.catalina.startup.Catalina.start Server startup in 47134 ms 表示启动成功

测试 web 界面

在浏览器中输入"http://192.168.1.21:28080",就会出现如下主页面:
Pinpoint分布式系统性能监控工具

pp_agent主机配置

关闭防火墙和selinux

[root@pp_agent ~]# systemctl stop firewalld
[root@pp_agent ~]# setenforce 0

上传文件

[root@pp_agent ~]# cd /opt
[root@pp_agent opt]# ls
apache-tomcat-8.0.36.tar.gz  jdk-8u112-linux-x64.rpm  pinpoint-agent-1.5.2.tar.gz  test.war

安装JDK

[root@pp_agent opt]# rpm -i jdk-8u112-linux-x64.rpm && rm -rf jdk-8u112-linux-x64.rpm
# 查看是否安装成功
[root@pp_agent opt]# java -version
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)

配置agent采集器

[root@pp_agent opt]# mkdir agent
[root@pp_agent opt]# tar -zxvf pinpoint-agent-1.5.2.tar.gz -C agent/ && rm -rf pinpoint-agent-1.5.2.tar.gz
# 编辑配置文件
[root@pp_agent opt]# vim agent/pinpoint-agent-1.5.2/pinpoint.config
profiler.collector.ip=192.168.1.21 # 修改IP,指定安装collector的IP

配置模拟的Tomcat测试环境

[root@pp_agent opt]# tar -zxvf apache-tomcat-8.0.36.tar.gz -C Tomcat/ && rm -rf apache-tomcat-8.0.36.tar.gz 
[root@pp_agent opt]# cp -p Tomcat/apache-tomcat-8.0.36/conf/server.xml{,.bak}
[root@pp_agent opt]# sed -i "s/localhost/`ifconfig ens33 | awk 'NR==2 {print $2}'`/g" Tomcat/apache-tomcat-8.0.36/conf/server.xml

# 解压测试用的war包
[root@pp_agent opt]# rm -rf Tomcat/apache-tomcat-8.0.36/webapps/*
[root@pp_agent opt]# unzip test.war -d Tomcat/apache-tomcat-8.0.36/webapps/ROOT && rm -rf test.war 

# 修改tomcat启动文件"catalina.sh",修改这个只要是为了监控该测试环境的Tomcat,为agent采集数据增加探针
[root@pp_agent opt]# vim Tomcat/apache-tomcat-8.0.36/bin/catalina.sh
# 在第20增加以下内容:
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/opt/agent/pinpoint-agent-1.5.2/pinpoint-bootstrap-1.5
.2.jar"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=123456789"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=test_pinpoint"
# 第一行是agent的jar包的绝对路径位置
# 第二行是agent的ID,这个ID是唯一的,自定义只要与其他的项目的ID不重复就行
# 第三行是采集项目的名字,自定义不重复即可

启动Tomcat

[root@pp_agent opt]# ./Tomcat/apache-tomcat-8.0.36/bin/startup.sh
# 查看Tomcat启动日志,是否启动成功
[root@pp_agent opt]# tailf Tomcat/apache-tomcat-8.0.36/logs/catalina.out  # 可以查看日志有无报错信息

测试Tomcat是否启动成功

浏览器访问以下两个网页:
Pinpoint分布式系统性能监控工具

Pinpoint分布式系统性能监控工具
出现如上页面,表示测试环境正常

测试collector是否将数据收集到并在web页面进行展示
Pinpoint分布式系统性能监控工具
可以看到下拉框中,多了一个选项(即为以上配置的agent端的Tomcat,也就是catalina.sh文件中配置的应用名),点击查看

Pinpoint分布式系统性能监控工具
因为访问了5次测试环境页面,所以他显示有5条请求记录,可以在右上角的框查看详情。
Pinpoint分布式系统性能监控工具
Pinpoint分布式系统性能监控工具

上一篇:pinpoint安装部署


下一篇:PinPoint 全链路监控部署