寫這篇文章出發(fā)點(diǎn)是因?yàn)橛⑷荆覈L試了Pinpoint
這樣的APM
發(fā)現(xiàn)阴孟,我部署后根本拿不到相關(guān)的數(shù)據(jù),而且網(wǎng)上的參考資料税迷,基本上沒有價值永丝,都是抄襲官網(wǎng)的,我也查看了Pinpoint
官方文檔也不知道怎么樣解決箭养,我的問題是Pinpoint agent(1.8.0)
添加到了tomcat
中慕嚷,在web
界面就只識別了tomcat
,至于里面的數(shù)據(jù)就沒有獲取到。(據(jù)說是從1.6版本后喝检,改了相關(guān)通訊交互方式嗅辣,直到現(xiàn)在我還是沒有找到解決方案。)
因?yàn)橛龅竭@樣的困難挠说,所以轉(zhuǎn)而選取同類型的APM-Skywalking
來進(jìn)行研究澡谭。
目標(biāo)
其實(shí)換過來思考,無論采用什么樣的APM來做應(yīng)用性能監(jiān)控主要都是想解決以下問題:
- 主動分布式鏈路追蹤
- 應(yīng)用級別性能監(jiān)控(jvm等)
- 低侵入
- 容易二次開發(fā)相關(guān)插件
- 對相關(guān)服務(wù)器性能占比較小
選型
方案 | cat | zipkin | Pinpoint | SkyWalking |
---|---|---|---|---|
依賴 | Java 6 7 8损俭、Maven 3+ MySQL 5.6 5.7蛙奖、Linux 2.6+ Hadoop可選 | Java 6,7杆兵,8 Maven3.2+ RabbitMQ | Java 6雁仲,7,8 Maven3+ Hbase0.94+ | Java 6琐脏,7攒砖,8 Maven3.0+ Nodejs Zookeeper Elasticsearch |
實(shí)現(xiàn)方 式 | 代碼埋點(diǎn)(攔截器,注解日裙,過濾器等) | 攔截請求吹艇,發(fā)送(HTTP,mq)數(shù)據(jù)至zipkin服務(wù) | Java探針昂拂,字節(jié)碼增強(qiáng) | Java探針受神,字節(jié)碼增強(qiáng) |
存儲 | Mysql , Hdfs | in-memory , Mysql 政钟, Cassandra , Elasticsearch | HBase | Elasticsearch , H2 |
jvm監(jiān)控 | 不支持 | 不支持 | 支持 | 支持 |
trace查詢 | 支持 | 支持 | 需要二次開發(fā) | 支持 |
侵入 | 高樟结,需要埋點(diǎn) | 高养交,需要開發(fā) | 低 | 低 |
部署成本 | 中 | 中 | 較高 | 低 |
針對業(yè)務(wù)情況,主要重點(diǎn)關(guān)注Pinpoint
和SkyWalking
,由于Pinpoint
我沒有調(diào)通瓢宦,進(jìn)而研究SkyWalking
碎连。
APM-Skywalking
Skywalking是國人-吳晟大佬個人開源的項(xiàng)目,并且被搜錄到了Apache基金會當(dāng)中持續(xù)開源驮履。
官方github地址:https://github.com/apache/incubator-skywalking
希望看到文章覺得不錯幫大佬點(diǎn)亮下小星星呀
官方體驗(yàn)地址:http://106.75.237.45:8080/
借用官方的原理圖
SkyWalking是一個開源的APM系統(tǒng)鱼辙,包括監(jiān)控,跟蹤玫镐,診斷Cloud Native架構(gòu)中分布式系統(tǒng)的功能倒戏。核心功能如下。
- 服務(wù)恐似,服務(wù)實(shí)例杜跷,端點(diǎn)指標(biāo)分析
- 根本原因分析
- 服務(wù)拓?fù)鋱D分析
- 服務(wù),服務(wù)實(shí)例和端點(diǎn)依賴性分析
- 檢測到緩慢的服務(wù)和端點(diǎn)
- 性能優(yōu)化
- 分布式跟蹤和上下文傳播
- 報警
截至到目前,Skywalking已經(jīng)發(fā)布了6.0.0-α版本葛闷,從這個版本開始已經(jīng)內(nèi)置了H2數(shù)據(jù)憋槐,并且先比5.0重構(gòu)了后端內(nèi)核,應(yīng)該算是比較大的改變淑趾。
下載頁面:http://skywalking.apache.org/downloads/
簡單搭建
根據(jù)情況選擇適合的解壓包阳仔,進(jìn)行解壓。(我下載的是windows的zip)
解壓后
其中agent文件夾是探針,包含整個目錄扣泊,請不要改變目錄結(jié)構(gòu)
+-- agent
+-- activations
apm-toolkit-log4j-1.x-activation.jar
apm-toolkit-log4j-2.x-activation.jar
apm-toolkit-logback-1.x-activation.jar
...
+-- config
agent.config
+-- plugins
apm-dubbo-plugin.jar
apm-feign-default-http-9.x.jar
apm-httpClient-4.x-plugin.jar
.....
skywalking-agent.jar
- 所有插件都在/plugins文件夾中近范。當(dāng)插件jar在那里時它是活動的。刪除插件jar旷赖,它被禁用顺又。
- 默認(rèn)日志輸出文件夾是/logs。
- 配置文件在/config文件夾中等孵。
Java代理安裝
Linux Tomcat 7, Tomcat 8
在 tomcat/bin/catalina.sh.
第一行中添加
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/skywalking-agent/skywalking-agent.jar"; export CATALINA_OPTS
Windows Tomcat 7, Tomcat 8
在tomcat/bin/catalina.bat.
第一行添加
set "CATALINA_OPTS=-javaagent:/path/to/skywalking-agent/skywalking-agent.jar"
JAR
運(yùn)行jar包稚照,需要添加-javaagent
參數(shù)來進(jìn)行啟動
java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -jar yourApp.jar
當(dāng)然更多java代理請參考官方文檔
我本地的示例
配置agent/config
配置agent.application_code=xxl-job
為自己的應(yīng)用名
后端和UI
SkyWalking后端分發(fā)包包括以下部分
-
bin / cmd
腳本,在/bin
文件夾中俯萌。包括用于后端服務(wù)器和UI啟動的啟動linux shell
和Windows cmd
的啟動腳本果录。 - 后端配置,在
/config
文件夾中咐熙。包括后臺的設(shè)置文件弱恒,這些文件application.yml
,log4j.xml
和alarm-settings.yml
棋恼。大多數(shù)打開的設(shè)置都在這些文件中返弹。 - 后端庫,在
/oap-libs
文件夾中爪飘。后端的所有jar
文件都在其中义起。
Webapp env
,在webapp
文件夾中师崎。UI前端jar文件位于此處及其webapp.yml
設(shè)置文件中默终。
快速開始
要求:JDK8
使用bin/startup.sh
(或cmd)在默認(rèn)設(shè)置中啟動后端和UI
存儲,默認(rèn)使用H2犁罩,為了確保齐蔽,不需要進(jìn)一步部署。
后端偵聽
0.0.0.0/11800
gRPC API和0.0.0.0/12800
http rest API床估。在Java含滴,.NetCore,Node.js丐巫,Istio代理/探測器中蛙吏,將gRPC服務(wù)地址設(shè)置為ip/host:11800
源哩。(ip / host是后端所在的位置)UI偵聽
8080
端口并請求127.0.0.1/12800
執(zhí)行GraphQL查詢。
分布式部署后端和UI
所有本機(jī)代理和探測器(基于語言或網(wǎng)狀探測器)都使用gRPC服務(wù)(core/default/gRPC*in application.yml)將數(shù)據(jù)報告給后端鸦做。此外励烦,支持JSON格式的jetty服務(wù)。
UI使用GraphQL(HTTP)查詢來訪問Jetty服務(wù)(core/default/rest*in application.yml)中的后端泼诱。
后端設(shè)置文檔參考
UI設(shè)置
啟動腳本也在/bin/webappService.sh(.bat)
中
UI的設(shè)置文件 webapp/webapp.yml
中坛掠。它由三部分組成。
1治筒、服務(wù)啟動端口
2屉栓、連接后端的配置
3、設(shè)置用戶名耸袜,密碼
server:
port: 8080
collector:
path: /graphql
ribbon:
ReadTimeout: 10000
# Point to all backend's restHost:restPort, split by ,
listOfServers: 10.2.34.1:12800,10.2.34.2:12800
security:
user:
# username
admin:
# password
password: admin
常見問題解答
https://github.com/apache/incubator-skywalking/tree/master/docs/en/FAQ