文章目录
一、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 应用来做采样)
Web 页面效果:
三、部署
目标:
在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-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",就会出现如下主页面:
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是否启动成功
浏览器访问以下两个网页:
出现如上页面,表示测试环境正常
测试collector是否将数据收集到并在web页面进行展示
可以看到下拉框中,多了一个选项(即为以上配置的agent端的Tomcat,也就是catalina.sh文件中配置的应用名),点击查看
因为访问了5次测试环境页面,所以他显示有5条请求记录,可以在右上角的框查看详情。