亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于eBPF的配置庫應用拓撲自動發(fā)現(xiàn)功能的實現(xiàn)

        2024-03-25 06:03:40李強李光兆
        互聯(lián)網(wǎng)周刊 2024年4期

        李強 李光兆

        摘要:在運維數(shù)字化轉型、智能化發(fā)展的時代背景下,配置管理庫是數(shù)字化運維必不可少的核心工具,其中應用拓撲是配置管理庫的一個重要功能,也是配置管理數(shù)據(jù)的一個重要消費場景。與傳統(tǒng)手工繪制的應用拓撲不同,配置管理庫中的應用拓撲是依托于配置數(shù)據(jù)的動態(tài)拓撲圖,但其仍依賴配置數(shù)據(jù)的準確性和更新的實時性。eBPF技術以在操作系統(tǒng)中進行動態(tài)插裝的方式,通過采集IP和端口間的訪問關系,實時跟蹤獲取每個節(jié)點的信息,從而自動獲取應用之間的調(diào)用關系,建立應用拓撲的二、三層關系,減少配置庫的維護成本,增加應用拓撲的準確性和實時性。

        關鍵詞:配置管理庫;應用拓撲;動態(tài)跟蹤;eBPF技術

        引言

        近年來,信息化、網(wǎng)絡化技術迅猛發(fā)展,信息系統(tǒng)在各行業(yè)的日常生產(chǎn)工作中承擔的作用越來越大,信息系統(tǒng)的運維安全日益重要。隨著各行業(yè)數(shù)據(jù)中心的投入運營,虛擬化、云計算、大數(shù)據(jù)等技術的廣泛應用,數(shù)字化升級進程持續(xù)加速,IT基礎設施的種類和數(shù)量激增,信創(chuàng)產(chǎn)品的自主研發(fā)和技術創(chuàng)新全面加速,信息系統(tǒng)架構的復雜程度也不斷提升,信息系統(tǒng)運維工作,特別是管理組成信息系統(tǒng)的IT資產(chǎn)和資源需要適應新形勢、應對新挑戰(zhàn)。

        信息系統(tǒng)配置庫即CMDB,是ITIL框架的配置管理流程中的基礎部分,是通過獲取、維護,檢查企業(yè)的IT資源,從而高效控制與管理不斷變化的IT基礎架構與IT服務,并為其他系統(tǒng)提供準確的配置信息,如任務調(diào)度、運維工單、發(fā)布管理等。一個實時準確的配置庫是信息化時代安全運維的基石,也是運維管理的核心。

        其中,應用拓撲是配置管理庫的一個重要功能,也是配置管理數(shù)據(jù)的一個重要消費場景。應用拓撲圖是以節(jié)點和邊為基礎,以一個應用為視角,描繪組成該應用的各個IT資源和資產(chǎn)的部署分布及節(jié)點狀態(tài)的功能圖。應用拓撲可以在異常告警精準化、變更風險管控、故障根因分析等場景中起到關鍵作用。然而傳統(tǒng)的靜態(tài)拓撲圖,依賴于手工搭建,精確程度較低,維護成本較高,無法達到可靠、實時、準確的程度。與傳統(tǒng)手工繪制的應用拓撲不同,配置管理庫中的應用拓撲是依托于配置數(shù)據(jù)的動態(tài)拓撲圖,但其仍依賴配置數(shù)據(jù)的準確性和更新的實時性。本文提出一種基于eBPF的配置庫應用拓撲自動發(fā)現(xiàn)的方法,并進行了代碼實現(xiàn),根據(jù)配置庫中的配置關系,采集IP和端口間的訪問關系,實時跟蹤獲取每個節(jié)點的信息,從而自動獲取應用之間的調(diào)用關系。

        1. eBPF技術

        1.1 eBPF簡介

        eBPF是基于BPF的擴展,BPF是類Unix系統(tǒng)上數(shù)據(jù)鏈路層的一種原始接口,BPF提供了原始鏈路層封包的收發(fā)。

        eBPF技術是擴展的伯克利數(shù)據(jù)包過濾器,起源于Linux內(nèi)核,可以在操作系統(tǒng)內(nèi)核等特權上下文中運行該程序。eBPF無須更改Linux內(nèi)核的源代碼,且不需要重載內(nèi)核模塊的前提下,對內(nèi)核功能進行擴展,可以讓內(nèi)核變得更加靈活和強大,從而達到動態(tài)追蹤的功能。這些程序可以用于過濾網(wǎng)絡數(shù)據(jù)包、收集內(nèi)核統(tǒng)計信息、監(jiān)控和調(diào)試等目的[1]。

        1.2 eBPF的架構

        eBPF的架構分為用戶態(tài)和內(nèi)核態(tài),一個完整的eBPF程序包含用戶態(tài)程序和內(nèi)核態(tài)程序兩部分。

        eBPF用戶態(tài)程序是指在用戶空間范圍內(nèi)運行的程序,負責加載和管理eBPF的內(nèi)核態(tài)程序,以及與內(nèi)核態(tài)程序進行交互和數(shù)據(jù)處理,可以使用不同的語言和工具來編寫。一種常用的工具是BCC,提供Python和C語言的API,以及一些現(xiàn)成的eBPF工具,可以進行編寫和運行eBPF程序。用戶空間程序負責加載BPF字節(jié)碼至內(nèi)核中,如果需要也會負責讀取內(nèi)核回傳的統(tǒng)計信息或者事件詳情[2]。

        eBPF內(nèi)核態(tài)程序是指在操作系統(tǒng)內(nèi)核空間中運行的程序,負責實現(xiàn)eBPF的主要功能和邏輯。內(nèi)核中的BPF字節(jié)碼負責在內(nèi)核中執(zhí)行特定事件,如需要也會將執(zhí)行的結果通過maps或者perf-event事件發(fā)送至用戶空間。其中用戶空間程序與內(nèi)核BPF字節(jié)碼程序可以使用map結構實現(xiàn)雙向通信,這為內(nèi)核中運行的BPF字節(jié)碼程序提供了更加靈活的控制。

        用戶空間程序與內(nèi)核中的BPF字節(jié)碼交互的流程有如下步驟:

        (1)使用LLVM或者GCC工具將編寫的BPF代碼程序編譯成BPF字節(jié)碼;

        (2)使用加載程序Loader將字節(jié)碼加載至內(nèi)核;

        (3)內(nèi)核使用驗證器組件保證執(zhí)行字節(jié)碼的安全性,以避免對內(nèi)核造成災難,在確認字節(jié)碼安全后將其加載對應的內(nèi)核模塊執(zhí)行;

        (4)內(nèi)核中運行的BPF字節(jié)碼的程序可以使用兩種方式將數(shù)據(jù)回傳至用戶空間。maps方式可用于將內(nèi)核中實現(xiàn)的統(tǒng)計摘要信息(比如測量延遲、堆棧信息)等回傳至用戶空間。perf-event用于將內(nèi)核采集的事件實時發(fā)送至用戶空間,用戶空間程序實時讀取分析。

        2. 系統(tǒng)設計與實現(xiàn)

        2.1 eBPF插件設計與實現(xiàn)

        eBPF程序可以通過一些工具包如BCC、bpftrace和ebpf_exporter來編寫和加載。

        本文的eBPF插件主要是基于ebpf_exporter,可以將eBPF程序的輸出轉換為Prometheus的指標,從而實現(xiàn)對網(wǎng)絡數(shù)據(jù)包的監(jiān)控和分析。此外還需要選擇合適的掛載點,如kprobe、uprobe、tracepoint、xdp等,來捕獲感興趣的事件和數(shù)據(jù),如進程名、文件名、網(wǎng)絡包等。該插件的程序流程圖如圖1所示。

        在插件啟動時,啟動ebpf_exporter并加載eBPF的配置文件,配置文件中包含BPF代碼和導出指標的規(guī)則。ebpf_exporter會判斷配置文件是否有效,如果無效,就返回錯誤并結束,如果有效,就繼續(xù)執(zhí)行。接著ebpf_exporter會編譯BPF代碼,并將其加載到內(nèi)核中,同時創(chuàng)建一個BPFmap和一個perfevent用于存儲和傳輸數(shù)據(jù),加載到內(nèi)核后ebpf_exporter開始監(jiān)聽端口(默認是9435),等待Prometheus的請求。Prometheus定期從ebpf_exporter的端口拉取數(shù)據(jù),并將其存儲在Mongo和MySQL數(shù)據(jù)庫中,最后在配置庫響應模塊中進行調(diào)用[3]。

        整個eBPF程序的核心邏輯是在兩個k_probe上掛載回調(diào)函數(shù),分別是tcp_v4_connect和tcp_rcv_state_process,分別用于捕獲TCP連接的開始和結束。

        2.2 應用拓撲自動發(fā)現(xiàn)功能的實現(xiàn)

        本次eBPF采集插件使用僅支持Linux操作系統(tǒng),系統(tǒng)內(nèi)核版本需滿足以下任意要求:版本大于等于4.14或等于3.10.0-693、3.10.0-957、3.10.0-1160。

        系統(tǒng)主要通過安裝eBPF插件后,通過配置庫topic數(shù)據(jù)能夠發(fā)現(xiàn)B端的資源,獲取資源信息,結合CMDB中手動維護配置(系統(tǒng)、應用單元、模塊實例之間的層級包含關系)。建立應用拓撲第二、三層關系時,通過在topic中找到的A、B端的資源能通過關聯(lián)關系找到對應的應用單元和系統(tǒng)。找到資源和建立關系數(shù)據(jù),并進行資源數(shù)據(jù)插入[4]。

        2.2.1 數(shù)據(jù)采集格式

        系統(tǒng)通過eBPF技術采集IP和port間的訪問關系,從而自動獲取應用之間的調(diào)用關系,采集數(shù)據(jù)上報的數(shù)據(jù)格式為src_ip,src_port,dst_ip,dstn_port;上報源到目標的訪問關系,源指定IP和監(jiān)聽接口,可指定proc的資源類型。

        2.2.2 數(shù)據(jù)處理入庫

        關系生成分為兩級目標。

        一級目標是生成模塊實例-訪問-模塊實例、模塊實例-訪問-數(shù)據(jù)庫實例、模塊實例-訪問-中間件實例3類關系。

        二級目標是生成應用模塊-應用模塊之間的訪問關系、應用模塊-數(shù)據(jù)庫、應用模塊-模板的訪問關系,甚至是系統(tǒng)與系統(tǒng)之間的訪問關系、系統(tǒng)與中間件服務、數(shù)據(jù)庫服務的依賴關系。

        數(shù)據(jù)處理規(guī)則分為兩部分,在上報的條目中,根據(jù)訪問源或目標的IP和端口信息,在配置庫中匹配目標關系兩端的實例創(chuàng)建關系動作執(zhí)行,異常情況反饋;在一級目標完成的基礎上,根據(jù)已有的實例關系兩端,各自所關聯(lián)的上級所屬應用關聯(lián)目標,建立之間的關系。

        2.2.3 數(shù)據(jù)模型調(diào)整

        使用eBPF插件,需要調(diào)整相應的數(shù)據(jù)模型,在應用拓撲的繪制中,需要新增與eBPF聯(lián)調(diào)所需的模板關系定義,新增模型方案如下:

        通過應用實例之間的訪問關系發(fā)現(xiàn),建立各層應用之間的訪問關系模型,增加和修改模板關系包括:

        (1)模板“部署實例”訪問“部署實例”,約束:N:N;

        (2)模板“部署實例”訪問“數(shù)據(jù)庫實例”,約束: N:N;

        (3)模板“部署實例”訪問“中間件實例”,約束:N:N;

        (4)“應用單元”訪問“應用單元”,約束:N:N;

        (5)“應用單元”訪問“數(shù)據(jù)庫實例”,約束:N:N;

        (6)“系統(tǒng)”訪問“系統(tǒng)”,約束:N:N;

        (7)“中間件實例”訪問“部署實例”,約束:N:N;

        (8)“中間件實例”訪問“數(shù)據(jù)庫實例”,約束:N:N;

        (9)“中間件實例”訪問“中間件實例”,約束:N:N;

        (10)修改部署實例的“服務端口”字段的數(shù)據(jù)類型,由string改為list;

        (11)“應用單元”包含“部署實例”,約束:1:N。

        2.2.4 呈現(xiàn)效果

        在配置庫中,通過物理子系統(tǒng)節(jié)點,自動生成該物理子系統(tǒng)下的訪問關系拓撲入口。從應用模塊進入物理子系統(tǒng)節(jié)點,可自動發(fā)現(xiàn)默認的展示路徑包含:物理子系統(tǒng)(訪問)→物理子系統(tǒng);物理子系統(tǒng)(包含)→應用模塊;應用模塊(訪問)→應用模塊;應用模塊(包含)→應用實例;應用實例(訪問)→應用實例;應用實例(訪問)→DB實例;應用實例(訪問)→中間件實例;中間件實例(訪問)→應用實例;中間件實例(訪問)→中間件實例;中間件實例(訪問)→DB件實例。

        結語

        本文在簡要介紹和分析eBPF技術的基礎上,詳細闡述了eBPF技術的架構、匯編指令等內(nèi)容,并在使用開源的react-flow和dagre庫搭建的配置管理庫原型系統(tǒng)的基礎上,介紹了eBPF采集插件的設計與實現(xiàn),通過采集插件和數(shù)據(jù)模型的配置,實現(xiàn)了配置庫原型系統(tǒng)中應用拓撲的二、三層關系的自動發(fā)現(xiàn)功能。總體而言,通過eBPF插件對操作系統(tǒng)動態(tài)跟蹤,實時采集調(diào)用關系,從而獲得實時更新的應用拓撲。在實際運維工作中,尤其是應用資源統(tǒng)計、應用節(jié)點控制、故障定位等實際運維場景中,可以快速幫助運維人員快速找到應用中需要被關注的節(jié)點信息[5]。配置庫應用拓撲自動發(fā)現(xiàn)功能在未來運維自動化、智能化發(fā)展中將具有決定性意義。

        參考文獻:

        [1]劉偉,廖平.eBPF技術在操作系統(tǒng)動態(tài)跟蹤中的應用研究[J].中國金融電腦,2022(8):81-84.

        [2]姜歐涅.基于eBPF的網(wǎng)絡數(shù)據(jù)包捕獲與分析系統(tǒng)的設計與實現(xiàn)[D].武漢:華中科技大學,2020.

        [3]薛擎宇.基于eBPF的報文快速處理技術研究[D].成都:電子科技大學,2023.

        [4]孫建強.基于時序拓撲結構特征的會話推薦系統(tǒng)設計與實現(xiàn)[D].成都:電子科技大學,2022.

        [5]高巍.基于操作系統(tǒng)eBPF在云原生環(huán)境下的技術研究[J].電子技術與軟件工程,2022(17):70-74.

        作者簡介:李強,本科,助理工程師,研究方向:計算機技術及應用。

        基金項目:中國鐵路信息科技集團有限公司科技研究開發(fā)計劃(編號:2022A05)。

        天堂Av无码Av一区二区三区| 午夜福利影院成人影院| 一区二区三区午夜视频在线 | 五月丁香综合激情六月久久| 久久精品人成免费| 国产精品公开免费视频| 欧美中文字幕在线看| 精品久久一区二区av| 免费国产自拍在线观看 | 国产麻豆一区二区三区在| 亚洲av国产av综合av卡| 免费少妇a级毛片人成网| 女人色毛片女人色毛片18| 男女好痛好深好爽视频一区| 日本草逼视频免费观看| 中文字幕亚洲精品在线| 免费人成在线观看| 久久久受www免费人成| 亚洲欧美日韩在线一区| 国内精品久久久久久久久蜜桃| 国产亚洲亚洲精品视频| av网站不卡的av在线| 97成人精品国语自产拍| 欧美精品一区二区蜜臀亚洲| 日日摸夜夜添夜夜添无码免费视频 | 亚洲熟妇自偷自拍另类| 国产熟妇按摩3p高潮大叫| 欧美日韩久久久精品a片| 亚洲国产精品久久久天堂不卡海量| 男女啪啪免费视频网址| 国产真实一区二区三区| 人妻少妇中文字幕乱码| 香蕉视频一级| 欧美巨大xxxx做受中文字幕| 久久亚洲中文字幕精品二区| 国产精品视频免费播放 | 久久久久亚洲av无码专区喷水| 精品国产乱码久久久久久1区2区| 亚洲精品亚洲人成在线下载| 中文字幕日韩人妻在线| 亚洲国产色一区二区三区|