一. 簡介
SkyWalking 是一個開源可觀察性平臺,用于收集、分析、聚合和可視化來自服務和云原生基礎設施的資料,支持分布式追蹤、性能指標分析、應用和服務依賴分析等;它是一種現代 APM,專為云原生、基于容器的分布式系統而設計,
Rainbond是一個開源的云原生應用管理平臺,使用簡單,不需要懂容器和Kubernetes,支持管理多個Kubernetes集群,提供企業級應用的全生命周期管理,功能包括應用開發環境、應用市場、微服務架構、應用持續交付、應用運維、應用級多云管理等,
本文整合的目標要達成,運行在Rainbond上的應用,通過開啟Rainbond的SkyWalking插件,自動對接SkyWalking Server,靈活開啟APM,不需要時關閉插件,實作即插即用的APM,
二. 整合架構
SkyWalking對服務進行監控時服需要在被監控服務中啟用agent服務,而SkyWalking agent需要配置到應用的啟動命令,雖然對應用代碼無侵入,但配置程序需要侵入應用,Rainbond通過插件實作對應用的無侵入,將SkyWalking的agent制作成Rainbond的 初始化型別插件,在應用容器啟動之前將agent的jar包拷貝到應用容器,應用容器就能加載agent并連接SkyWalking Server,整個程序對應用容器無侵入,且拓展性強,對接其他APM也可以用類似方式,使用用戶通過替換插件實作對接不同的APM工具,
下圖展示了在Rainbond中使用SkyWalking對應用進行監控的結構

三. Agent插件實作原理
Rainbond插件體系是相對于Rainbond應用模型的一部分,插件主要用來實作應用容器擴展運維能力,由于運維工具的實作有較大的共性,因此插件本身可以被復用,插件必須系結到應用容器時才具有運行時狀態,用以實作一種運維能力,比如性能分析插件、網路治理插件、初始化型別插件,
具有運行時的插件的運行環境與所系結的組件從以下幾個方面保持一致:
- 網路空間 這個一個至關重要的特性,網路空間一致使插件可以對組件網路流量進行旁路監聽和攔截,設定組件本地域名決議等,
- 存盤持久化空間 這個特性使得插件與組件之間可以通過持久化目錄進行檔案交換,
- 環境變數 這個特性使得插件可以讀取組件的環境變數,
SkyWalking與Rainbond融合的程序中,我們使用到了初始化型別插件,顧名思義這是一個在應用容器啟動前能夠進行初始化動作的的插件,其基本原理是利用 Kubernetes 的 init容器 實作的,Pod能夠包含多個容器,應用運行在這些容器里面,同時Pod也能夠有一個或者多個先于應用容器啟動的init容器,只有init容器運行成功后才會運行應用容器,在Rainbond中開通了該型別插件的組件會在應用容器啟動之前運行插件中已定義的任務直至完成,所以只需定義在應用容器啟動前,使用初始化型別容器將agent所需資料拷貝至對應目錄下,這樣后續服務則可以直接使用這些資料,
四. 通過Rainbond一鍵安裝SkyWalking
我們已將SkyWalking制作為應用并發布至應用市場,用戶可基于開源應用商店一鍵安裝,
- 安裝 Rainbond;
- 在開源應用商店搜索SkyWalking,點擊安裝即可一鍵安裝;

3.安裝完成,后續可通過Rainbond管理和運維SkyWalking,

SkyWalking 服務端在架構上分為四個部分:探針服務、后端服務、存盤服務和 UI:
- 平臺后端(oap-server) 支持資料聚合、分析和流處理,包括跟蹤、指標和日志,
- 存盤(elasticsearch-7.13.4) 通過開放/可插拔介面存盤SkyWalking 資料,支持 ElasticSearch、H2、MySQL、TiDB、InfluxDB,
- UI(skywalking-ui) 是高度可定制的基于 Web 的界面,允許 SkyWalking 最終用戶可視化和管理 SkyWalking 資料,
- 探針(agent) 收集資料并根據 SkyWalking 要求重新格式化資料(不同的探針支持不同的來源),
五. 使用SkyWalking對微服務進行監控
預先準備環境
- 擁有一套被監控服務,本文中示例應用為Spring Cloud微服務框架 Pig,我們已將Spring Cloud-pig制作為應用并發布至應用市場,用戶可基于應用市場一鍵安裝,
配置服務支持SkyWalking監控
- 部署插件
在Rainbond團隊界面點擊插件后進入插件界面,點擊新建插件,創建初始化型別插件
原始碼地址:https://github.com/goodrain/skywalking-agent.git

插件構建成功后即可使用,為pig服務的各組件開通此插件即可,
- 掛載存盤
為pig服務的各組件掛載存盤,使其與插件共享該存盤,

掛載路徑為/tmp/agent,掛載型別為共享存盤;該存盤為初始化插件及該組件提供共享存盤,共享同一份資料,
- 添加環境變數
為pig各組件添加環境變數,

變數解釋:
| 變數值 | 簡介 |
|---|---|
| -Dskywalking.agent.service_name=** | 在SkyWalking UI中展示的服務名 |
| -Dskywalking.collector.backend_service=Host:Port | SkyWalking oap-server的訪問地址,用來接收skywalking trace資料 |
| -javaagent:/tmp/agent/skywalking-agent.jar | 指定需要注入的jar包地址 |
添加環境變數以后更新組件即可生效,
- 建立依賴關系
將需要監控的各組件建立與SkyWalking oap-server服務的依賴關系,使其能夠通過127.0.0.1的地址連接oap-server,具體原理請參考服務間通信;或者開啟oap-server的對外地址,在被監控端填寫該地址,則無需建立依賴關系,
訪問SkyWalking
訪問 skywalking-ui 對外埠,進入可視化界面,
- 儀表盤

- 服務呼叫拓撲圖

六. 總結
基于Rainbond的插件機制與SkyWalking結合,無需改變軟體自身運行環境,不需要向專案構建腳本添加邏輯,實作SkyWalking能力即插即用,除此之外,Rainbond的插件機制具有開放性,通過插件機制對應用治理功能進行擴展,例如網路治理類、日志收集類、資料備份類插件,在對原應用邏輯無侵入的情況下,能夠通過網路治理類插件對服務的性能進行分析,通過日志插件收集服務日志,對接ELK等日志收集系統;對于資料庫等組件而言,使用備份插件對資料進行備份,
關于Rainbond
Rainbond是一個開源的云原生應用管理平臺,使用簡單,不需要懂容器和Kubernetes,支持管理多個Kubernetes集群,提供企業級應用的全生命周期管理,功能包括應用開發環境、應用市場、微服務架構、應用持續交付、應用運維、應用級多云管理等,
已有上百家企業使用Rainbond管理關鍵業務場景,涵蓋制造、能源、高校、公安、政府、交通、軍工等十幾個行業,客戶有 京東方、百勝中國、中航信、中公高科等大型企業,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/373819.html
標籤:其他
