RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Agith:openEuler 運(yùn)維變更觀測工具

openEuler ? 來源:openEuler ? 2023-11-20 17:10 ? 次閱讀

針對(duì) openEuler 運(yùn)維變更過程觀測困難的問題,華為 2012服務(wù)實(shí)驗(yàn)室 OSMind 團(tuán)隊(duì)開發(fā)了基于 eBPF 的變更觀測工具—— Agith。Agith 可以識(shí)別與變更相關(guān)的行為,并將變更過程表示為一種拓?fù)浣Y(jié)構(gòu)——變更影響面。通過變更影響面可以完成變更告警、審計(jì)、根因定位、依賴分析等功能。

背景

云計(jì)算成為信息時(shí)代的算力底座,服務(wù)千家萬戶。作為重要的基礎(chǔ)實(shí)施,穩(wěn)定壓倒一切。但同時(shí)云計(jì)算也在追求擴(kuò)大規(guī)模以及適配上層業(yè)務(wù)。因此帶來頻繁的變更難免會(huì)引發(fā)故障。

變更任務(wù)大致可以分為兩類。第一類白屏變更是通過運(yùn)維工具執(zhí)行操作,適用于版本變更、資源擴(kuò)縮容、災(zāi)備倒換等流程固定的任務(wù)。但是靈活性差,只能執(zhí)行標(biāo)準(zhǔn)流程。另一類黑屏變更需要運(yùn)維人員登錄系統(tǒng),通過執(zhí)行命令來完成變更過程。黑屏變更簡單靈活,適合中小型企業(yè)的 IT 運(yùn)維與復(fù)雜的運(yùn)維任務(wù),例如根因分析或故障修復(fù)。黑屏變更是變更不確定性的主要來源,也更容易引發(fā)故障,需要加強(qiáng)可觀測性。

目前對(duì)于變更過程的主要觀測方法是記錄變更過程中運(yùn)維人員輸入的所有命令。在變更結(jié)束后,通過審計(jì)監(jiān)察發(fā)現(xiàn)潛在的風(fēng)險(xiǎn)。這種方式需要大量的專家經(jīng)驗(yàn)。因?yàn)槊钊罩竞茈y表示變更過程。例如2022-09-12 0000.0 張三 obs_cmd.sh 1818 華東 10.164.179.21,包含時(shí)間、人員、主機(jī)IP,主機(jī)集群(華東)和最重要的命令(obs_cmd.sh 1818)。但是如果沒有專家經(jīng)驗(yàn),這條命令是無法解讀的。

Agith與變更影響面

Agith 是 Agent Smith 的縮寫。這是致敬《黑客帝國》的 Smith 探員。雖然 Smith 探員是電影中的反派角色,但從運(yùn)維工程師的視角來看,探員是 Matrix 系統(tǒng)中最優(yōu)秀的運(yùn)維工程師。Matrix 系統(tǒng)每時(shí)每刻有數(shù)十億的流量接入,但是探員卻可以感知輕微的變更異常,并通過最近的節(jié)點(diǎn)登入以處理故障(Kill Neo)。這種觀測能力正是 Agith 的設(shè)計(jì)目標(biāo)。系統(tǒng)每時(shí)每刻都在處理大量的請(qǐng)求,包括正常的上層服務(wù)與變更任務(wù)。Agith 需要從中區(qū)分出變更任務(wù),將變更的行為記錄下來,整理為變更影響面拓?fù)鋱D。

Agith 是一款面向變更過程的觀測工具。相比只記錄命令名,Agith 更關(guān)注命令的行為。這種區(qū)別體現(xiàn)在最終輸出上。傳統(tǒng)方法輸出的是運(yùn)維人員的所有輸入,組織為日志數(shù)據(jù)。而 Agith 的輸出的是變更影響面,如下圖所示:

4542e9c4-852c-11ee-939d-92fbcf53809c.png

圖1 變更影響面示例

