999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種可觀測性微服務鏈路監控系統設計實現

2024-09-13 00:00:00陳恒法黃愛儀鄒竟輝
電腦知識與技術 2024年22期

摘要:為滿足當前基于云原生微服務架構軟件系統運維的復雜性需求,利用開源軟件整合設計實現了一種低成本、高可用、部署方便的可觀測性微服務鏈路監控解決方案,解決了可觀測性“三大支柱”中的鏈路可觀測性問題。詳細描述了方案的系統構成,部署流程及工作原理,基于Docker容器技術進行系統部署和測試,驗證了該系統方案的可行性。

關鍵詞:云原生;運維;可觀測性;監控 ;鏈路跟蹤

中圖分類號:TP311 文獻標識碼:A

文章編號:1009-3044(2024)22-0038-04

開放科學(資源服務)標識碼(OSID)

0 引言

隨著云原生技術在軟件系統開發領域的不斷深入,云原生這種“專注于應用程序容器化,以便在各種服務器上進行部署和編排”的軟件構建和部署運行的現代方法,使得原來面向單體架構設計的各類系統監控技術難以全面跟蹤和排查基于云原生的軟件系統的問題。因此,需要構建起一套可觀測性服務監控系統[1]。

本研究探索了基于開源軟件組合實現的一種云服務可觀測性微服務鏈路監控系統方案。該系統可以實現對鏈路數據的關聯分析,幫助運維人員衡量、預防、發現、定位、解決業務問題,從而實現運維業務效能的提升。

1 核心概念及技術框架

1.1 可觀測性

可觀測性(Observability) 是一個來自控制理論的概念,它指的是能夠從系統的外部輸出推斷出系統內部狀態的能力。在計算機系統和軟件領域,可觀測性允許人們通過監控系統和應用程序對外輸出的信息,來了解和診斷應用程序內部的狀態和運行情況[1]。可觀測性通常包括指標(Metrics) 、鏈路(Traces) 和日志(Logs) 三個方面的信息。

1) 指標(Metrics) 是可觀測性中用于衡量和監控系統性能及健康狀況的關鍵數據類型。指標是在一段時間內測量的數值,包括特定可用性、預警性和協助性監控屬性,如啟動、可達、流量、延時、時間戳、類型等。指標采用結構化的形式,方便查詢和優化存儲[2]。

2) 鏈路(Traces) 在可觀測性領域主要分為兩類:鏈路拓撲和鏈路追蹤。鏈路拓撲的核心價值在于通過分析節點間依賴路徑與狀態,提供強弱依賴梳理、瓶頸點分析、影響面分析、故障傳播鏈分析等能力。鏈路追蹤可追溯請求在分布式系統間流轉路徑與狀態的技術。它通過在分布式應用的接口方法上設置觀察點,并在入口節點給每個請求分配一個全局唯一的標識(TraceId) ,來記錄請求流經的鏈路日志[3]。

3) 日志(Logs) 是在特定時間發生的事件的文本記錄。日志收集工具與應用程序容器一起運行,從應用程序收集消息,然后把收到的消息轉發到中央日志存儲以進行匯總和分析。

通過指標、鏈路、日志數據,運維團隊可以更有效地監控基于云原生的分布式部署微服務系統,在運維過程中快速定位問題根源,并采取措施進行修復,從而確保系統的穩定性和可靠性。

1.2 技術路線:SkyWalking+Elasticsearch+SkyWalking UI

目前可以實現云原生的運維服務技術框架有很多。本研究主要從技術成熟度、系統構建成本、部署便利性這三個方面進行評估,選擇采用基于SkyWalking+ElasticSearch開源技術框架方案來構建一個基于云原生微服務系統運維的監控系統。該系統是一個能提供分布式追蹤、服務網格遙測分析、度量聚合、查詢、持久化和可視化一體化解決方案[3]。系統整體架構如圖1所示。

整個監控系統由4個部分組成,分別為:

1) 數據采集模塊:SkyWalking+Service Mesh。

