監控平臺SkyWalking9入門實踐

簡便快速的完成對分佈式系統的監控;

一、業務背景

微服務作爲當前系統架構的主流選型,雖然可以應對複雜的業務場景,但是隨着業務擴展,微服務架構本身的複雜度也會膨脹,對於一些核心的業務流程,其請求鏈路會涉及到多個業務服務,少則三五個,多則十幾個都很常見:

真實的業務場景遠比圖解複雜,在這種模式下當請求發生故障時,或者進行優化時,需要分析鏈路性能,追蹤調用鏈路,排查和解決鏈路故障;

要完成上述流程,需要對請求的鏈路有完整監控,並且採集和分析各個環節的數據,這樣才能清晰的理解系統的行爲信息,比如耗時分析,故障原因發現,從而進行優化和解決;能實現這種能力的組件很多,這裏來看看基於SkyWalking9的實踐方式;

二、組件原理

Skywalking是APM規範的國產開源分佈式鏈路追蹤系統,APM(Application-Performance-Management)即應用性能管理,支持對SpringCloud微服務集成,並且無代碼層面的侵入:

結構體系

業務機制

SpringCloud:分佈式系統中的服務,啓動時配置代理即可;

Agent:以探針的方式進行請求鏈路的數據採集,並向管理服務上報;

OAP-Service:接收數據,完成數據的存儲和展示;

Storage:數據的存儲層,支持ElasticSearch、Mysql、H2多種方式;

UI界面:數據的可視化展示界面;

工作流程,服務通過探針的方式接入數據採集的功能,之後請求鏈路的相關處理行爲會上報到OAP服務中,進行數據的聚合管理和分析,並存儲在持久層,然後可以通過UI界面進行可視化呈現;

三、安裝部署

1、版本描述

skywalking在之前的舊版本中,apm與agent是在一個包中的,在9.0的版本中是需要分開下載的;agent包下載解壓之後,也將其放到apm包下面維護:

  • skywalking-apm-9.1.0.tar.gz
  • skywalking-java-agent-8.10.0.tgz

2、配置存儲方式

Skywalking數據存儲的組件有多種選型方式,這裏方便本地調試,就選擇MySQL數據庫,在生產環境中通常選擇ElasticSearch組件;

配置文件:config/application.yml

storage:
  selector: ${SW_STORAGE:mysql}
mysql:
  properties:
    jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest?rewriteBatchedStatements=true"}
    dataSource.user: ${SW_DATA_SOURCE_USER:username}
    dataSource.password: ${SW_DATA_SOURCE_PASSWORD:password}

需要注意的是,要在本地的MySQL中新建swtest數據庫,採用latin1字符編碼,可以避免索引長度的問題,表的創建是自動的,然後需要在包中添加MySQL依賴;

3、啓動與停止

  • 啓動oap服務:sh bin/oapService.sh
  • 啓動UI界面:sh bin/webappService.sh
  • 服務停止命令:jps查看,kill相關編號;

UI界面服務默認是8080端口,如果存在佔用問題,可以修改:webapp/webapp.yml文件,更換端口;啓動完成後訪問LocalIP:port即可;

4、服務集成

在本地存在gatewayfacadeaccount,三個服務,案例圍繞account服務中的請求展開,由於涉及網關服務,還需要添加相關插件的依賴;

optional-plugins可選插件目錄中的兩個網關的依賴包,複製到plugins插件目錄下;

在服務啓動類中添加agent配置,如果在生產環境中,通常會統一在腳本中設置,由於在本地環境演示,基於IDEA工具進行管理;

-javaagent:本地路徑/agent/skywalking-agent.jar -Dskywalking.agent.service_name=gateway
-javaagent:本地路徑/agent/skywalking-agent.jar -Dskywalking.agent.service_name=facade
-javaagent:本地路徑/agent/skywalking-agent.jar -Dskywalking.agent.service_name=account

這樣全部的配置就完成了,依次啓動skywalking相關服務,與這裏配置的三個微服務,下面再來看看功能細節;

四、功能細節

1、服務監控

相關服務啓動完成後,訪問skywalking界面,主頁加載的即上述配置的三個微服務,這樣說明整個流程是正常的,點擊服務名稱可以查看服務相關的細節指標;

2、拓補結構圖

請求通過gateway網關服務,經過facade門面服務,到達account業務服務,完成一次調用後,查看請求的拓補結構圖(即Topology一欄);

可以清晰的看到請求的路由鏈路,以及相關服務訪問的數據庫地址,對於微服務架構中的複雜接口來說,藉助該拓補模型,既可以快速理解業務邏輯,同時在出具文檔時可以節省很多畫圖時間;

3、鏈路跟蹤

上面只是請求的拓補結構圖,在實際應用中還是更側重鏈路跟蹤,查看account服務請求鏈路(即Trace一欄);

skywalking組件對於開發來說,最常用的就是該功能,這裏採集了請求鏈路上的各個節點,以及執行的耗時分析,點擊相關節點可以查看詳細信息,針對異常請求同樣可以採集到異常信息的描述;

這樣可以極大的提升問題排查的效率,尤其對於那種路由十多個服務的業務邏輯;

4、數據庫監控

雖然在整個配置中沒有顯式的添加對MySQL的監控,但是skywalking依舊可以實現對服務中的數據庫監控,對於這些指標細節不過多描述,可以自行查閱文檔;

本篇文章只是站在開發的角度,總結skywalking的應用方式,並未涉及過多的細節原理,其它強大的功能設計,對於開發來說同樣值得參考。

五、源碼參考

應用倉庫:
https://gitee.com/cicadasmile/butte-flyer-parent

組件封裝:
https://gitee.com/cicadasmile/butte-frame-parent
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章