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修改爲以下格式
<configuration>
    <!-- 指定HDFS老大(namenode)的通信地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://192.168.225.136:9000</value>
    </property>
    <!-- 指定hadoop運行時產生文件的存儲路徑 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:///usr/hadoop/tmp</value>
    </property>
</configuration>
## 其中的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修改爲以下格式
<configuration>
    <property>
        <name>dfs.name.dir</name>
        <value>file:///usr/hadoop/hdfs/name</value>
		<description>namenode上存儲hdfs名字空間元數據 </description> 
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>file:///usr/hadoop/hdfs/data</value>
		<description>datanode上數據塊的物理存儲位置</description>
    </property>
	<!-- 設置hdfs副本數量 -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

## 配置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修改爲以下格式

<configuration>
<!-- 指定mr運行在yarn上 -->
  <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
  </property>
</configuration>

## ====================================== 配置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修改爲以下格式
<configuration>

<!-- Site specific YARN configuration properties -->
 <!-- reducer取數據的方式是mapreduce_shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>


## ====================================== 啓動====================================== ##
## 格式化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修改爲以下格式
<configuration>
	<!-- 這個目錄是 RegionServer 的共享目錄,用來持久化 HBase 特別注意的是 hbase.rootdir 裏面的 HDFS 地址是要跟 Hadoop 的 core-site.xml 裏面的 fs.defaultFS 的 HDFS 的 IP 地址或者域名、端口必須一致。 -->
	<property>  
		<name>hbase.rootdir</name>  
		<value>hdfs://192.168.225.136:9000/hbase</value>  
	</property>  
	<!-- 指定zookeeper端口 -->
	<property>  
		<name>hbase.zookeeper.property.clientPort</name>  
		<value>2181</value>  
	</property> 
	<!-- HBase 的運行模式。爲 false 表示單機模式,爲 true 表示分佈式模式。若爲 false,HBase 和 ZooKeeper 會運行在同一個 JVM 中  默認值爲 false -->
	<property>  
		<name>hbase.cluster.distributed</name>  
		<value>false</value>  
	</property>
	<!--ZooKeeper 會話超時。Hbase 把這個值傳遞改 zk 集羣,向它推薦一個會話的最大超時時間。單位是毫秒  默認: 180000 -->
	<property>  
		<name>zookeeper.session.timeout</name>  
		<value>120000</value>  
	</property>
</configuration>

## 啓動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
 <Host name="192.168.225.131"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>

##啓動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
 <Host name="192.168.225.131"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>

##啓動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中監控起來了 








 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章