詳解Java中的pinpoint1.8.5安裝及使用指南
pinpoint1.8.5安裝及使用指南
簡介
pinpoint是開源在github上的一款A(yù)PM監(jiān)控工具,它是用Java編寫的,用于大規(guī)模分布式系統(tǒng)監(jiān)控。它對性能的影響最?。ㄖ辉黾蛹s3%資源利用率),安裝agent是無侵入式的。
各大APM工具,幾乎都是根據(jù)google這篇經(jīng)典的Dapper論文而來,一定要讀一讀。這里是它的源文地址:https://research.google.com/pubs/pub36356.html,感謝這位同學(xué)的翻譯:http://bigbully.github.io/Dapper-translation/
pinpoint提供了一些功能:
服務(wù)映射:通過可視化其組件如何互連來了解任何分布式系統(tǒng)的關(guān)聯(lián)關(guān)系。單擊節(jié)點(diǎn)可顯示有關(guān)組件的詳細(xì)信息,例如其當(dāng)前狀態(tài)和事務(wù)計(jì)數(shù)。
實(shí)時的活躍線程數(shù)
請求/響應(yīng)散點(diǎn)圖
調(diào)用棧
查看有關(guān)應(yīng)用程序的其他詳細(xì)信息,例如CPU使用率,內(nèi)存/垃圾收集,TPS和JVM參數(shù)
整個pinpoint架構(gòu)分為3部分:pinpoint-collector、pinpoint-agent、pinpoint-webUI。
pinpoint-agent:用來收集單個應(yīng)用的信息,并將收集好的應(yīng)用信息發(fā)送到pinpoint-collector中
pinpoint-collector:用來處理pinpoint-agent發(fā)送過來的信息,并將信息收集好之后存儲到HBase中
pinpoint-webUI:查找出HBase中的數(shù)據(jù)并展示
所以我這里需要準(zhǔn)備兩臺機(jī)器:
10.200.201.xxx:用于安裝pinpoint-collector、pinpoint-webUI、HBase
10.200.201.yyy:用于安裝pinpoint-agent,負(fù)責(zé)收集應(yīng)用的信息
環(huán)境安裝
安裝jdk
我這里用的是rpm包直接安裝的:rpm -ivh jdk-8u171-linux-x64.rpm
安裝好后配置一下JAVA_HOME:
使用vim配置一下環(huán)境變量:
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版本的。
將Hbse放到指定目錄
cd /app/install tar -zxvf hbase-1.2.12-bin.tar.gz
修改配置信息
修改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是單機(jī)模式,true是分布式模式 --> <property> <name>hbase.cluster.distributed</name> <value>false</value> </property> </configuration>
啟動HBase
cd /app/install/hbase-1.2.12/bin ./start-hbase.sh # 查看Hbase是否啟動成功,如果啟動成功的會看到"HMaster"的進(jìn)程 [root@localhost bin]# jps 12075 Jps 11784 HMaster
初始化pinpoint庫
下載腳本:https://github.com/naver/pinpoint/blob/master/hbase/scripts/hbase-create.hbase
#進(jìn)入到hbase的bin目錄中 cd /app/install/hbase-1.2.12/bin #執(zhí)行腳本 ./bin/hbase shell /app/install/pinpoint/hbase/scripts/hbase-create.hbase # 執(zhí)行完了以后,進(jìn)入Hbase ./hbase shell #進(jìn)入后可以看到Hbase的版本,還有一些相關(guān)的信息 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的數(shù)據(jù)是否初始化成功
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安裝在別的機(jī)器下需要修改一下配置 cd /app/install/apache-tomcat-8081 vim webapps/pp-collector/WEB-INF/classes/hbase.properties #修改hbase的ip和hbase所對應(yīng)的端口號 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安裝在別的機(jī)器下需要修改一下配置 cd /app/install/apache-tomcat-8080 vim webapps/pp-web/WEB-INF/classes/hbase.properties #修改hbase的ip和hbase所對應(yīng)的端口號 hbase.client.host=10.200.201.xxx hbase.client.port=2181
然后可以在瀏覽器中:http://10.200.201.xxx:8080/pp-web/
部署pinpoint-agent采集監(jiān)控數(shù)據(jù)
傳入pinpoint-agent包
首先將pinpoint-agent-1.8.5.tar.gz
傳入到服務(wù)器10.200.201.yyy的/app/install/pinpoint-agent/中
然后執(zhí)行tar -zxvf pinpoint-agent-1.8.5.tar.gz解壓
配置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 如果監(jiān)控的是tomcat # 修改測試項(xiàng)目下的tomcat啟動文件"catalina.sh",修改這個只要是為了監(jiān)控測試環(huán)境的Tomcat,增加探針 vi catalina.sh # 第一行是pp-agent的jar包位置 # 第二行是agent的ID,這個ID是唯一的,我是用pp + 今天的日期命名的,只要與其他的項(xiàng)目的ID不重復(fù)就好了 # 第三行是采集項(xiàng)目的名字,這個名字可以隨便取,只要各個項(xiàng)目不重復(fù)就好了 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" # 配置好了。就可以開始監(jiān)控了,我們啟動測試用的Tomcat的服務(wù)器 cd /data/pp-test/bin/ ./startup.sh # 查看啟動日志,確實(shí)Tomcat啟動 tail -f ../logs/catalina.out
springboot包部署
如果是jar包部署,直接在啟動命令加啟動參數(shù):
nohup java -javaagent:/app/install/pinpoint-agent/pinpoint-bootstrap-1.8.5.jar -Dpinpoint.agentId=$AGENT_ID -Dpinpoint.applicationName=$APPLICATION_NAME
功能設(shè)置
設(shè)置監(jiān)控
如果按照上面的方法安裝完了之后在進(jìn)行監(jiān)控設(shè)置的或者用戶設(shè)置的時候會報錯的:
所以需要配置一下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
然后進(jìn)入到pinpoint-web的war所在的tomcat的容器中,修改配置文件:WEB-INF/classes/jdbc.properties
并設(shè)值mysql的賬號密碼
jdbc.url=jdbc:mysql://localhost:13306/pinpoint?characterEncoding=UTF-8 jdbc.username=admin jdbc.password=admin
我們可以在application里面給不同的應(yīng)用設(shè)置不同的提醒規(guī)則,具體的提醒規(guī)則如下:
SLOW COUNT:發(fā)送到應(yīng)用程序的慢速請求數(shù)超過配置的閾值時觸發(fā)
SLOW RATE
發(fā)送到應(yīng)用程序的慢速請求的百分比(%)超過配置的閾值時觸發(fā)
ERROR COUNT
發(fā)送到應(yīng)用程序的失敗請求數(shù)超過配置的閾值時觸發(fā)。
ERROR RATE
發(fā)送到應(yīng)用程序的失敗請求的百分比(%)超過配置的閾值時觸發(fā)。
TOTAL COUNT
發(fā)送到應(yīng)用程序的所有請求數(shù)超過配置的閾值時觸發(fā)。
SLOW COUNT TO CALLEE
當(dāng)應(yīng)用程序發(fā)送的慢速請求數(shù)超過配置的閾值時觸發(fā)。 您必須在配置UI的“注釋...”框中指定域或地址(IP,端口)
例如)www.naver.com,127.0.0.1:8080
SLOW RATE TO CALLEE
當(dāng)應(yīng)用程序發(fā)送的慢速請求的百分比(%)超過配置的閾值時觸發(fā)。 您必須在配置UI的“注釋...”框中指定域或地址(IP,端口)
ex) www.naver.com, 127.0.0.1:8080
ERROR COUNT TO CALLEE
當(dāng)應(yīng)用程序發(fā)送的失敗請求數(shù)超過配置的閾值時觸發(fā)。 您必須在配置UI的“注釋...”框中指定域或地址(IP,端口)
ex) www.naver.com, 127.0.0.1:8080
ERROR RATE TO CALLEE
當(dāng)應(yīng)用程序發(fā)送的失敗請求的百分比(%)超過配置的閾值時觸發(fā)。 您必須在配置UI的“注釋...”框中指定域或地址(IP,端口)
ex) www.naver.com, 127.0.0.1:8080
TOTAL COUNT TO CALLEE
當(dāng)應(yīng)用程序發(fā)送的所有請求數(shù)超過配置的閾值時觸發(fā)。 您必須在配置UI的“注釋...”框中指定域或地址(IP,端口)
ex) www.naver.com, 127.0.0.1:8080
HEAP USAGE RATE
當(dāng)應(yīng)用程序的堆使用率(%)超過配置的閾值時觸發(fā)。
JVM CPU USAGE RATE
當(dāng)應(yīng)用程序的CPU使用率(%)超過配置的閾值時觸發(fā)。
SYSTEM CPU USAGE RATE
當(dāng)應(yīng)用程序的CPU使用率(%)超過配置的閾值時發(fā)送警報。
DATASOURCE CONNECTION USAGE RATE
當(dāng)應(yīng)用程序的數(shù)據(jù)源連接使用率(%)超過配置的閾值時觸發(fā)。
FILE DESCRIPTOR COUNT
當(dāng)打開的文件描述符的數(shù)量超過配置的閾值時,發(fā)送警報。
然后需要在webapps/pp-web/WEB-INF/classes/batch.properties里面配置一下郵件服務(wù)器的信息:
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 alarm.mail.sender.address=pinpoint_operator@pinpoint.com
總結(jié)
以上所述是小編給大家介紹的pinpoint1.8.5安裝及使用指南,希望對大家有所幫助!
相關(guān)文章
Spring中ApplicationContextAware的使用方法詳解
ApplicationContextAware?通過它Spring容器會自動把上下文環(huán)境對象調(diào)用ApplicationContextAware接口中的setApplicationContext方法,這篇文章主要介紹了Spring中ApplicationContextAware的作用,需要的朋友可以參考下2023-03-03RxJava2.x+ReTrofit2.x多線程下載文件的示例代碼
本篇文章主要介紹了RxJava2.x+ReTrofit2.x多線程下載文件的示例代碼,具有一定的參考價值,有興趣的可以了解一下2017-09-09為什么Spring官方推薦的@Transational還能導(dǎo)致生產(chǎn)事故
在Spring中進(jìn)行事務(wù)管理非常簡單,只需要在方法上加上注解@Transactional,那么為什么Spring官方推薦的@Transational還能導(dǎo)致生產(chǎn)事故,本文就詳細(xì)的介紹一下2021-11-11mybatis使用foreach查詢不出結(jié)果也不報錯的問題
這篇文章主要介紹了mybatis使用foreach查詢不出結(jié)果也不報錯的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03IntelliJ IDEA中如何構(gòu)建Spring Boot的項(xiàng)目
這篇文章主要介紹了IntelliJ IDEA中如何構(gòu)建Spring Boot的項(xiàng)目問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07Java連接MySQL數(shù)據(jù)庫實(shí)例
這篇文章介紹了Java連接MySQL數(shù)據(jù)庫實(shí)例的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04通過JDBC連接oracle數(shù)據(jù)庫的十大技巧
通過JDBC連接oracle數(shù)據(jù)庫的十大技巧...2006-12-12java利用多線程和Socket實(shí)現(xiàn)猜拳游戲
這篇文章主要為大家詳細(xì)介紹了java利用多線程和Socket實(shí)現(xiàn)猜拳游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-08-08