APM监控Pinpoint( 以集成springboot项目为例 )-搭建hadoop单机版+hbase单机版+pinpoint整合springboot

Pinpoint是什么?

Pinpoint是一款全链路分析工具,提供了无侵入式的调用链监控、方法执行详情查看、应用状态信息监控等功能。基于GoogleDapper论文进行的实现,与另一款开源的全链路分析工具Zipkin类似,但相比Zipkin提供了无侵入式、代码维度的监控等更多的特性。 Pinpoint支持的功能比较丰富,可以支持如下几种功能:

  • 服务拓扑图:对整个系统中应用的调用关系进行了可视化的展示,单击某个服务节点,可以显示该节点的详细信息,比如当前节点状态、请求数量等
  • 实时活跃线程图:监控应用内活跃线程的执行情况,对应用的线程执行性能可以有比较直观的了解
  • 请求响应散点图:以时间维度进行请求计数和响应时间的展示,拖过拖动图表可以选择对应的请求查看执行的详细情况
  • 请求调用栈查看:对分布式环境中每个请求提供了代码维度的可见性,可以在页面中查看请求针对到代码维度的执行详情,帮助查找请求的瓶颈和故障原因。
  • 应用状态、机器状态检查:通过这个功能可以查看相关应用程序的其他的一些详细信息,比如CPU使用情况,内存状态、垃圾收集状态,TPS和JVM信息等参数。

架构组成

Pinpoint 主要由 3 个组件外加 Hbase 数据库组成,三个组件分别为:Agent、Collector 和 Web UI。

  • Agent组件:用于收集应用端监控数据,无侵入式,只需要在启动命令中加入部分参数即可
  • Collector组件:数据收集模块,接收Agent发送过来的监控数据,并存储到HBase
  • WebUI:监控展示模块,展示系统调用关系、调用详情、应用状态等,并支持报警等功能
  •  

部署准备

定义准备两台虚拟机 此处我用

192.168.225.136 (部署 hadoop hbase Collector WebUI 均为单机)

192.168.225.137(部署 Agent以及应用)

安装文档地址:

链接:https://pan.baidu.com/s/1ggIr8QwfMyE01KtMJBw3RQ 
提取码:xhgf 

 

第一步-hadoop

## hadoop2.7.3在centos7上部署安装(单机版)
## 首先下载 hadoop2.7.3.tar.gz
## ====================================== 安装jdk ====================================== ##
## 安装之前首先保证Jdk安装成功,未安装可建Linux上安装Jdk1.8


## ====================================== 这里我们首先设置ssh免密登录 ====================================== ##

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

chmod 0600 ~/.ssh/authorized_keys

## ====================================== 解压压缩文件 ====================================== ##


## 选择安装路径,我选择的安装目录为 /usr/hadoop
## 切换到/usr

cd /usr
## 创建hadoop文件夹

mkdir hadoop 

cd /usr/hadoop

## 将hadoop-2.7.3.tar.gz 拷贝到此文件下
## 解压
tar -zxvf hadoop-2.7.3.tar.gz


## ====================================== 配置hadoop环境变量 ====================================== ##
vim /etc/profile
## 在最后加入 
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin  
## 生效配置文件
source /etc/profile


## ====================================== 修改hadoop配置 ====================================== ##

## ====================================== 配置hadoop-env.sh ====================================== ##
## 修改/usr/hadoop/hadoop-2.7.3/etc/hadoop/hadoop-env.sh 文件
cd /usr/hadoop/hadoop-2.7.3/etc/hadoop
vi hadoop-env.sh

## 修改env的Java配置
export JAVA_HOME=/data/application/java/jdk1.8


## ====================================== 配置core-site.xml====================================== ##
## 修改/usr/hadoop/hadoop-2.7.3/etc/hadoop/core-site.xml 文件

cd /usr/hadoop/hadoop-2.7.3/etc/hadoop
vi core-site.xml

## 将configuration修改为以下格式

    
    
        fs.defaultFS
        hdfs://192.168.225.136:9000
    
    
    
        hadoop.tmp.dir
        file:///usr/hadoop/tmp
    

## 其中的IP:192.168.225.131为虚拟机ip,不能设置为localhost,如果用localhost,后面在windows上用saprk连接服务器(虚拟机)上的hive会报异常(win读取的配置也是localhost,这样localhost就为win本地ip了~
## 也可以给ip加个映射,不过因为单机的就没加)。


## ====================================== 配置hdfs-site.xml====================================== ##
## 修改/usr/hadoop/hadoop2.7.3/etc/hadoop/hdfs-site.xml 文件