橙色節(jié)點(diǎn)表示進(jìn)程,紫色節(jié)點(diǎn)表示文件,藍(lán)色節(jié)點(diǎn)表示一個(gè)遠(yuǎn)程節(jié)點(diǎn)。每種類型節(jié)點(diǎn)的都有對(duì)應(yīng)的屬性信息展示在右側(cè)列表中。例如進(jìn)程節(jié)點(diǎn)屬性信息有進(jìn)程工作路徑、執(zhí)行命令名、PID 等。文件節(jié)點(diǎn)有 inode、文件路徑。遠(yuǎn)程節(jié)點(diǎn)有 IP-Port 地址,交互信息等。節(jié)點(diǎn)之間的邊存儲(chǔ)了系統(tǒng)調(diào)用類型,例如進(jìn)程節(jié)點(diǎn)與文件節(jié)點(diǎn)可調(diào)用類型有 read、write、unlink(刪除)。 圖1的變更中,運(yùn)維人員登錄主機(jī)后執(zhí)行了一條命令 obs_cmd.sh 1818,隨即退出。這個(gè)操作反應(yīng)在圖中是進(jìn)程節(jié)點(diǎn)P1(bash)創(chuàng)建了進(jìn)程節(jié)點(diǎn)P2(obs_cmd.sh 1818)。進(jìn)程節(jié)點(diǎn) P2 在執(zhí)行中又創(chuàng)建了一個(gè) python 腳本(進(jìn)程節(jié)點(diǎn)P3)與一個(gè) shell 腳本(進(jìn)程進(jìn)程 P4)。進(jìn)程節(jié)點(diǎn) P3 創(chuàng)建了一個(gè)文件節(jié)點(diǎn) F1。而進(jìn)程節(jié)點(diǎn) P4 修改了文件 F1,并且通過 curl 命令(進(jìn)程節(jié)點(diǎn) P5)訪問了一個(gè)遠(yuǎn)程節(jié)點(diǎn) N1 的 1818 端口。點(diǎn)擊藍(lán)色節(jié)點(diǎn)可以看到這次訪問的 URL 鏈接。 相比命令日志,Agith 更關(guān)注命令的行為。這種方法將無限的命令映射到有限的行為上,方便運(yùn)維人員理解。只要有這張變更影響面拓?fù)鋱D,任何一個(gè)運(yùn)維人員都可以理解此次變更的操作,不需要復(fù)雜的專家經(jīng)驗(yàn)。

Agith架構(gòu)

Agith 在設(shè)計(jì)中采用數(shù)據(jù)流與控制流分離的策略。eBPF 模塊、Consumer、Repository 和 Monitor 可以組成數(shù)據(jù)篩選-采集-整理-輸出的數(shù)據(jù)流(圖 2 中實(shí)線)??刂屏鳎▓D 2 中虛線)則以 Controller 模塊為核心,其他模塊受 Controller 模塊的統(tǒng)一管理。啟動(dòng)時(shí) Controller 模塊檢測環(huán)境,分析配置文件,檢查啟動(dòng)參數(shù)。然后依次啟動(dòng)部署各個(gè)模塊。當(dāng)程序結(jié)束時(shí)管理各個(gè)模塊完成清理任務(wù)后依次退出。

455a8700-852c-11ee-939d-92fbcf53809c.png

圖2Agith架構(gòu)圖