語言探針(SkyWalking Agent) 和服務網格(Service Mesh) 是獲得監控數據的模塊。它們以插件方式獨立存在,可根據需要從SkyWalking官網上選擇需要的模塊下載[4]。這些插件可以通過配置文件以非入侵方式集成到其他應用系統中,隨相應的應用一起啟動工作。以SkyWalking Agent為例,它具備高度自動化能力,目前官網分別提供了支持主流前端技術(Vue.js、Angular.js、React) 和常見后端技術(Java、.NET、Go、Python、PHP、Node.js) 的SkyWalking Agent供下載。SkyWalking Agent能實現系統的鏈路跟蹤、指標探測和日志聚合處理。

2) 數據匯聚和處理模塊:SkyWalking。

SkyWalking可作為一個應用程序性能監視工具,專為微服務、云原生架構和基于容器(Docker、K8s、Mesos) 架構而設計。它擁有一套非常成熟的指標監測、分布式鏈路追蹤和日志處理功能,提供了多種監控手段。

3) 數據存儲模塊:ElasticSearch。

在跟蹤數據存儲方面,SkyWalking支持多種主流的數據存儲技術,如ElasticSearch、MySQL、Sharding Sphere、TiDB、H2等。ElasticSearch是一個分布式、高擴展、高實時的搜索與數據分析引擎。它能很方便地使大量數據具有搜索、分析和探索的能力。它是SkyWalking官方推薦的數據存儲方案。

4) 數據可視化展示模塊:SkyWalking UI。

SkyWalking UI既是展示監控數據儀表盤,用來實現Skywalking收集到的數據的可視化展示,又是監控系統對采集到的數據進行分析的控制臺。系統部署完成后,就可以通過SkyWalking UI提供的儀表盤實現數據呈現及其他相關信息詳情查詢和展示。

1.3 系統工作流程

該系統是通過語言探針(SkyWalking Agent) 和服務網格(Service Mesh) 從微服務應用中獲取服務調用數據。根據獲取數據的方式不同,分別采用HTTP或gRPC通信協議與SkyWalking OAP通信,將采集到的監控數據傳給Tracing或Metric模塊進行預處理,然后傳給Analysis模塊進行歸并和分析,最終數據和結果傳給ElasticSearch進行持久化。

系統啟動后,用戶通過瀏覽器輸入SkyWalking-UI服務端地址,就可以打開數據監控儀表盤頁面查看監控數據。儀表盤頁面默認提供監控數據的全局概覽視圖,包含系統整體的服務調用情況、響應時間、吞吐量等關鍵指標,以可視化的形式展示在不同的窗口中。用戶也可以根據需求定制儀表板內容,Query模塊會根據定制參數返回響應的查詢數據,供儀表盤進行可視化展示。

2 系統部署與運行測試分析

為了詳細展示系統的部署及運行測試過程,本研究通過在Docker容器技術創建的虛擬云主機平臺上,以鏈路跟蹤監控為例,開展模擬云原生監控系統部署和運行測試實踐,展示系統的部署和運行測試過程。在真實生產環境的云主機上部署該系統的過程也基本一樣。系統的部署結構如圖2所示。

2.1 系統部署

在系統部署之前,需要準備好系統部署的環境,即安裝好操作系統云主機。下載部署所需的開源軟件。下載開源軟件時,要注意查看軟件版本的兼容性描述。雖然構成該系統的各開源組件擁有滿足多種操作系統的版本,但建議在Linux內核的操作系統上部署,本實踐使用的是Ubuntu 20.04 LTS鏡像文件創建的云主機,并在此基礎上進行系統部署操作。

2.1.1 安裝Docker并創建虛擬服務器

安裝Docker并根據系統部署需求,通過Ubuntu鏡像文件創建出6個容器用于模擬6臺服務器。其中一臺安裝Nginx提供統一的服務訪問入口;3臺安裝Tomcat提供云原生Web微服務,用于部署基于SpringBoot+SpringCloud實現的音樂推薦微服務系統,并作為完成實驗測試的微服務系統;一臺安裝SkyWalking作為數據收集和分析服務器,還有一臺安裝ElasticSearch作為跟蹤數據存儲服務器。

