從趨勢到挑戰,一站式解讀操作系統運維和可觀測性

語言: CN / TW / HK

編者按:

隨着企業數字化轉型步入深水區,設備數量增加,業務系統更加複雜,除了要保證物理硬件的穩定性和可靠性,運維目的和手段也發生了深刻變革。對此,龍蜥社區系統運維 SIG 組 Maintainer、統信軟件資深操作系統研發工程師高衝從系統運維的趨勢與挑戰、系統運維 SIG 組項目及未來展望和規劃三個方面,帶我們瞭解操作系統運維和可觀測性。本文整理自  2022 年阿里巴巴開源開放周技術演講 ,視頻回放已上線至龍蜥官網(首頁-動態-視頻),歡迎大家觀看。

一、系統運維的趨勢與挑戰

隨着企業數字化轉型步入深水區,設備數量增加,業務系統更加複雜,除了要保證物理硬件的穩定性和可靠性,運維目的和手段也發生了深刻變革,通過平台化和智能化保證運維環境的實時性、數據安全性和業務連續性。

運維的整個發展歷程主要有下面四個階段:

從最初的手動運維,依賴於運維人員的經驗,發展為流程化的一個運維,依賴流程的規範化管理來實現運維,前兩種的運維方式為企業帶來很大的運維成本,現階段的主流運維方式有兩種:

  • 平台化的運維。通過平台化的自動化和可視化的運維,來大大減少企業運維的成本。

  • 智能化運維。隨着數據分析、人工智能的技術引入,慢慢地我們也會介入智能化運維。

下面為大家介紹下運維業務的架構。

最底層的是對於硬件的一個運維,通常就包含硬件的一些信息,比如温度、讀寫壽命、風扇轉速等等。再往上層就是對操作系統的運維,還有是通過外掛的一些運維,比如 IPMI 協議,通常比較常見就是 BMC 。

在整個系統的運維方面,其實有兩大部分,一個是 管控 ,另外一部分是 診斷

1、管控主要分為三個方向:

第一是資源管理。首先就是對資源的一個納管,比如説主機的一些納管。另外就是監控,如對資源的一些監控,包含 CPU 的算力、磁盤的使用情況、帶寬、內存,最後是對資源的分配。

第二是配置管理。它包含有三部分:安全、包管理、自動化。在整個運維方向來看,其實都視為是配置。配置中的安全一個是 CVE,還有一些是配置項的安全,比如説端口掃描都屬於安全。另外是包的管理,現在比較主流的有兩種:一個是 RPM 包,另一個是 deb 包。包管理其實就包含這個包的升級回退、版本控制。最後就是自動化,也是相對比較重要的一部分,比如説我們配置的批量下發、定時任務,還有一些模板下發。

第三就是權限管理。權限管理分兩部分,一部分是用户權限控制,相對比較常見的 RBCA。另外是審計,包含行為審計和日誌審計。除了審計,還有一部分是危險攔截,比如攔截危險命令的操作、提權操作等。

2、另外比較核心的一塊是 SLI:

SRE(站點可靠性工程)的概念是由 gongle 創建出的, SLI 是指度量系統可靠性的測試指標。OS SLI 通常有可靠性、可用性、性能等方向,OS 通常為延遲、吞吐量、相應時間、準確性、完整性。一部分 SLI 是傳統式主動觸發,比如説網絡延遲抖動發生的時候,運維人員去調用相關的 SLI 一些工具,做下鑽式的分析或者是我們去利用凌晨或者定時巡檢來發現問題,類似於輪詢這樣的方式。

傳統的 SLI 的採集是通過系統調用獲取系統信息,比較耗費資源的。目前比較火的 eBPF 技術就解決了底噪佔用高和安全的問題,可以結合一些基本處理手段來獲取更有價值的數據。

以上介紹的管控和診斷,我們都會通過這兩塊業務收集到數據,也就涉及到數據處理。

數據處理,目前有四個方向的處理方式:

一個是時續化的數據處理。我們將整個診斷,還有管控的數據做一個時續化的處理來幫助運維人員做一些更好的、更深層次的分析。第二就是一些性能的分析,需要對整個性能做 負載畫像 。第三系統的各個的方向實際是相對比較複雜的,我們需要利用一些算法做 聚合分析 。最後就是 異常檢測 。比如 IO 的一個延遲,需要對 IO 企業的時間或者讀時間比較長,做一個離羣檢測分析。

有了這些數據之後,我們會對數據利用運維的一些經驗或者 AI 技術,做一些智能化的一些介入,當然也包含告警。

結合傳統運維工具和 eBPF 技術,我們可以對整個系統的進行全棧觀測。從最底層,比如 CPU 的診斷來説,我們可以利用 CPU frequency 去看到每個進程在對 CPU 的一個調動頻率的觀測。再到上層的一個設備驅動、網絡,還有文件系統,系統調用等,都是可以利用 eBPF 技術來做到很深層次的觀測。

