當(dāng)前位置:首頁 > 芯聞號 > 基礎(chǔ)知識科普站
[導(dǎo)讀]萬物互聯(lián)和大數(shù)據(jù)技術(shù)的發(fā)展,讓我們的生活更加活色生香,其背后離不開安全、穩(wěn)定可靠的服務(wù)器系統(tǒng)。

萬物互聯(lián)和大數(shù)據(jù)技術(shù)的發(fā)展,讓我們的生活更加活色生香,其背后離不開安全、穩(wěn)定可靠的服務(wù)器系統(tǒng)。

這里我們主要是從系統(tǒng)日常行為安全的角度分享一種能滿足線上部署、能夠?qū)⑦M(jìn)程或文件創(chuàng)建、網(wǎng)絡(luò)連接、網(wǎng)絡(luò)I/O、文件I/O、shell操作、數(shù)據(jù)庫操作、telnet操作、http訪問、系統(tǒng)調(diào)用(syscall)和系統(tǒng)資源信息等系統(tǒng)相關(guān)的行為信息實(shí)時(shí)采集和存儲的Linux行為監(jiān)控技術(shù)。

傳統(tǒng)監(jiān)控技術(shù)

現(xiàn)有系統(tǒng)行為監(jiān)控的實(shí)現(xiàn)技術(shù)主要采用以下方法:

1.LinuxKprobes調(diào)試技術(shù)

Kprobes調(diào)試技術(shù)是一種專為Linux內(nèi)核跟蹤和調(diào)試而設(shè)計(jì)的特定API。Kprobes允許內(nèi)核開發(fā)人員為任何內(nèi)核指令以及函數(shù)入口和函數(shù)返回處理程序安裝預(yù)處理程序和后處理程序,這些處理程序可以訪問并更改寄存器。這樣一來,內(nèi)核開發(fā)者們就可以監(jiān)控系統(tǒng)調(diào)用相關(guān)工作流程并簿記。利用Kprobes技術(shù),內(nèi)核開發(fā)人員可以在內(nèi)核的絕大多數(shù)指定函數(shù)中動態(tài)地插入探測點(diǎn)來收集所需的調(diào)試狀態(tài)信息;關(guān)于“調(diào)用了哪些系統(tǒng)”、“系統(tǒng)何時(shí)被調(diào)用”、“執(zhí)行是否正確以及函數(shù)的入?yún)⒑头祷刂凳鞘裁础钡纫苫蠖伎梢暂p松解決。此外,還能將這些信息屏幕輸出或轉(zhuǎn)儲日志文件。

詳談Linux系統(tǒng)之實(shí)時(shí)監(jiān)控相關(guān)技術(shù)

2.Linux內(nèi)核的tracepoints(跟蹤點(diǎn))技術(shù)

內(nèi)核的tracepoint是一種輕量級的hooks技術(shù),使用高效的系統(tǒng)調(diào)用行為跟蹤及相關(guān)性能計(jì)算,對系統(tǒng)本身的性能只有微小的時(shí)間損失和空間損失。通過注冊syscall_enter_probe等定制的probe函數(shù),在發(fā)生系統(tǒng)調(diào)用相關(guān)行為后,內(nèi)核找到probe函數(shù),并將參數(shù)等信息傳遞給probe函數(shù)。只要將probe函數(shù)中記錄的相關(guān)行為信息輸出,即可達(dá)到監(jiān)控目的。

在現(xiàn)有的Linux系統(tǒng)行為監(jiān)控工具中,采用LinuxKprobes調(diào)試技術(shù)、Linux內(nèi)核的tracepoints(跟蹤點(diǎn))技術(shù)的工具有:strace、ftrace、tcpdump、lsof、htop、iftop、systemTap、perf……

以上的工具通常只能作為日常內(nèi)核開發(fā)調(diào)試或日常運(yùn)維分析工具來使用,主要用于開發(fā)調(diào)試或問題定位等簡單的信息輸出。然而,這些工具存在一些使用缺陷,可以總結(jié)為以下幾點(diǎn):

1、僅適用于內(nèi)核開發(fā)人員調(diào)試使用或是運(yùn)維人員在現(xiàn)場開啟使用,各工具特點(diǎn)不一,難以滿足系統(tǒng)全面監(jiān)控的需求。

2、沒有提供行為數(shù)據(jù)的良好存儲能力,只提供簡單的輸出或是日志存儲。由于沒有數(shù)據(jù)緩存功能,容易造成行為數(shù)據(jù)的丟包,不能很好地支撐事后數(shù)據(jù)回放或分析。

3、不能進(jìn)行線上運(yùn)行的實(shí)時(shí)部署,只能在事后或事中開啟,無法滿足運(yùn)維或安全監(jiān)控的自動化要求。在高吞吐、高并發(fā)的服務(wù)器上,增加了服務(wù)器運(yùn)行的負(fù)擔(dān)。

新型實(shí)時(shí)監(jiān)控緩存技術(shù)方案

