pinpoint是開源在github上的一款APM監控工具,它是用Java編寫的,用於大規模分佈式系統監控。它對性能的影響最小(只增長約3%資源利用率),安裝agent是無侵入式的。html
各大APM工具,幾乎都是根據google這篇經典的Dapper論文而來,必定要讀一讀。這裏是它的源文地址:research.google.com/pubs/pub363…java
pinpoint提供了一些功能:mysql
整個pinpoint架構分爲3部分:pinpoint-collector、pinpoint-agent、pinpoint-webUI。linux
pinpoint-agent:用來收集單個應用的信息,並將收集好的應用信息發送到pinpoint-collector中 pinpoint-collector:用來處理pinpoint-agent發送過來的信息,並將信息收集好以後存儲到HBase中 pinpoint-webUI:查找出HBase中的數據並展現git
因此我這裏須要準備兩臺機器: 10.200.201.xxx:用於安裝pinpoint-collector、pinpoint-webUI、HBase 10.200.201.yyy:用於安裝pinpoint-agent,負責收集應用的信息github
我這裏用的是rpm包直接安裝的:rpm -ivh jdk-8u171-linux-x64.rpm 安裝好後配置一下JAVA_HOME:web
使用vim配置一下環境變量: vim /etc/profilespring
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/profilesql
這裏有個對照圖: shell
由上面咱們能夠看到HBase咱們須要安裝1.2.x版本的 下載地址: archive.apache.org/dist/hbase/ 我這裏下載的是1.2.12版本的。
cd /app/install
tar -zxvf hbase-1.2.12-bin.tar.gz
複製代碼
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>
複製代碼
cd /app/install/hbase-1.2.12/bin
./start-hbase.sh
# 查看Hbase是否啓動成功,若是啓動成功的會看到"HMaster"的進程
[root@localhost bin]# jps
12075 Jps
11784 HMaster
複製代碼
#進入到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的數據是否初始化成功 10.200.201.xxx:16010/master-stat…
製做一個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
複製代碼
解壓一個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
複製代碼
而後能夠在瀏覽器中:10.200.201.xxx:8080/pp-web/
而後執行tar -zxvf pinpoint-agent-1.8.5.tar.gz解壓
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
複製代碼
# 修改測試項目下的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
複製代碼
nohup java -javaagent:/app/install/pinpoint-agent/pinpoint-bootstrap-1.8.5.jar -Dpinpoint.agentId=$AGENT_ID -Dpinpoint.applicationName=$APPLICATION_NAME
複製代碼
若是按照上面的方法安裝完了以後在進行監控設置的或者用戶設置的時候會報錯的:
因此須要配置一下mysql: 首先須要跑兩個sql腳本: github.com/naver/pinpo… github.com/naver/pinpo…
而後進入到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
alarm.mail.sender.address=pinpoint_operator@pinpoint.com
複製代碼