Docker、Ubuntu以及微服務系統的安裝過程比較簡單,相關詳細操作過程介紹文章和視頻非常多,在這里不做介紹。需要提醒的是,如果采用一臺服務器虛擬化為多臺服務器,并且原生主機只有一張物理網卡,而又希望每臺虛擬主機都有獨立的IP地址,實現單網卡多IP方式,那就必須先在原生服務器網卡上綁定多個地址。否則就只能通過端口號來區分不同的虛擬主機。具體操作相關操作可以查看參考文獻[5]。為了更接近真實生產環境,這里采用的是單網卡多IP方式。在進行軟件的安裝部署之前,都必須確保系統中已經安裝了與安裝軟件兼容的JDK。

2.1.2 部署ElasticsSearch服務

ElasticsSearch服務安裝比較簡單,包括以下4個步驟:

1) 訪問Elasticsearch官方下載頁面(https://www.elastic.co/downloads/elasticsearch) ,選擇適合的版本并下載,本文以Elasticsearch 7.14.0為例。

2) 將下載的Elasticsearch壓縮包解壓到合適的目錄,例如,/amt/elasticsearch。

3) 打開config/elasticsearch.yml根據需要修改配置或使用默認配置,在本實踐中使用的是多IP方式,所有需要設置network.host:192.168.0.2,其他參數使用默認值。

4) 通過“./bin/elasticsearch”啟動服務。

如果采用Docker鏡像的方式來部署ElasticsSearch的話,直接從Docker官網拉鏡像然后創建容器,并啟動容器就可以了。所有配置開源使用默認配置。

2.1.3 部署SkyWalking服務

SkyWalking服務啟動運行需要依賴后端的數據存儲服務器,因此在安裝部署SkyWalking服務器之前必須先安裝和部署ElasticsSearch服務器。SkyWalking服務安裝部署過程也很簡單,具體過程如下:

1) 下載SkyWalking:訪問Apache SkyWalking官方網站下載頁面https://skywalking.incubator.apache.org/downloads/,選擇合適的版本下載。

2) 解壓SkyWalking壓縮包到合適的目錄,例如,

/amt/skywalking。

3) 配置SkyWalking和SkyWalking UI。編輯config/application.yml文件和bin\webapp\webapp.yml,在本文中需要根據需要配置數據庫連接,SkyWalking服務器地址以及SkyWalking Web UI地址。如圖3所示。

4) 進入相應目錄啟動SkyWalking OAP服務(./oapService.sh) 和UI服務(./startup.sh) 。

2.1.4 部署SkyWalking Agent

SkyWalking Agent是一個數據探測引擎,也稱為語言探針。它是官方提供的一個可以方便集成到不同應用中的實現數據采集的獨立插件,根據具體應用所采取的技術實現不同,官方提供了多種不同的數據引擎供下載[4]。通過配置可以集成到不同的應用系統中。本研究用來鏈路跟蹤測試的系統是一個基于SpringBoot+SpringCloud的微服務系統,項目構建環境使用Maven。因此需要使用到Java Agent數據探測引擎。在項目中集成Java Agent的部署過程如下:

1) 從官方鏈接下載文件解壓后得到一個文件夾,文件夾里面包含了skywalking-agent.jar引擎文件和相關依賴jar包文件,以及一個引擎配置文件config/agent.config。

2) 通過Maven配置文件添加SkyWalking依賴,如圖4所示。

3) 通過配置Agent配置文件。配置文件有很多選項是需要采集的數據相關的參數,例如Agent的類型、關聯的服務名稱、后臺服務的IP和端口號等。默認的配置文件中必要的關鍵參數都設有默認值,例如,collector.backend_service參數代表接收SkyWalking trace數據的后端地址,它的默認值是127.0.0.1:11800。如果使用的是單主機IP部署,且默認端口沒有地址沖突,可以使用默認值。可以根據需要更改為所需的地址,比如在本研究中需要把它指向SkyWalking OAP服務器的地址http://192.168.0.3:80。一些非關鍵的參數,如引擎在SkyWalking UI中展示的服務名參數agent.service_name:SongAgent,可以根據需要進行設置。

4) 在SpringBoot啟動方法內增加JVM參數,讓數據探測引擎隨JVM啟動。配置參數如下:javaagent:/amt/sky_agent/skywalking-package/agent/skywalking-agent.jar。