cd /usr/hadoop/hadoop-2.7.3/etc/hadoop
vi hdfs-site.xml

## 将configuration修改为以下格式

    
        dfs.name.dir
        file:///usr/hadoop/hdfs/name
		namenode上存储hdfs名字空间元数据  
    
    
        dfs.data.dir
        file:///usr/hadoop/hdfs/data
		datanode上数据块的物理存储位置
    
	
    
        dfs.replication
        1
    


## 配置yarn
## ====================================== 配置mapred-site.xml====================================== ##

cd /usr/hadoop/hadoop-2.7.3/etc/hadoop

## 这个是需要你复制一个模版文件出来的
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
## 将configuration修改为以下格式



  
        mapreduce.framework.name
        yarn
  


## ====================================== 配置yarn-site.xm====================================== ##
##修改/usr/hadoop/hadoop-2.7.3/etc/hadoop/yarn-site.xml文件

cd /usr/hadoop/hadoop-2.7.3/etc/hadoop
vi yarn-site.xml

## 将configuration修改为以下格式



 
    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    



## ====================================== 启动====================================== ##
## 格式化namenode(是对namenode进行初始化)
hadoop namenode -format

## 注意如下就是成功了 (下面的成功提示是在网上找的,安装是忘记cp了,出现SHUTDOWN_MSG不是报错,真正的错误是出现Error信息)
## 注意如下就是成功了 (下面的成功提示是在网上找的,安装是忘记cp了,出现SHUTDOWN_MSG不是报错,真正的错误是出现Error信息)
## 注意如下就是成功了 (下面的成功提示是在网上找的,安装是忘记cp了,出现SHUTDOWN_MSG不是报错,真正的错误是出现Error信息)
19/01/24 22:45:24 INFO common.Storage: Storage directory /usr/local/hadoop-2.8.5/tmp/dfs/name has been successfully formatted.
19/01/24 22:45:25 INFO namenode.FSImageFormatProtobuf: Saving image file /usr/local/hadoop-2.8.5/tmp/dfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
19/01/24 22:45:25 INFO namenode.FSImageFormatProtobuf: Image file /usr/local/hadoop-2.8.5/tmp/dfs/name/current/fsimage.ckpt_0000000000000000000 of size 321 bytes saved in 0 seconds.
19/01/24 22:45:25 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
19/01/24 22:45:25 INFO util.ExitUtil: Exiting with status 0
19/01/24 22:45:25 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at cluster-1/192.168.79.131


## 初始化成功后,可正式启动了 
cd /usr/hadoop/hadoop-2.7.3/sbin

## 先启动HDFS
./start-dfs.sh
## 再启动YARN
./start-yarn.sh
##如果没有设置免密登录这里需要yes三次并输入你的root密码三次

## jps验证是否成功
[root@chenxm sbin]# jps
2722 NodeManager
2312 SecondaryNameNode
2153 DataNode
2457 ResourceManager
2762 Jps
2029 NameNode

## 关闭防火墙 
systemctl stop firewalld
systemctl disable firewalld.service #禁止firewall开机启动

## 通过浏览器访问 
http://ip地址:50070 (HDFS管理界面) http://192.168.225.136:50070
http://ip地址:8088 (yarn管理界面)	 http://192.168.225.136:8088

## 注意在sbin下面有个start-all.sh和stop-all.sh,这是启动和停止所有服务,这样更加快捷
## 注意在sbin下面有个start-all.sh和stop-all.sh,这是启动和停止所有服务,这样更加快捷
## 注意在sbin下面有个start-all.sh和stop-all.sh,这是启动和停止所有服务,这样更加快捷

启动之后再次验证是否启动成功

至此,基本的搭建已经完成

第二步-hbase

## hbase-1.2.9在centos7上部署安装(单机版)
## 首先下载 hbase-1.2.9-bin.tar.gz
## ====================================== 安装jdk ====================================== ##
## 安装之前首先保证Jdk安装成功,未安装可建Linux上安装Jdk1.8


## ====================================== 解压压缩文件 ====================================== ##


## 选择安装路径,我选择的安装目录为 /usr/hbase
## 切换打/usr

cd /usr
## 创建hbase文件夹

mkdir hbase

cd /usr/hbase

## 将hbase-1.2.9-bin.tar.gz 拷贝到此文件下
## 解压
tar -zxvf hbase-1.2.9-bin.tar.gz

