pinpoint1.8.5安裝及使用指南

  • 2019 年 10 月 13 日
  • 筆記

簡介

pinpoint是開源在github上的一款APM監控工具,它是用Java編寫的,用於大規模分散式系統監控。它對性能的影響最小(只增加約3%資源利用率),安裝agent是無侵入式的。

各大APM工具,幾乎都是根據google這篇經典的Dapper論文而來,一定要讀一讀。這裡是它的源文地址:https://research.google.com/pubs/pub36356.html,感謝這位同學的翻譯:http://bigbully.github.io/Dapper-translation/

pinpoint提供了一些功能:

  • 服務映射:通過可視化其組件如何互連來了解任何分散式系統的關聯關係。單擊節點可顯示有關組件的詳細資訊,例如其當前狀態和事務計數。
  • 實時的活躍執行緒數
  • 請求/響應散點圖
  • 調用棧
  • 查看有關應用程式的其他詳細資訊,例如CPU使用率,記憶體/垃圾收集,TPS和JVM參數

整個pinpoint架構分為3部分:pinpoint-collector、pinpoint-agent、pinpoint-webUI。

pinpoint-agent:用來收集單個應用的資訊,並將收集好的應用資訊發送到pinpoint-collector中
pinpoint-collector:用來處理pinpoint-agent發送過來的資訊,並將資訊收集好之後存儲到HBase中
pinpoint-webUI:查找出HBase中的數據並展示

所以我這裡需要準備兩台機器:
10.200.201.xxx:用於安裝pinpoint-collector、pinpoint-webUI、HBase
10.200.201.yyy:用於安裝pinpoint-agent,負責收集應用的資訊

環境安裝

安裝jdk

我這裡用的是rpm包直接安裝的:rpm -ivh jdk-8u171-linux-x64.rpm
安裝好後配置一下JAVA_HOME:

使用vim配置一下環境變數:
vim /etc/profile

export JAVA_HOME=/usr/java/jdk1.8.0_45  export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  export PATH=$PATH:$JAVA_HOME/bin

然後載入一些profile文件:
source /etc/profile

安裝HBase

這裡有個對照圖:

由上面我們可以看到HBase我們需要安裝1.2.x版本的
下載地址:
http://archive.apache.org/dist/hbase/
我這裡下載的是1.2.12版本的。

  1. 將Hbse放到指定目錄
cd /app/install  tar -zxvf hbase-1.2.12-bin.tar.gz
  1. 修改配置資訊
    修改hbase-env.sh
vim /app/install/hbase-1.2.12/conf/hbase-env.sh    #加入JAVA_HOME  export JAVA_HOME=/usr/java/jdk1.8.0_45

修改hbase-site.xml

vim /app/install/hbase-1.2.12/conf/hbase-site.xml    <configuration>          <property>              <name>hbase.rootdir</name>              <value>file:///app/data/hbase</value>          </property>          <property>              <name>hbase.zookeeper.property.dataDir</name>              <value>/app/data/zookeeper</value>          </property>          <property>           <name>hbase.zookeeper.property.clientPort</name>           <value>2181</value>           <description>Property from ZooKeeper'sconfig zoo.cfg. The port at which the clients will connect.           </description>          </property>          <!-- false是單機模式,true是分散式模式  -->          <property>           <name>hbase.cluster.distributed</name>           <value>false</value>          </property>  </configuration>
  1. 啟動HBase
cd /app/install/hbase-1.2.12/bin  ./start-hbase.sh    # 查看Hbase是否啟動成功,如果啟動成功的會看到"HMaster"的進程  [root@localhost bin]# jps  12075 Jps  11784 HMaster
  1. 初始化pinpoint庫
    下載腳本:https://github.com/naver/pinpoint/blob/master/hbase/scripts/hbase-create.hbase