# eBPF 模塊eBPF 模塊包含 eBPF Probes、Traces、Targets 三個(gè)部分。這個(gè)模塊承擔(dān)數(shù)據(jù)的篩選工作。篩選方法是一種基于動(dòng)態(tài)目標(biāo)的變更監(jiān)控技術(shù)。該技術(shù)首先建立了兩類 map。第一類是 Target map。Target map 保存了監(jiān)控目標(biāo)的標(biāo)識(shí)符。例如進(jìn)程的 pid、文件的 inode、網(wǎng)絡(luò)的 IP。第二類是Trace map。Trace map 用于存儲(chǔ)探針獲取的數(shù)據(jù)。 eBPF Probe 是針對(duì)特定的系統(tǒng)調(diào)用編寫的探針程序。這些程序被觸發(fā)時(shí),首先根據(jù) Target map 判斷系統(tǒng)調(diào)用是否與監(jiān)控目標(biāo)相關(guān)。如果不相關(guān)直接返回。如果相關(guān)會(huì)收集數(shù)據(jù)寫入Trace map。同時(shí) eBPF Probe 會(huì)修改 Target map。例如在創(chuàng)建進(jìn)程的 clone 系統(tǒng)調(diào)用處掛載探針程序。當(dāng)任何程序執(zhí)行 clone 系統(tǒng)調(diào)用,探針會(huì)被觸發(fā)。探針程序檢測進(jìn)程 pid 是否在 Target map 中。如果不存在就返回繼續(xù)執(zhí)行 clone。如果存在,會(huì)將返回值即子程序的 pid 寫入 Trace map,然后將子程序的 pid添加到 Target map 中。這樣子程序也被納入監(jiān)控范圍內(nèi)了。# Consumer 模塊Consumer 模塊承擔(dān)采集工作,即讀取并緩存 Trace map 的數(shù)據(jù)。這個(gè)過程涉及讀寫速率控制,數(shù)據(jù)異常處理,數(shù)據(jù)融合等。 Consumer 讀取的數(shù)據(jù)類似 strace 得到系統(tǒng)調(diào)用記錄。這些數(shù)據(jù)采用“主謂賓”的結(jié)構(gòu)體存儲(chǔ)。例如pid:411962, syscall:read, ret: 18, time:974333207983984, ready:1, obj:{fd:3, i_ino:2505217}是一條監(jiān)控 read 系統(tǒng)調(diào)用得到的記錄?!爸髡Z”是 pid:411962,表示一個(gè)進(jìn)程號(hào)為 411962 的進(jìn)程?!爸^語”是 syscall:read,表示讀取操作。“賓語”是 obj:{fd:3, i_ino:2505217}表示是一個(gè)文件,文件句柄號(hào)是 3,inode 編碼是 2505217。除此之外還有這次系統(tǒng)調(diào)用的時(shí)間和返回值。這條記錄的含義是進(jìn)程 411962 讀取了文件 2505217。這條信息非常簡陋。進(jìn)程執(zhí)行的程序名是什么?讀取的文件名是什么?這些信息包含在之前的記錄中。例如進(jìn)程名包含在在 exec 系統(tǒng)調(diào)用中,文件名包含在 openat 系統(tǒng)調(diào)用中。# Repository & MonitorRepository 承擔(dān)整理與輸出工作。它存儲(chǔ) Consumer 讀取的記錄,將信息填充到變更影響面圖中。例如打開一個(gè)新文件,會(huì)創(chuàng)建一個(gè)文件節(jié)點(diǎn),并在進(jìn)程與文件之間連接一條邊。除此之外 Repository 負(fù)責(zé)向 Monitor 模塊傳遞信息。 Monitor 模塊負(fù)責(zé)告警。如果在采集數(shù)據(jù)的過程中發(fā)現(xiàn)高危操作,例如刪除重要的配置文件, Monitor 模塊會(huì)發(fā)送告警。Monitor 的數(shù)據(jù)來源于 Repository。因?yàn)橹挥?Repository 存儲(chǔ)的圖中才能掌握完整的上下文信息。僅僅依靠 Consumer 的記錄不足以判定是否是高危操作。

應(yīng)用場景

Agith功能是觀測變更過程,最終得到的變更影響面可以應(yīng)用在風(fēng)險(xiǎn)告警、根因定位、變更審計(jì)、依賴分析等。