## ====================================== 配置hbase环境变量 ====================================== ##
vim /etc/profile
## 在最后加入 
export HBASE_HOME=/usr/hbase/hbase-1.2.9
export PATH=$PATH:$HBASE_HOME/bin
## 生效配置文件
source /etc/profile
## 查看hbase版本
hbase version

## ====================================== 修改hbase配置 ====================================== ##

## ====================================== 配置hbase-env.sh ====================================== ##
## 修改/usr/hbase/hbase-1.2.9/conf/hbase-env.sh 文件
cd /usr/hbase/hbase-1.2.9/conf
vi hbase-env.sh

## 修改env的Java配置,如果用到hadoop,一定要把hadoop先安装,在下面加入下面的参数
export JAVA_HOME=/data/application/java/jdk1.8
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
export HBASE_HOME=/usr/hbase/hbase-1.2.9
export HBASE_CLASSPATH=/usr/hadoop/hadoop-2.7.3/etc/hadoop


## ====================================== 配置hbase-site.xml ====================================== ##
## 修改/usr/hbase/hbase-1.2.9/conf/hbase-site.xml 文件
cd /usr/hbase/hbase-1.2.9/conf
vi hbase-site.xml

## 将configuration修改为以下格式

	
	  
		hbase.rootdir  
		hdfs://192.168.225.136:9000/hbase  
	  
	
	  
		hbase.zookeeper.property.clientPort  
		2181  
	 
	
	  
		hbase.cluster.distributed  
		false  
	
	
	  
		zookeeper.session.timeout  
		120000  
	


## 启动hbase,首选切换到hbase的bin文件夹,执行start-hbase.sh 
./start-hbase.sh 

## 启动成功后,可通过Jps来查看是否安装成功
[root@chenxm bin]# jps
2722 NodeManager
31683 Bootstrap
29398 HMaster
31462 Bootstrap
2312 SecondaryNameNode
39688 Jps
2153 DataNode
2457 ResourceManager
2029 NameNode
## 看到HMaster表示启动成功
## 或者通过浏览器访问,首先用 ss -ntl 命令查看端口16010是否启动 ,如果端口启动成功,则可以通过浏览器访问web查看是否成功
http://192.168.225.136:16010




第三步-pinpoint

## 在搭建pinpoint之前,首先先介绍一下pinpoint

pinpoint是开源在github上的一款APM监控工具,它是用Java编写的,用于大规模分布式系统监控。
它对性能的影响最小(只增加约3%资源利用率),安装agent是无侵入式的,
只需要在被测试的程序启动文件中加上3句话,打下探针,就可以监控整套程序了

APM (Application Performance Management/应用性能管理)工具 

架构组成
Pinpoint 主要由 3 个组件外加 Hbase 数据库组成,三个组件分别为:Agent、Collector 和 Web UI。
Agent组件:用于收集应用端监控数据,无侵入式,只需要在启动命令中加入部分参数即可
Collector组件:数据收集模块,接收Agent发送过来的监控数据,并存储到HBase
WebUI:监控展示模块,展示系统调用关系、调用详情、应用状态等,并支持报警等功能

环境准备:linux服务器3台 作为agent 探针部署地点

	ip			  容器		agent版本
192.168.225.130	springboot	1.8.0

环境准备:linux服务器1台 作为pinpoint-web以及pinpoint-col 部署地点

	ip			容器		pinpoint版本
192.168.225.131	tomcat		  1.8.0



## 我们首先安装Collector组件和WebUI
## 在搭建之前,我们首先要去执行pinpoint提供的一个初始化hbase语句,hbase-create.hbase
## 将hbase-create.hbase 拷贝到/usr/hbase文件夹下 

## 在切换到 /usr/hbase/hbase-1.2.9/bin路径下
cd /usr/hbase/hbase-1.2.9/bin

## 执行初始化语句 
 ./hbase shell /usr/hbase/hbase-create.hbase
 
## 执行成功后,可通过hbase的web页面查看是否初始化成功,也可进入hbase
./hbase shell
## 查看表是否都创建成功
hbase(main):001:0> list


##表创建成功后,开始安装collector组件
##因为我是将组建安装 /data/application/pinpoint文件夹下的 ,如果没有则创建文件夹
cd /data/application/pinpoint
## 在此文件夹下面,上传两个tomcat,用来启动Collector和WebUI
## 解压tomcat
tar -zxvf apache-tomcat-8.5.28.tar.gz
mv apache-tomcat-8.5.28 tomcat-col

tar -zxvf apache-tomcat-8.5.28.tar.gz
mv apache-tomcat-8.5.28 tomcat-web

