Pinpoint環(huán)境搭建
- 依賴
- 系統(tǒng)-Centos7
- 存儲-hbase
- 環(huán)境-java8
- 服務(wù)器-tomcat
- 其他-Python3、PHP7、Nginx
- 搭建pinpoint環(huán)境
- 下載安裝 hbase
- 啟動hbase,注意查看啟動日志,確保啟動成功
- 下載pinpoint的release版本
下載其中的pinpoint-agent-1.8.5.tar.gz、pinpoint-collector-1.8.5.war、pinpoint-web-1.8.5.war - 下載pinpoint源碼,創(chuàng)建hbase表
git clone https://github.com/naver/pinpoint.git cd pinpoint/hbase/scripts $HBASE_HOME/bin/hbase shell hbase-create.hbase
- 啟動pinpoint-collector
- 復(fù)制tomcat項目,到自己的項目目錄(如
/home/work/pinpoint/collector
) - 將
pinpoint/collector/webapps
下的內(nèi)容全部刪除,并在該路徑下創(chuàng)建ROOT目錄。將2.3步下載的pinpoint-collector-1.8.5.war解壓到ROOT目錄下。
修改pinpoint/collector/webapps/ROOT/WEB-INF/classes/
下的hbase.properties
中的hbase的地址和端口號,如果hbase默認啟動,則不用修改(localhost:2181)
修改pinpoint/collector/conf/server.xml
中綁定的端口號(如果沒有沖突,則不用修改)
修改pinpoint/collector/webapps/ROOT/WEB-INF/classes
下的pinpoint-collector.properties
中三個地址和端口- collector.receiver.base.port(默認9994)
- collector.receiver.stat.udp(默認9995)
- collector.receiver.span.udp(默認9996)
- 啟動pinpoint-collector
pinpoint/collector/bin/startup.sh
,查看輸出日志log/catalina.out
是否成功啟動
- 復(fù)制tomcat項目,到自己的項目目錄(如
- 啟動pinpoint-web
- 復(fù)制tomcat項目,到自己的項目目錄(如
/home/work/pinpoint/web
) - 將
pinpoint/web/webapps
下的內(nèi)容全部刪除,并在該路徑下創(chuàng)建ROOT目錄。將2.3步下載的pinpoint-web-1.8.5.war解壓到ROOT目錄下。
修改pinpoint/collector/webapps/ROOT/WEB-INF/classes/
下的hbase.properties
中的hbase的地址和端口號,如果hbase默認啟動,則不用修改(localhost:2181)
修改pinpoint/collector/conf/server.xml
中綁定的端口號(如果沒有沖突,則不用修改) - 啟動pinpoint-web
pinpoint/web/bin/startup.sh
,查看輸出日志log/catalina.out
是否成功啟動
- 復(fù)制tomcat項目,到自己的項目目錄(如
- 對外開放部署的幾個端口號(iptables添加)
- pinpoint-web頁面訪問端口(8080)
- pinpoint-collecror中的三個端口號(9994,9995,9996)
-
訪問127.0.0.1:8080,即可看到pinpoint頁面
image.png
配置PHP連接pinpoint服務(wù)
-
安裝pinpoint_php擴展
git clone https://github.com/naver/pinpoint-c-agent.git cd pinpoint-c-agent phpize ./configure make && make install # 在php.ini中添加以下配置 extension=pinpoint_php.so pinpoint_php.CollectorHost=unix:/tmp/collector-agent.sock pinpoint_php.SendSpanTimeOutMs=0 # 0 is recommanded pinpoint_php.TraceLimit=-1
-
啟動php-agent
- 進去
pinpoint-c-agent/collector-agent
- 修改
conf/collector.conf
- 幾個地址和端口號(在配置collector中的那三個),
- Address(對應(yīng)php.ini中的那個pinpoint_php.CollectorHost,這里不需要加“unix:”前綴,php.ini必須添加“unix:”前綴)
- 添加AgentID和ApplicationName配置,標志唯一的application
- 執(zhí)行命令
python3 -m venv env source env/bin/activate pip3 install -r requirements.txt export COLLECTOR_CONFIG=/下載的pinpoint-c-agent目錄/collector-agent/conf/collector.conf python3 run.py(查看是否報錯,查看之前127.0.0.1:8080中是否有了剛啟動的application)
- 注意權(quán)限問題(所有操作可以盡量使用php的用戶操作)
- 進去
-
配置項目laravel中提交到pinpoint
- composer.json中添加如下內(nèi)容
{ "config": { "secure-http": false }, "require": { "eeliu/php_simple_aop": "v0.1" }, "autoload": { "psr-4": { "Plugins\\": "app/Support/Plugins/" } }, "repositories": [ {"packagist": false}, { "type": "composer", "url": "https://mirrors.aliyun.com/composer" }, { "type": "vcs", "url": "http://10.77.3.130/CentralPlatformService/php_simple_aop.git" } ] }
- composer update更新依賴
- 將之前下載的
pinpoint-c-agent/PHP/pinpoint_php_example/Plugins
文件夾復(fù)制到laravel項目的app/Support
下邊 - 修改
app\Support\Plugins\NextSpanPlugin.php
中的@hook,添加自己要監(jiān)控的方法 - 訪問自己的項目,看pinpoint-web頁面是否有數(shù)據(jù)(如果沒有,開啟php.ini中的log_errors,配置error_log,然后查看錯誤日志)
-
容易出問題的點
- php.ini中的地址一定要加"unix:"前綴
- 啟動
python3 run.py
會生成/tmp//tmp/collector-agent.sock
(自己配置的名稱),php會讀取這個東西,如果python3 run.py
是root用戶啟動的,那么很可能php-fpm沒有權(quán)限使用這個sock,解決方法是su php
切換到php用戶,然后在python3 run.py
- 檢查端口號是否開放,尤其是9994,9995,9996
- 檢查代碼中@hook后邊加的方法名稱是否正確,否則容易在web頁面顯示'no data'