那同樣的對用户態的一些進程,比如説數據庫、中間件或者是 runtime 的一個狀態都可以就是利用 uproble 技術去做觀測。

二、龍蜥社區系統運維 SIG 核心項目技術實踐

系統運維 SIG 組 (Special Interest Group)是致力於打造一個集主機管理配置部署,還有監控報警、異常診斷、安全審計等一系列功能的一個自動化運維平台。目前 SIG 組有三個核心的項目:一個是 SysOM,提供一站式的運維的管理平台。SysAK是系統的一個分析診斷套件,也是核心驅動 SysOM 一些診斷功能的技術底座。最後是比較前瞻性的 coolbpf,是對 BPF 編譯套件的增強,包括一個遠程編譯的技術。還有是對低內核版本的在 eBPF 上特性的回合。目前整個 SIG 組比較活躍的,PR 提交了有一千多。

下面為大家介紹一下 SysOM 的整個的架構。 SysOM 的架構核心是分為兩部分,一個是 server 端,另一個是 client 端。

前端主要是 dashboard 的展示。有主機管理、監控中心、宕機中心、診斷中心、日誌中心和安全中心,主要是負責和用户的一個 UI 交互。後端是負責一些核心的技術實現。比如説監控,有資源監控(目前是通過 prometheuse 的 exporter-node 去實現資源的監控)、任務監控、異常監控。還有宕機分析、診斷,依託的是 SysAK 的一些功能去做到網絡診斷、存儲診斷、內存診斷和調度診斷。最後在安全這一塊,主要包括漏洞檢查、漏洞修復,加固以及日誌審計。

整個的後端存儲有兩部分,一部分是關係型數據庫,就是 RDB,還有一個就是時序性數據庫。

client 包含 SysAK 負責提供系統的性能和故障診斷。vmcored client 主要是負責提供診斷信息的收集。node exporters 負責整個資源的一個診斷,還包含時序化的處理、回傳 prometheus。

那下面我將是通過前端的展示,為大家直觀的瞭解 SysOM 整個的功能:

SysOM 主機管理,支持批量導入導出、集羣化管理,當然也支持遠程的終端。監控中心集成了一些常用的資源的配置項。比如説磁盤、CPU 算力,還有網絡帶寬的使用情況,也包含一些關鍵進程的監控,還有網絡的延時情況。

SysOM 診斷中心,也是相對比較核心的功能。我們目前對系統做了 SRE 診斷,另外也包含整個的軟硬件診斷的情況,還有 IO 診斷,也去做了系統的低狀態的檢查。性能包括系統的調度的使用情況做了火焰圖的分析,這樣我們也就能夠通過很直觀的去看到系統的一些瓶頸、性能的問題。

也包括可用性的檢查,我們做了靜態的一些配置項檢查。比如説調度、內存和 IO 網絡去通過和我們專家經驗去做對比,分析出性能或者是一些故障隱患。

SysOM 比較有亮點的兩個功能:網絡診斷和 IO 診斷。我們現在從單時報能看到的是網絡診斷,通過從 server 端發包給 agent 端,然後把整個調用鏈,在每個階段平均的耗時計算出來,通過一個直觀的圖展示出來,也可以通過鼠標的懸停去看具體的某個階段的耗時情況做一個下轉式的分析。比如下圖對用户態的整個內核的實驗做了分析:

從上圖中我們能看到它整個的一個平衡平均耗時是三十七毫秒。但是在具體的某個時間段是有一定的波動的。

整個 SysOM 的功能是相對比較多的,也歡迎感興趣的小夥伴可以做一些有趣的探索。

最後是 SysOM 安全中心。安全中心通過是 errata 的機制,結合 Anolis 的公勘去做了漏洞的一個實施,定期掃描。當然也是支持漏洞的第三方配置。我們通過比如説配置漏洞數據庫,接入第三方的一些數據庫來增強整個系統或者是運維環境的安全性。

那對一些高危的或者是需要我們重啟的一些 CUE,我們在修復之後也是會給出相應的提示。如重啟服務或者説內核需要重啟系統來生效。

以上是整個 SysOM 相關內容的介紹,關於 SysAK 和 coolbpf 相關介紹可以通過 SIG 組瞭解,也希望大家參與到系統運維 SIG 組,大家一起來多多貢獻。

三、展望和規劃

目前 eBPF 提供了一種全新的動態插樁技術,為運維的性能和故障診斷帶來新活力。統信軟件也將持續貢獻在 OS 方向的專家運營經驗,攜手龍蜥社區一起把系統運維 SIG 組做好,也把龍蜥生態做好,未來也將會在故障診斷、安全和權限管理持續發力。