## tomcat解压成功后 
##分别将 pinpoint-collector-1.8.0.war放到 /data/application/pinpoint/tomcat-col/webapps文件夹下面
##分别将 pinpoint-web-1.8.0.war放到 /data/application/pinpoint/tomcat-web/webapps文件夹下面


##==================================修改tomcat-col和tomcat-web配置====================================##

# 修改tomcat-col的Tomcat的配置,主要修改端口,避免与tomcat-web的Tomcat的端口冲突。我在原本默认的端口前都加了1,下面是替换的shell命令。
#【注意】最后一条是将tomcat的私有ip开放,需要将localhost替换成本机的ip,我本机的网卡是默认的,如果你本机的网卡不是eth0,需要进行相关的修改。或者直接用"vi"进去,修改localhost
## 切换到conf文件下面
cd /data/application/pinpoint/tomcat-col/conf
sed -i 's/port="8005"/port="18005"/g' server.xml
sed -i 's/port="8080"/port="18080"/g' server.xml
sed -i 's/port="8443"/port="18443"/g' server.xml
sed -i 's/port="8009"/port="18009"/g' server.xml
sed -i 's/redirectPort="8443"/redirectPort="18443"/g' server.xml
## 直接进入server.xml 修改host,将localhost换成ip
 

        
        

        
        



##启动tomcat
cd /data/application/pinpoint/tomcat-col/bin
./startup.sh

##查看日志 
tail -f ../logs/catalina.out



# 修改tomcat-web的Tomcat的配置,主要修改端口,避免与tomcat-col的Tomcat的端口冲突。我在原本默认的端口前都加了2,下面是替换的shell命令。
#【注意】最后一条是将tomcat的私有ip开放,需要将localhost替换成本机的ip,我本机的网卡是默认的,如果你本机的网卡不是eth0,需要进行相关的修改。或者直接用"vi"进去,修改localhost
## 切换到conf文件下面
cd /data/application/pinpoint/tomcat-col/conf
sed -i 's/port="8005"/port="28005"/g' server.xml
sed -i 's/port="8080"/port="28080"/g' server.xml
sed -i 's/port="8443"/port="28443"/g' server.xml
sed -i 's/port="8009"/port="28009"/g' server.xml
sed -i 's/redirectPort="8443"/redirectPort="28443"/g' server.xml
## 直接进入server.xml 修改host,将localhost换成ip
 

        
        

        
        



##启动tomcat
cd /data/application/pinpoint/tomcat-web/bin
./startup.sh

##查看日志 
tail -f ../logs/catalina.out


## 如果都启动成功,可通过浏览器访问 
http://192.168.225.131:28080/pinpoint-web-1.8.0




##==================================springboot整合pinpoint-agent-1.8.0===================================##
##因为我的应用是部署到192.168.225.130上面的所以我们需要加agent放在该服务器上面 
##将pinpoint-agent-1.8.0.tar.gz放在 /data/application/pinpoint
##解压pinpoint-agent-1.8.0.tar.gz
tar -zxvf pinpoint-agent-1.8.0.tar.gz

## 修改 pinpoint.config文件配置
vi pinpoint.config
将 profiler.collector.ip=192.168.225.131修改为部署 collector组建的ip地址 ,下面的9994,9995,9996端口在collector启动时就自动开启,所以不用修改
profiler.collector.ip=192.168.225.131

## 修改完agent配置文件以后,只需要在springboot的启动文件中加入 
-javaagent:/data/application/pinpoint/pinpoint-bootstrap-1.8.0.jar -Dpinpoint.agentId=luckdraw -Dpinpoint.applicationName=luckdraw
## 让启动的脚本变为,具体的启动脚本,根据自己的定,集成agent只需要加入上面的配置
java -javaagent:/data/application/pinpoint/pinpoint-bootstrap-1.8.0.jar -Dpinpoint.agentId=luckdraw -Dpinpoint.applicationName=luckdraw -jar ${JVM_OPTION} -Djava.io.tmpdir="$CACHE_DIR" $RUN_DIR/luckdraw-0.0.1-SNAPSHOT.jar -d"$RUN_DIR">>$RUN_DIR/log &

##具体的pinpoint-bootstrap-1.8.0.jar地址是自己放置agnet的位置,所以根据自己的地址,自己进行相应的修改
##-Dpinpoint.agentId:表示你的agentId,全局唯一
##-Dpinpoint.applicationName:应用名


## 用自己的脚本启动自己的项目,在到http://192.168.225.131:28080/pinpoint-web-1.8.0刷新,就可看到自己的项目在pinpoint中监控起来了 








 

你可能感兴趣的:(apm)