風(fēng)險(xiǎn)告警可以直接使用 Agith。首先在配置文件中聲明含有風(fēng)險(xiǎn)的行為,例如修改某個(gè)文件,訪問某項(xiàng)服務(wù),刪除進(jìn)程等等。Agith 在整理過程中發(fā)現(xiàn)這類數(shù)據(jù),會(huì)向配置文件中的郵箱發(fā)送告警信息。例如美聯(lián)航故障事件中刪除文件的行為,Agith 可以發(fā)現(xiàn)這種異常操作。目前郵件告警功能在開發(fā)中,敬請(qǐng)期待。

根因定位是變更影響面最重要的用途。相比命令日志,變更影響面數(shù)據(jù)含有更細(xì)粒度的行為數(shù)據(jù),可以更容易地發(fā)現(xiàn)與故障相關(guān)的命令行為。

變更審計(jì)可以在變更后檢查是否有超出預(yù)期的行為。對(duì)于重要的變更操作,可以在灰度環(huán)境中先執(zhí)行一遍,獲取變更影響面。然后在目標(biāo)環(huán)境中執(zhí)行,得到另一份變更影響面。將兩份數(shù)據(jù)比較,可以發(fā)現(xiàn)在變更操作中有沒有錯(cuò)誤操作。

依賴分析是獲取一個(gè)服務(wù)在運(yùn)行時(shí)依賴的各種本地資源與周邊服務(wù)。這個(gè)功能雖然與變更無關(guān)。但是只要在終端中啟動(dòng)這個(gè)服務(wù),Agith 就可以獲取該服務(wù)的所有行為,從而得到所依賴的各種資源,例如動(dòng)態(tài)依賴庫,配置文件等。

路線圖

當(dāng)前 Agith 的功能只能覆蓋進(jìn)程、文件、網(wǎng)絡(luò)的一部分行為。但是黑屏變更過程中命令行為遠(yuǎn)遠(yuǎn)超過這部分。

456de174-852c-11ee-939d-92fbcf53809c.png

表1 Agith開發(fā)計(jì)劃

表1是未來 Agith 計(jì)劃覆蓋的變更行為。變更行為的整理是一個(gè)復(fù)雜的過程。我們一開始采用的方案是自底向上。無論什么樣的上層服務(wù),從OS的視角來看無非5類行為:進(jìn)程,內(nèi)存,文件,網(wǎng)絡(luò),外設(shè)。只要對(duì)這5類行為監(jiān)控,就可以覆蓋所有的命令行為。但是實(shí)踐并非如此。

首先過度抽象將失去數(shù)據(jù)的價(jià)值。例如執(zhí)行 mysql、docker、kubernetes 的命令,都是向已有的服務(wù)進(jìn)程發(fā)送命令,可以統(tǒng)一為進(jìn)程交互行為。但是如果只有交互的進(jìn)程名,根本不能從中判定風(fēng)險(xiǎn)。其次過度抽象意味著所有的底層行為都是需要記錄的,會(huì)產(chǎn)生巨大的數(shù)據(jù)冗余。例如一次進(jìn)程啟動(dòng),會(huì)頻繁申請(qǐng)內(nèi)存,記錄這些數(shù)據(jù)沒有意義。

由此我們認(rèn)識(shí)到觀測這張網(wǎng)既不能太粗,也不能太細(xì),應(yīng)當(dāng)結(jié)合運(yùn)維需求靈活調(diào)整。所以我們采用了一種自頂向下的方法。首先收集 239萬條變更命令,逐條去分析變更命令,得出這條命令所產(chǎn)生的數(shù)據(jù)。然后根據(jù)數(shù)據(jù)的相似性合并。例如文件都會(huì)有文件名,容器類操作有容器 id 或者鏡像 id。合并過程中會(huì)舍棄兩者差別的數(shù)據(jù)項(xiàng)。如果這個(gè)數(shù)據(jù)項(xiàng)對(duì)于運(yùn)維價(jià)值不大,就是可以舍棄的。如果這個(gè)數(shù)據(jù)對(duì)運(yùn)維很重要,說明這個(gè)合并是錯(cuò)誤的。在整理的過程中有太多收益與成本的博弈,相信未來還會(huì)不斷演進(jìn)。我們最終梳理出需要監(jiān)控的行為如下圖。