2.1.5 部署Nginx

在本系統中,Nginx并不是必需的。由于現在云原生微服務系統都會使用到Nginx來實現一些功能,為了展示系統完整性這里把它引入。但是也只是作為普通的代理服務器使用,沒有它也不影響監控系統的功能。這里只是為系統提供一個統一的服務入口,安裝過程比較簡單。安裝過程省略。配置文件中關鍵配置如圖5所示。

2.2 鏈路跟蹤測試分析

系統實現鏈路分析數據采集、處理和持久化的工作流程如下:

1) SkyWalking-Java-Agent被注入WebApp服務,并隨Web服務啟動。當用戶通過瀏覽器訪問微服務系統時,SkyWalking-Java-Agent會將帶有特點標記的鏈路數據上報至SkyWalking OAP Server。

2) 數據上報后,SkyWalking OAP Server通過Analysis Core組件接收數據,其中的Receiver模塊對數據進行收集處理,處理完畢后發送給Aggregator模塊,Aggregator模塊會將鏈路數據進行一個聚合。

3) 聚合后的數據通過Aggregator模塊將數據傳給Elasticsearch,由Elasticsearch進行存儲和持久化。

用戶可以通過SkyWalking Web UI選擇需要的查詢參數,如果查詢參數合規,就會向SkyWalking Query Core組件發起查詢。Query Core組件會根據用戶傳入的條件拼接成對應的Elasticsearch查詢語句。Elasticsearch根據查詢語句查出用戶需要的數據,并把查詢結果返回給Query Core。Query Core組件對結果進行解析和包裝后再傳到Web UI,前端就可以對數據進行可視化渲染并呈現給用戶。

需要注意,鏈路跟蹤分析數據采集分為鏈路追蹤和鏈路拓撲兩種不同的數據采集方式。

在鏈路拓撲數據中,鏈路拓撲的核心是上下游之間的關鍵信息。因此Agent會在請求經過上下游的時候,分別記錄上游服務的關鍵信息以及下游服務的關鍵信息,并且結合該請求的一個具體執行情況(請求執行耗時、請求結果)從而生成對應的一條數據上報給Collector。由于每條數據都記錄了上下游信息,因此可以通過以某個需要觀測的服務為關鍵,找出所有與這個服務相關的拓撲數據以及與該數據對應的上下游數據,通過這些數據就可以畫出一張服務鏈路拓撲圖。還可以對這些數據進行一個聚合處理,生成上下游的平均耗時、每分鐘請求數以及請求成功率等信息。圖6所展示的是其中一個服務1小時內的鏈路拓撲情況。

在鏈路追蹤數據中,鏈路代表了一條完整的請求鏈路,由多個Segment組成。每個Segment代表一個JVM進程內的一個線程中的所有操作的集合,由多個Span組成。Span則表示具體的一個操作,是鏈路組成中的最小單元。

SkyWalking Agent中有專門的類(TraceContext) 管理鏈路追蹤的上下文信息,維護Segment以及Span的生命周期和完整性。通過全局唯一的TraceID(由服務實例ID、線程ID、時間戳以及指定線程字段進行組合計算而成)來最終維護Trace的完整性。對于跨線程的情況,Agent會將上下文信息序列化封裝到請求框架中,通過反序列化得到上下文信息來完成跨線程的問題。最后Trace完成后Agent將其上報至Collector。

在默認的策略中,全局唯一的TraceID由三部分組成:應用程序實例ID、請求發起的線程ID、時間戳*10 000+當前線程中的seq(seq的值介于0(包含)和9 999(包含)之間)。通過這三者組成一個保證全局唯一性的跟蹤ID。圖7所示為某條鏈路的追蹤詳情信息。

3 總結與展望

在本研究中,基于云原生的可觀測性服務監控系統需求,采用開源軟件設計并實現了一種可觀測性微服務鏈路監控系統。詳細描述了可觀測性的“三大支柱”中的鏈路可觀測性方案的設計與實現,并通過部署和測試驗證了方案的可行性。該系統方案具有成本低、部署方便、可控性強等優點。