針對現(xiàn)有技術(shù)無法滿足線上實(shí)時(shí)部署、影響服務(wù)器性能、行為數(shù)據(jù)不具備良好的存儲和緩存功能等缺陷,我們給大家分享一種具備實(shí)時(shí)監(jiān)控和緩存功能的技術(shù)方案。

該方案主要是采用分層結(jié)構(gòu)的模型進(jìn)行架構(gòu)的,具體分為內(nèi)核probe層、基于內(nèi)存映射mmap技術(shù)的buffer層、基于本地?cái)?shù)據(jù)庫的用戶態(tài)緩存層。具體結(jié)構(gòu)如下圖:

業(yè)務(wù)流程描述

下面通過一個(gè)具體的系統(tǒng)行為事件信息采集-緩存的例子,來說明這三層之間的業(yè)務(wù)流關(guān)系:

首先,當(dāng)用戶發(fā)起網(wǎng)絡(luò)連接服務(wù)主機(jī)操作,在服務(wù)主機(jī)系統(tǒng)中將發(fā)生socketaccpet系統(tǒng)調(diào)用中斷,服務(wù)進(jìn)程陷入內(nèi)核態(tài),進(jìn)入系統(tǒng)調(diào)用例程。

其次,通過Linux內(nèi)核tracepoints機(jī)制,內(nèi)核查找系統(tǒng)調(diào)用tracepoint的probe函數(shù);此時(shí),內(nèi)核查到已經(jīng)掛載的內(nèi)核probe層的probe函數(shù),并將相應(yīng)accpet系統(tǒng)調(diào)用參數(shù)信息傳入probe函數(shù)。

接下來,內(nèi)核probe層的probe函數(shù)將傳來的系統(tǒng)調(diào)用相關(guān)信息進(jìn)行分類、序列化處理后,將相關(guān)參數(shù)信息轉(zhuǎn)化為系統(tǒng)行為事件信息寫入mmapbuffer層。

最后,用戶態(tài)緩存層進(jìn)程通過mmap映射技術(shù),從mmapbuffer層讀取具體的系統(tǒng)行為事件信息,將系統(tǒng)行為事件信息再次格式化為易于閱讀和分析的字符串信息,并選擇一種本地或分布式的緩存技術(shù),持久化存儲系統(tǒng)行為事件信息。

通過上述業(yè)務(wù)流程的分析,可以概括出上述三層主體功能分別為:內(nèi)核probe層采集系統(tǒng)調(diào)用信息、mmapbuffer層轉(zhuǎn)化系統(tǒng)行為事件信息、用戶態(tài)緩存層持久化系統(tǒng)行為事件信息。如下圖所示:

通過上文可以得知,本方案與目前現(xiàn)有工具或方案的主要區(qū)別在于本方案體現(xiàn)了以下兩方面:實(shí)時(shí)性、緩存持久化。

實(shí)時(shí)性

“實(shí)時(shí)性”就是指系統(tǒng)操作行為(系統(tǒng)調(diào)用)信息能夠?qū)崟r(shí)感知,“零損耗”地對信息進(jìn)行采集。

我們知道系統(tǒng)行為信息的采集是由“內(nèi)核probe層”完成的,在該層中主要也是采用了Linux內(nèi)核字符設(shè)備驅(qū)動技術(shù)+Linuxtracepoints機(jī)制。通過開發(fā)Linux內(nèi)核字符設(shè)備驅(qū)動來驅(qū)動probe模塊,在probe模塊中掛載tracepoint函數(shù),采集各系統(tǒng)調(diào)用的相關(guān)信息。

為了實(shí)現(xiàn)系統(tǒng)調(diào)用信息從內(nèi)核probe層到用戶態(tài)緩存層的“Zerocopy”高效傳遞,在probe層與用戶態(tài)緩存層采用了Linux內(nèi)核驅(qū)動與用戶態(tài)進(jìn)程實(shí)現(xiàn)地址共享的mmapbuffer技術(shù)方案。

緩存持久化

經(jīng)過內(nèi)核probe層采集的系統(tǒng)行為事件信息存放在mmapbuffer層中,為了實(shí)時(shí)高效地將這些事件信息持久化存儲,本方案采用了一種開源高效的本地文件數(shù)據(jù)庫引擎,該引擎占用資源少、無需安裝和管理配置、數(shù)據(jù)吞吐率每秒可達(dá)上萬條記錄。這樣輕型的持久化模塊,可以通過“零損耗”的方式部署到線上服務(wù)器,而不占用服務(wù)器資源。

從mmapbuffer層中讀取到系統(tǒng)行為事件信息,在用戶態(tài)緩存層還可以根據(jù)具體業(yè)務(wù)的要求,做一些數(shù)據(jù)處理分析,如格式化、過濾等。最終存放到文件數(shù)據(jù)庫中,從而實(shí)現(xiàn)系統(tǒng)行為事件信息的持久化緩存。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