457cb0dc-852c-11ee-939d-92fbcf53809c.png

圖3 運(yùn)維變更行為

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 云計(jì)算
    +關(guān)注

    關(guān)注

    39

    文章

    7774

    瀏覽量

    137350
  • 節(jié)點(diǎn)
    +關(guān)注

    關(guān)注

    0

    文章

    218

    瀏覽量

    24419
  • 運(yùn)維
    +關(guān)注

    關(guān)注

    1

    文章

    256

    瀏覽量

    7564

原文標(biāo)題:Agith:openEuler 運(yùn)維變更觀測工具

文章出處:【微信號(hào):openEulercommunity,微信公眾號(hào):openEuler】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux運(yùn)必備的13款實(shí)用工具,你都用過嗎?

    本文介紹幾款 Linux 運(yùn)比較實(shí)用的工具,希望對(duì) Linux 管理員有所幫助。
    發(fā)表于 11-17 09:17 ?2418次閱讀

    誠聘高級(jí)運(yùn)自動(dòng)化工程師

    獵頭職位:高級(jí)運(yùn)自動(dòng)化工程師【合肥】工作職責(zé): 1、根據(jù)基礎(chǔ)架構(gòu)運(yùn)管理需求,規(guī)劃設(shè)計(jì)運(yùn)自動(dòng)
    發(fā)表于 12-12 10:37

    【深圳】誠聘運(yùn)開發(fā)工程師

    獵頭推薦職位:運(yùn)開發(fā)工程師工作職責(zé):1. 負(fù)責(zé)運(yùn)平臺(tái)開發(fā)、自動(dòng)化平臺(tái)維護(hù)、研究運(yùn)維新技術(shù);2. 負(fù)責(zé)IT
    發(fā)表于 07-04 14:34

    【上?!扛呒?jí)運(yùn)工程師

    運(yùn)工具優(yōu)先考慮;5.熟悉XenKVMOpenStack等虛擬化技術(shù)優(yōu)先考慮;6.熟悉LB產(chǎn)品者更佳;7.熟悉CactiNagios等開源監(jiān)控工具;8.熟悉
    發(fā)表于 07-13 15:38

    linux運(yùn)命令大全

    Linux高端運(yùn)學(xué)習(xí)需要掌握大量的命令及相關(guān)工具,通讀bash man page、掌握VIM使用、了解SSH是Linux高端運(yùn)工程師必備
    發(fā)表于 03-15 16:36

    實(shí)戰(zhàn):阿里巴巴 DevOps 轉(zhuǎn)型后的運(yùn)平臺(tái)建設(shè)

    ,配置驅(qū)動(dòng)變更”前因后果的思考。運(yùn)工具與方法論精益發(fā)現(xiàn)價(jià)值價(jià)值來源于用戶的需求,而不是自己的YY,我們的價(jià)值來源于用戶。精益對(duì)我最大的感觸就是要發(fā)現(xiàn)價(jià)值。精益思想,什么東西是有價(jià)值的
    發(fā)表于 04-12 13:23

    學(xué)習(xí)Linux運(yùn)發(fā)展方向

    發(fā)布等工作需求,如果公司較小的話,可能還會(huì)兼職一下網(wǎng)管、網(wǎng)絡(luò)工程師、數(shù)據(jù)庫管理員、安全工程師、技術(shù)支持等職務(wù)?! ∧敲矗婕暗降腖inux平臺(tái)上的運(yùn)工具有哪些呢?答曰:Linux系統(tǒng),Linux
    發(fā)表于 07-25 17:15

    虛擬化故障怎么辦?虛擬化運(yùn)怎么解決?

    團(tuán)隊(duì)能力和運(yùn)工具!在此特殊時(shí)期,很多運(yùn)人員面臨著運(yùn)工具
    發(fā)表于 02-21 21:32

    何為智能運(yùn)?

    一、何為智能運(yùn)?生產(chǎn)設(shè)備/裝備是工業(yè)的重要生產(chǎn)工具,其可靠性、性能對(duì)工業(yè)生產(chǎn)有重大影響。隨著工業(yè)大數(shù)據(jù)推進(jìn),設(shè)備的智能運(yùn)被定義為一個(gè)重要
    發(fā)表于 07-12 06:34

    ansible-first-book 自動(dòng)化運(yùn)工具

    ansible-first-book 自動(dòng)化運(yùn)工具
    發(fā)表于 09-08 09:31 ?5次下載

    歐拉 Summit 2021 安全&可靠性&運(yùn)專場:主流備份技術(shù)探討

    openEuler Summit 2021 安全&可靠性&運(yùn)專場上,高沖對(duì)為數(shù)據(jù)安全而生,統(tǒng)信軟件備份還原工具分享。
    的頭像 發(fā)表于 11-10 17:42 ?1798次閱讀
    歐拉 Summit 2021 安全&amp;可靠性&amp;<b class='flag-5'>運(yùn)</b><b class='flag-5'>維</b>專場:主流備份技術(shù)探討

    華為云應(yīng)用運(yùn)管理平臺(tái)獲評(píng)中國信通院可觀測性評(píng)估先進(jìn)級(jí)

    近日,華為云應(yīng)用運(yùn)管理平臺(tái)參與了中國信息通信研究院(以下簡稱“中國信通院”)主辦的“穩(wěn)保行動(dòng)”的可觀測性平臺(tái)能力評(píng)估。經(jīng)過中國信通院的檢驗(yàn),華為云應(yīng)用運(yùn)
    的頭像 發(fā)表于 07-01 21:16 ?504次閱讀
    華為云應(yīng)用<b class='flag-5'>運(yùn)</b><b class='flag-5'>維</b>管理平臺(tái)獲評(píng)中國信通院可<b class='flag-5'>觀測</b>性評(píng)估先進(jìn)級(jí)

    網(wǎng)絡(luò)設(shè)備自動(dòng)化運(yùn)工具—ansible入門筆記介紹

    Ansible是一款自動(dòng)化運(yùn)工具,基于Python開發(fā),集合了眾多運(yùn)工具 (Puppet、CFengine、Chef、SaltStack
    的頭像 發(fā)表于 01-15 13:46 ?1886次閱讀
    網(wǎng)絡(luò)設(shè)備自動(dòng)化<b class='flag-5'>運(yùn)</b><b class='flag-5'>維</b><b class='flag-5'>工具</b>—ansible入門筆記介紹

    運(yùn)管理平臺(tái):從基礎(chǔ)運(yùn)到智能運(yùn)的飛躍

    運(yùn)管理平臺(tái)為企業(yè)提供了從基礎(chǔ)運(yùn)到智能運(yùn)的飛
    的頭像 發(fā)表于 04-16 16:26 ?419次閱讀

    華為云發(fā)布全棧可觀測平臺(tái) AOM,以 AI 賦能應(yīng)用運(yùn)觀測

    9 月 19 日,華為全聯(lián)接大會(huì) 2024 舉辦期間,在“ AI 賦能應(yīng)用現(xiàn)代化,加速軟件生產(chǎn)力躍升”為主題的論壇上,華為云發(fā)布全棧 可觀測平臺(tái)AOM ,以 AI 賦能應(yīng)用運(yùn)觀測,
    的頭像 發(fā)表于 10-15 09:54 ?515次閱讀
    華為云發(fā)布全棧可<b class='flag-5'>觀測</b>平臺(tái) AOM,以 AI 賦能應(yīng)用<b class='flag-5'>運(yùn)</b><b class='flag-5'>維</b>可<b class='flag-5'>觀測</b>
    RM新时代网站-首页