? ? ? ?Pinpoint是用于大規(guī)模分布式系統(tǒng)的APM工具。它是在Dapper(一個(gè)由Google構(gòu)建的分布式系統(tǒng)跟蹤基礎(chǔ)架構(gòu))之后構(gòu)建的,為開發(fā)人員提供有關(guān)復(fù)雜分布式系統(tǒng)行為的更多信息。
開源地址:https://github.com/naver/pinpoint
? ? ? ?Pinpoint作為一款非常優(yōu)秀的開源APM監(jiān)控平臺,和其他開源系統(tǒng)一樣,最繁瑣的應(yīng)該是部署,但是如果你能通過Docker的方式進(jìn)行部署,我們就可以感受到一鍵部署的便捷:
Docker鏡像地址:https://hub.docker.com/u/pinpointdocker
Docker-compose地址:https://github.com/naver/pinpoint-docker
一、部署前準(zhǔn)備
在Centos7系統(tǒng)上安裝Docker和docker-compose
yum update -y
yum install docker epel-release python-pip -y
pip install --upgrade pip
pip install docker-compose
對于docker-compose也可以安裝指定版本(比如最新版的,因?yàn)椴煌姹局С植煌袷降膁ocker-compose文件)
yum update -y nss curl libcurl
sudo curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
為了加速docker鏡像pull速度,可以修改daemon.json
# cat /etc/docker/daemon.json
{"registry-mirrors": ["http://579fe187.m.daocloud.io","https://pee6w651.mirror.aliyuncs.com"]}
啟動(dòng)docker
systemctl enable docker
systemctl start docker
二、安裝Pinpoint
按照官網(wǎng)的docker部署方式:https://github.com/naver/pinpoint-docker(部署前把宿主機(jī)防火墻都關(guān)了)
git clone https://github.com/naver/pinpoint-docker.git
cd Pinpoint-Docker
docker-compose pull && docker-compose up -d
直接這樣部署可能會(huì)有問題,比如我們只在一臺宿主機(jī)上部署,我們可以用git命令下載,或是用curl命令先下載zip再解壓:
sudo curl -L https://github.com/naver/pinpoint-docker/archive/master.zip -o /opt/pinpoint-docker.zip
cd /opt
upzip pinpoint-docker.zip -d .
cd /opt/pinpoint-docker-master
編輯docker-compose.yml,將多個(gè)節(jié)點(diǎn)的zookeeper改成一個(gè)節(jié)點(diǎn)(注釋掉不需要的):
#zookeepers
? zoo1:
? ? image: zookeeper:3.4
? ? restart: always
? ? #hostname: zoo1
? ? hostname: 172.17.2.84
? ? environment:
? ? ? ZOO_MY_ID: 1
? ? ? #ZOO_SERVERS: server.1=0.0.0.0:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
? ? ? ZOO_SERVERS: server.1=0.0.0.0:2888:3888
? ? networks:
? ? ? - pinpoint
? #zoo2:
? #? image: zookeeper:3.4
? #? restart: always
? #? hostname: zoo2
? #? environment:
? #? ? ZOO_MY_ID: 2
? #? ? ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=0.0.0.0:2888:3888 server.3=zoo3:2888:3888
? #? networks:
? #? ? - pinpoint
? #zoo3:
? #? image: zookeeper:3.4
? #? restart: always
? #? hostname: zoo3
? #? environment:
? #? ? ZOO_MY_ID: 3
? #? ? ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=0.0.0.0:2888:3888
? #? networks:
? #? ? - pinpoint
如還有問題,請修改相對路徑為絕對路徑
...
volumes:
? ? ? - /home/pinpoint/hbase
? ? ? - /home/pinpoint/zookeeper
...
?基本我在根目錄下,運(yùn)行docker-compose up -d 就能完成docker集群的部署(在后臺進(jìn)行),如果是想看清部署的整個(gè)過程,直接用命令:
docker-compose up
啟動(dòng)完后容器:
用Rancher查看能比較直觀:
?安裝完后,就可以連接http://172.17.2.84:8079查看,除了一個(gè)quickapp應(yīng)用,什么也沒有:
三、部署監(jiān)控代理
為了監(jiān)控我們的應(yīng)用(tomcat、Java、weblogic等),就需要部署監(jiān)控代理,這個(gè)非常簡單,首先是去官網(wǎng)下載同版本的agent包:https://github.com/naver/pinpoint/releases/download/1.8.0/pinpoint-agent-1.8.0.tar.gz
將agent包解壓到應(yīng)用(以tomcat為例)目錄下:
tar zxvf pinpoint-agent-1.8.0.tar.gz -C pinpoint-agent
修改配置文件pinpoint.config,將collector的ip配置為監(jiān)控收集服務(wù)pinpoint-collector的IP:
然后修改tomcat的啟動(dòng)文件catalina.sh,添加javaagent配置參數(shù)(這一點(diǎn)和其他商用APM監(jiān)控工具一樣):
JAVA_OPTS="$JAVA_OPTS -javaagent:/usr/apache-tomcat-7.0.54/pinpoint-agent/pinpoint-bootstrap-1.8.0.jar"
JAVA_OPTS="$JAVA_OPTS -Dpinpoint.agentId=APM-104"
JAVA_OPTS="$JAVA_OPTS -Dpinpoint.applicationName=tomcat7-test"
除了javaagent參數(shù),還有agentId參數(shù)(應(yīng)用的唯一標(biāo)識,不允許和其他應(yīng)用重名),和applicationName(應(yīng)用名)。
配完后,就可以重啟tomcat了,那么在界面上就能看到新追加的應(yīng)用了:
?對于微服務(wù)的jar包也能進(jìn)行監(jiān)控:
java -javaagent:/mypath/pinpoint-agent/pinpoint-bootstrap-1.8.0.jar -Dpinpoint.agentId=APM-104 -Dpinpoint.applicationName=tomcat7-test -jar myapp.jar
四、使用手冊
1. 查看調(diào)用關(guān)系
1.1 訪問地址
http://yoururl
1.2 選擇應(yīng)用
默認(rèn)兩層展示
調(diào)整層級深度:
示例為前端調(diào)用4層追溯,后端調(diào)用4層追溯(4層為最深層級)
結(jié)果展示:
?
在圖片內(nèi)按鼠標(biāo)滾輪調(diào)整圖片大小。
連線上數(shù)字為調(diào)用次數(shù)
選擇更多時(shí)間范圍(默認(rèn)最新5分鐘)
2.?查看調(diào)用鏈
鼠標(biāo)按住右鍵,選中圖中區(qū)域,松開右鍵,則展示選中時(shí)間段調(diào)用層級
展示結(jié)果:
默認(rèn)按耗時(shí)排序
選中某一調(diào)用,展示詳細(xì)調(diào)用鏈及耗時(shí)
選中timelinetab可查看耗時(shí)情況:
3. 查看錯(cuò)誤信息
3.1 選擇錯(cuò)誤應(yīng)用
機(jī)器應(yīng)用拋出錯(cuò)誤,機(jī)器應(yīng)用會(huì)標(biāo)紅
3.2 查看詳細(xì)信息
選中應(yīng)用,去除成功多選按鈕選中對勾,按住鼠標(biāo)右鍵,選中紅點(diǎn)范圍,松開鼠標(biāo)右鍵,即可查看詳細(xì)錯(cuò)誤信息:
?
結(jié)果為:
選中某次錯(cuò)誤請求,可在詳細(xì)列表內(nèi)找到詳細(xì)錯(cuò)誤信息
4. 查看應(yīng)用情況
選中某一應(yīng)用
單擊inspector
選中某一機(jī)器id,時(shí)間段,可展示jvm詳細(xì)信息
其中內(nèi)容包含:Jvm內(nèi)存使用情況,Jvm永久帶使用占用空間,Cpu使用情況,每秒處理的消息數(shù)(S標(biāo)識操作系統(tǒng),U標(biāo)識此應(yīng)用),Jvm線程情況,單請求平均響應(yīng)時(shí)間等。