鏈路追蹤自從用了SkyWalking,睡的真香!
本篇文章介紹鏈路追蹤的另外一種解決方案Skywalking,文章目錄如下:
什么是Skywalking?
Skywalking和Spring Cloud Sleuth+ZipKin如何選型?
-
skywalking采用字節(jié)碼增強(qiáng)的技術(shù)實(shí)現(xiàn)代碼無侵入,zipKin代碼侵入性比較高 -
skywalking功能比較豐富,報(bào)表統(tǒng)計(jì),UI界面更加人性化
Skywalking架構(gòu)是怎樣的?
-
上面的Agent:負(fù)責(zé)收集日志數(shù)據(jù),并且傳遞給中間的OAP服務(wù)器 -
中間的OAP:負(fù)責(zé)接收 Agent 發(fā)送的 Tracing 和Metric的數(shù)據(jù)信息,然后進(jìn)行分析(Analysis Core) ,存儲(chǔ)到外部存儲(chǔ)器( Storage ),最終提供查詢( Query )功能。 -
左面的UI:負(fù)責(zé)提供web控制臺(tái),查看鏈路,查看各種指標(biāo),性能等等。 -
右面Storage:負(fù)責(zé)數(shù)據(jù)的存儲(chǔ),支持多種存儲(chǔ)類型。
服務(wù)端如何搭建?
1、下載安裝包
“ 可以按照自己的需要選擇其他版本 ”
-
agent:客戶端需要指定的目錄,其中有一個(gè)jar,就是負(fù)責(zé)和客戶端整合收集日志 -
bin:服務(wù)端啟動(dòng)的腳本 -
config:一些配置文件的目錄 -
logs:oap服務(wù)的日志目錄 -
oap-libs:oap所需的依賴目錄 -
webapp:UI服務(wù)的目錄
2、配置修改
3、啟動(dòng)服務(wù)
-
oap服務(wù):對應(yīng)的啟動(dòng)腳本oapService.bat,Linux下對應(yīng)的后綴是sh -
UI服務(wù):對應(yīng)的啟動(dòng)腳本webappService.bat,Linux下對應(yīng)的后綴是sh
客戶端如何搭建?
-
skywalking-product1001:商品微服務(wù) -
skywalking-order1002:訂單微服務(wù) -
skywalking-gateway1003:網(wǎng)關(guān)微服務(wù)
“ 案例源碼已經(jīng)上傳,關(guān)注公眾號(hào):碼猿技術(shù)專欄,回復(fù)關(guān)鍵詞 9528獲取! ”
-javaagent:E:\springcloud\apache-skywalking-apm-es7-8.7.0\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=skywalking-product-service
-Dskywalking.collector.backend_service=127.0.0.1:11800
-
-javaagent:指定skywalking中的agent中的 skywalking-agent.jar的路徑 -
-Dskywalking.agent.service_name:指定在skywalking中的服務(wù)名稱,一般是微服務(wù)的 spring.application.name -
-Dskywalking.collector.backend_service:指定oap服務(wù)綁定的地址,由于這里是本地,并且oap服務(wù)默認(rèn)的端口是11800,因此只需要配置為 127.0.0.1:11800
java -jar xxx指定,在IDEA中操作如下圖:
“ 注意:agent的jar包路徑不能包含中文,不能有空格,否則運(yùn)行不成功。 ”
數(shù)據(jù)如何持久化?
1、修改配置文件
-
修改默認(rèn)的存儲(chǔ)方式為mysql,如下圖:
-
修改Mysql相關(guān)的信息,比如用戶名、密碼等,如下圖:
2、添加MySQL的jdbc依賴
日志監(jiān)控如何做?
-
log4j:https://skywalking.apache.org/docs/skywalking-java/v8.8.0/en/setup/service-agent/java-agent/application-toolkit-log4j-1.x/ -
log4j2:https://skywalking.apache.org/docs/skywalking-java/v8.8.0/en/setup/service-agent/java-agent/application-toolkit-log4j-2.x/ -
logback:https://skywalking.apache.org/docs/skywalking-java/v8.8.0/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/
1、添加依賴
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>${project.release.version}</version>
</dependency>
2、添加配置文件
logback-spring.xml放在resource目錄下,配置如下圖:
/agent/config/agent.config配置文件末尾添加如下配置:
plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:10.10.10.1}
plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800}
plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}
性能剖析如何做?
/order/list接口,如下:
{GET}/order/list這個(gè)接口上耗費(fèi)了2秒以上,因此選擇這個(gè)接口點(diǎn)擊分析,可以看到詳細(xì)的堆棧信息,如下圖:
監(jiān)控告警如何做?
-
最近3分鐘內(nèi)服務(wù)的平均響應(yīng)時(shí)間超過1秒 -
最近2分鐘服務(wù)成功率低于80% -
最近3分鐘90%服務(wù)響應(yīng)時(shí)間超過1秒 -
最近2分鐘內(nèi)服務(wù)實(shí)例的平均響應(yīng)時(shí)間超過1秒
config/alarm-settings.yml配置文件中,如下圖:
-
POST請求 -
application/json 接收數(shù)據(jù) -
接收的參數(shù)必須是AlarmMessage中指定的參數(shù)。
org.apache.skywalking.oap.server.core.alarm,如下圖:
config/alarm-settings.yml配置文件中添加這個(gè)鉤子,如下圖:
總結(jié)
有道無術(shù),術(shù)可成;有術(shù)無道,止于術(shù)
歡迎大家關(guān)注Java之道公眾號(hào)
好文章,我在看??
