Java Agent 服務(wù)器探針
探針,用來(lái)收集和發(fā)送數(shù)據(jù)到歸集器呢燥。
參考官網(wǎng)給出的幫助 Setup java agent崭添,我們需要使用官方提供的探針為我們達(dá)到監(jiān)控的目的,按照實(shí)際情況我們需要實(shí)現(xiàn)三種部署方式
- IDEA 部署探針
- Java 啟動(dòng)方式部署探針(我們是 Spring Boot 應(yīng)用程序叛氨,需要使用
java -jar
的方式啟動(dòng)應(yīng)用) - Docker 啟動(dòng)方式部署探針(需要做到一次構(gòu)建到處運(yùn)行的持續(xù)集成效果呼渣,本章節(jié)暫不提供解決方案棘伴,到后面的實(shí)戰(zhàn)環(huán)節(jié)再實(shí)現(xiàn))
探針文件在 apache-skywalking-apm-incubating/agent
目錄下
IDEA 部署探針
繼續(xù)之前的案例項(xiàng)目,創(chuàng)建一個(gè)名為 hello-spring-cloud-external-skywalking
的目錄屁置,并將 agent
整個(gè)目錄拷貝進(jìn)來(lái)
修改項(xiàng)目的 VM 運(yùn)行參數(shù)焊夸,點(diǎn)擊菜單欄中的 Run
-> EditConfigurations...
,此處我們以 nacos-provider
項(xiàng)目為例缰犁,修改參數(shù)如下
-javaagent:D:\Workspace\Others\hello-spring-cloud-alibaba\hello-spring-cloud-external-skywalking\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=nacos-provider
-Dskywalking.collector.backend_service=localhost:11800
-
-javaagent
:用于指定探針路徑 -
-Dskywalking.agent.service_name
:用于重寫(xiě)agent/config/agent.config
配置文件中的服務(wù)名 -
-Dskywalking.collector.backend_service
:用于重寫(xiě)agent/config/agent.config
配置文件中的服務(wù)地址
Java 命令行啟動(dòng)方式
java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=nacos-provider -Dskywalking.collector.backend_service=localhost:11800 -jar yourApp.jar
測(cè)試監(jiān)控
啟動(dòng) nacos-provider
項(xiàng)目淳地,通過(guò)觀察日志可以發(fā)現(xiàn),已經(jīng)成功加載探針
注: 如果無(wú)法訪問(wèn)到帅容,請(qǐng)重啟skywalking容器
訪問(wèn)之前寫(xiě)好的接口 http://localhost:8081/echo/hi 之后再刷新 SkyWalking Web UI,你會(huì)發(fā)現(xiàn) Service 與 Endpoint 已經(jīng)成功檢測(cè)到了
至此伍伤,表示 SkyWalking 鏈路追蹤配置成功
SkyWalking Trace 監(jiān)控
SkyWalking 通過(guò)業(yè)務(wù)調(diào)用監(jiān)控進(jìn)行依賴分析并徘,提供給我們了服務(wù)之間的服務(wù)調(diào)用拓?fù)潢P(guān)系、以及針對(duì)每個(gè) Endpoint 的 Trace 記錄扰魂。
調(diào)用鏈路監(jiān)控
點(diǎn)擊 Trace
菜單麦乞,進(jìn)入追蹤頁(yè)
點(diǎn)擊 Trace ID
展開(kāi)詳細(xì)信息
上圖展示了一次正常的響應(yīng),總響應(yīng)時(shí)間為 185ms
共有一個(gè) Span(基本工作單元劝评,表示一次完整的請(qǐng)求姐直,包含響應(yīng),即請(qǐng)求并響應(yīng))
Span /echo/{message}
說(shuō)明如下:
- Duration:響應(yīng)時(shí)間 185 毫秒
- component:組件類型為 SpringMVC
- url:請(qǐng)求地址
- http.method:請(qǐng)求類型
服務(wù)性能指標(biāo)監(jiān)控
點(diǎn)擊 Service
菜單蒋畜,進(jìn)入服務(wù)性能指標(biāo)監(jiān)控頁(yè)
選擇希望監(jiān)控的服務(wù)
- Avg SLA: 服務(wù)可用性(主要是通過(guò)請(qǐng)求成功與失敗次數(shù)來(lái)計(jì)算)
- CPM: 每分鐘調(diào)用次數(shù)
- Avg Response Time: 平均響應(yīng)時(shí)間
點(diǎn)擊 More Server Details...
還可以查看詳細(xì)信息
上圖中展示了服務(wù)在一定時(shí)間范圍內(nèi)的相關(guān)數(shù)據(jù)声畏,包括:
- 服務(wù)可用性指標(biāo) SLA
- 每分鐘平均響應(yīng)數(shù)
- 平均響應(yīng)時(shí)間
- 服務(wù)進(jìn)程 PID
- 服務(wù)所在物理機(jī)的 IP、Host姻成、OS
- 運(yùn)行時(shí) CPU 使用率
- 運(yùn)行時(shí)堆內(nèi)存使用率
- 運(yùn)行時(shí)非堆內(nèi)存使用率
- GC 情況
附A: 配置文件詳解
/config/agent.config
# 當(dāng)前的應(yīng)用編碼插龄,最終會(huì)顯示在webui上。
# 建議一個(gè)應(yīng)用的多個(gè)實(shí)例科展,使用有相同的application_code均牢。請(qǐng)使用英文
agent.application_code=Your_ApplicationName
# 每三秒采樣的Trace數(shù)量
# 默認(rèn)為負(fù)數(shù),代表在保證不超過(guò)內(nèi)存Buffer區(qū)的前提下才睹,采集所有的Trace
# agent.sample_n_per_3_secs=-1
# 設(shè)置需要忽略的請(qǐng)求地址
# 默認(rèn)配置如下
# agent.ignore_suffix=.jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg
# 探針調(diào)試開(kāi)關(guān)徘跪,如果設(shè)置為true,探針會(huì)將所有操作字節(jié)碼的類輸出到/debugging目錄下
# skywalking團(tuán)隊(duì)可能在調(diào)試琅攘,需要此文件
# agent.is_open_debugging_class = true
# 對(duì)應(yīng)Collector的config/application.yml配置文件中 agent_server/jetty/port 配置內(nèi)容
# 例如:
# 單節(jié)點(diǎn)配置:SERVERS="127.0.0.1:8080"
# 集群配置:SERVERS="10.2.45.126:8080,10.2.45.127:7600"
collector.servers=127.0.0.1:10800
# 日志文件名稱前綴
logging.file_name=skywalking-agent.log
# 日志文件最大大小
# 如果超過(guò)此大小垮庐,則會(huì)生成新文件。
# 默認(rèn)為300M
logging.max_file_size=314572800
# 日志級(jí)別乎澄,默認(rèn)為DEBUG突硝。
logging.level=DEBUG