未來的研究將致力于擴展鏈路監控指標的多樣性,并將其與可觀測性的另外兩大支柱進行整合,提供統一的微服務運維工作中臺,提升基于云原生的微服務軟件系統運維的便利性[6]。

參考文獻:

[1] 洛愷辰.一文搞懂:可觀測性到底是什么?[EB/OL].[2022-10-20].https://zhuanlan.zhihu.com/p/605914260.

[2] 鏈路追蹤(Skyworking)[EB/OL].[2022-10-20].https://blog.csdn.net/m0_73467713/article/details/131073840.

[3] 優維科技EASYOPS.可觀察性支柱:探索日志、指標和跟蹤[EB/OL].[2022-10-20].https://zhuanlan.zhihu.com/p/66354 3274.

[4] 不同數據引擎下載地址[EB/OL].[2022-10-20].https://skywalking.apache.org/downloads/.

[5] 一臺服務器虛擬化為多臺服務器[EB/OL].[2022-10-20].https://blog.51cto.com/u_12196/8798424.

[6] 百度百科[EB/OL].[2022-10-20].https://baike.baidu.com/item/Elasticsearch/3411206.

[7] 中國信息通信研究院云計算與大數據研究所.可觀測性技術發展研究報告[EB/OL].[2022-10-20].http://www.caict.ac.cn/kxyj/qwfb/ztbg/202312/P020231229323602819435.pdf.

【通聯編輯:謝媛媛】

主站蜘蛛池模板: 日韩小视频在线观看| 国产午夜福利亚洲第一| 久久国产毛片| 狠狠色噜噜狠狠狠狠色综合久| a级高清毛片| 国产一级毛片yw| 国产av无码日韩av无码网站| 久热中文字幕在线| 久久6免费视频| 啪啪啪亚洲无码| 99性视频| 蜜桃臀无码内射一区二区三区| 色首页AV在线| 污网站免费在线观看| 亚欧乱色视频网站大全| AV无码一区二区三区四区| 国产精品妖精视频| 色欲综合久久中文字幕网| 毛片在线播放网址| 在线欧美日韩国产| 欧美激情视频一区| 国产精品吹潮在线观看中文| 在线观看亚洲精品福利片| 制服丝袜一区| 无码aⅴ精品一区二区三区| 日韩不卡高清视频| 一级毛片免费不卡在线视频| 999国内精品视频免费| 好吊妞欧美视频免费| 国产精品久久久免费视频| 一区二区日韩国产精久久| 亚洲国产午夜精华无码福利| 欧美成人午夜视频| 国产精品一区二区不卡的视频| 国产午夜小视频| 狠狠色丁香婷婷| 欧美成人日韩| 欧美五月婷婷| 国产精品一区二区无码免费看片| 亚洲婷婷在线视频| 国产主播在线一区| 国产黄视频网站| 国产特级毛片aaaaaa| 尤物午夜福利视频| 国产精品夜夜嗨视频免费视频| 色有码无码视频| 久久精品视频亚洲| 欧美a在线看| 国产精品视频观看裸模| 午夜欧美理论2019理论| 久久天天躁狠狠躁夜夜2020一| 久久五月视频| 国产福利微拍精品一区二区| 十八禁美女裸体网站| 午夜欧美理论2019理论| 亚洲日韩国产精品无码专区| 国产成人精品18| 中文字幕永久在线看| 欧美三级日韩三级| 在线观看亚洲精品福利片| 欧美一级爱操视频| 久久永久精品免费视频| 国产第一页屁屁影院| 婷婷激情亚洲| 成年人国产视频| 亚洲水蜜桃久久综合网站| 成年人国产网站| 免费一看一级毛片| 亚洲男人的天堂网| 免费女人18毛片a级毛片视频| 久久综合色天堂av| 成人午夜网址| 日韩亚洲综合在线| 精品久久香蕉国产线看观看gif | 国产99在线观看| 亚洲视频影院| 亚洲色大成网站www国产| 欧美区日韩区| 亚洲免费福利视频| 特级毛片8级毛片免费观看| 人妻一本久道久久综合久久鬼色| 免费aa毛片|