#進入到hbase的bin目錄中  cd /app/install/hbase-1.2.12/bin  #執行腳本  ./bin/hbase shell /app/install/pinpoint/hbase/scripts/hbase-create.hbase    # 執行完了以後,進入Hbase  ./hbase shell    #進入後可以看到Hbase的版本,還有一些相關的資訊  2019-10-12 16:18:28,074 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable  HBase Shell; enter 'help<RETURN>' for list of supported commands.  Type "exit<RETURN>" to leave the HBase Shell  Version 1.2.12, r91d5ec4c4dcd10ceec984c6e663ea82acf353995, Sat Apr  6 15:27:28 CDT 2019    # 輸入"status 'detailed'"可以查看剛才初始化的表,是否存在  hbase(main):002:0> status 'detailed'

也可以登錄web,來查看HBase的數據是否初始化成功
http://10.200.201.xxx:16010/master-status

安裝pinpoint-collector

製作一個tomcat容器,埠號為8081

#將pinpoint-collector的war包丟到Tomcat的webapps目錄下  cp pinpoint-collector-1.8.5.war ../apache-tomcat-8081/webapps/    #將war包名字改一下  mv pinpoint-web-1.8.5.war pp-collector.war    #啟動tomcat  ./bin/startup.sh    # 查看日誌,是否成功啟動  tail -f ../logs/catalina.out    #如果hbase安裝在別的機器下需要修改一下配置  cd /app/install/apache-tomcat-8081  vim webapps/pp-collector/WEB-INF/classes/hbase.properties  #修改hbase的ip和hbase所對應的埠號  hbase.client.host=10.200.201.xxx  hbase.client.port=2181

安裝pinpoint-web

解壓一個tomcat容器,埠號為8080

#將pinpoint-web放到tomcat的webapps容器中  cp pinpoint-web-1.8.5.war  ../apache-tomcat-8080/webapps/    #修改一下war包名  mv pinpoint-web-1.8.5.war pp-web.war    #啟動tomcat  ./bin/startup.sh    # 查看日誌,是否成功啟動  tail -f ../logs/catalina.out    #如果hbase安裝在別的機器下需要修改一下配置  cd /app/install/apache-tomcat-8080  vim webapps/pp-web/WEB-INF/classes/hbase.properties    #修改hbase的ip和hbase所對應的埠號  hbase.client.host=10.200.201.xxx  hbase.client.port=2181

然後可以在瀏覽器中:http://10.200.201.xxx:8080/pp-web/

部署pinpoint-agent採集監控數據

  1. 傳入pinpoint-agent包
    首先將pinpoint-agent-1.8.5.tar.gz傳入到伺服器10.200.201.yyy的/app/install/pinpoint-agent/中

然後執行tar -zxvf pinpoint-agent-1.8.5.tar.gz解壓

  1. 配置pp-agent採集器
cd /app/install/pinpoint-agent  vim pinpoint.config    # 主要修改IP,只需要指定到安裝pp-col的IP就行了,安裝pp-col啟動後,自動就開啟了9994,9995,9996的埠了。這裡就不需要操心了,如果有埠需求,要去pp-col的配置文件("pp-collector/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties")中,修改這些埠  profiler.collector.ip=10.200.201.xxx
  1. 如果監控的是tomcat
# 修改測試項目下的tomcat啟動文件"catalina.sh",修改這個只要是為了監控測試環境的Tomcat,增加探針  vi catalina.sh    # 第一行是pp-agent的jar包位置  # 第二行是agent的ID,這個ID是唯一的,我是用pp + 今天的日期命名的,只要與其他的項目的ID不重複就好了  # 第三行是採集項目的名字,這個名字可以隨便取,只要各個項目不重複就好了  CATALINA_OPTS="$CATALINA_OPTS -javaagent:$AGENT_PATH/pinpoint-bootstrap-$VERSION.jar"  CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=$AGENT_ID"  CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=$APPLICATION_NAME"    # 配置好了。就可以開始監控了,我們啟動測試用的Tomcat的伺服器  cd /data/pp-test/bin/  ./startup.sh    # 查看啟動日誌,確實Tomcat啟動  tail -f ../logs/catalina.out
  1. springboot包部署
    如果是jar包部署,直接在啟動命令加啟動參數:
nohup java -javaagent:/app/install/pinpoint-agent/pinpoint-bootstrap-1.8.5.jar -Dpinpoint.agentId=$AGENT_ID -Dpinpoint.applicationName=$APPLICATION_NAME

功能設置

設置監控

如果按照上面的方法安裝完了之後在進行監控設置的或者用戶設置的時候會報錯的:

所以需要配置一下mysql:
首先需要跑兩個sql腳本:
https://github.com/naver/pinpoint/blob/master/web/src/main/resources/sql/CreateTableStatement-mysql.sql
https://github.com/naver/pinpoint/blob/master/web/src/main/resources/sql/SpringBatchJobRepositorySchema-mysql.sql

然後進入到pinpoint-web的war所在的tomcat的容器中,修改配置文件:WEB-INF/classes/jdbc.properties
並設值mysql的帳號密碼

jdbc.url=jdbc:mysql://localhost:13306/pinpoint?characterEncoding=UTF-8  jdbc.username=admin  jdbc.password=admin

我們可以在application裡面給不同的應用設置不同的提醒規則,具體的提醒規則如下:

SLOW COUNT:發送到應用程式的慢速請求數超過配置的閾值時觸發    SLOW RATE     發送到應用程式的慢速請求的百分比(%)超過配置的閾值時觸發    ERROR COUNT     發送到應用程式的失敗請求數超過配置的閾值時觸發。    ERROR RATE     發送到應用程式的失敗請求的百分比(%)超過配置的閾值時觸發。    TOTAL COUNT     發送到應用程式的所有請求數超過配置的閾值時觸發。    SLOW COUNT TO CALLEE     當應用程式發送的慢速請求數超過配置的閾值時觸發。 您必須在配置UI的「注釋...」框中指定域或地址(IP,埠)       例如)www.naver.com,127.0.0.1:8080    SLOW RATE TO CALLEE     當應用程式發送的慢速請求的百分比(%)超過配置的閾值時觸發。 您必須在配置UI的「注釋...」框中指定域或地址(IP,埠)     ex) www.naver.com, 127.0.0.1:8080    ERROR COUNT TO CALLEE     當應用程式發送的失敗請求數超過配置的閾值時觸發。 您必須在配置UI的「注釋...」框中指定域或地址(IP,埠)     ex) www.naver.com, 127.0.0.1:8080    ERROR RATE TO CALLEE     當應用程式發送的失敗請求的百分比(%)超過配置的閾值時觸發。 您必須在配置UI的「注釋...」框中指定域或地址(IP,埠)     ex) www.naver.com, 127.0.0.1:8080    TOTAL COUNT TO CALLEE     當應用程式發送的所有請求數超過配置的閾值時觸發。 您必須在配置UI的「注釋...」框中指定域或地址(IP,埠)     ex) www.naver.com, 127.0.0.1:8080    HEAP USAGE RATE     當應用程式的堆使用率(%)超過配置的閾值時觸發。    JVM CPU USAGE RATE     當應用程式的CPU使用率(%)超過配置的閾值時觸發。    SYSTEM CPU USAGE RATE     當應用程式的CPU使用率(%)超過配置的閾值時發送警報。    DATASOURCE CONNECTION USAGE RATE     當應用程式的數據源連接使用率(%)超過配置的閾值時觸發。    FILE DESCRIPTOR COUNT     當打開的文件描述符的數量超過配置的閾值時,發送警報。

然後需要在webapps/pp-web/WEB-INF/classes/batch.properties裡面配置一下郵件伺服器的資訊:

pinpoint.url= #pinpoint-web server url  alarm.mail.server.url= #smtp server address  alarm.mail.server.port= #smtp server port  alarm.mail.server.username= #username for smtp server authentication  alarm.mail.server.password= #password for smtp server authentication  alarm.mail.sender.address= #sender's email address    #例如  pinpoint.url=http://pinpoint.com  alarm.mail.server.url=stmp.server.com  alarm.mail.server.port=583  alarm.mail.server.username=pinpoint  alarm.mail.server.password=pinpoint  [email protected]

Tags: