從趨勢到挑戰,一站式解讀作業系統運維和可觀測性
編者按:
隨著企業數字化轉型步入深水區,裝置數量增加,業務系統更加複雜,除了要保證物理硬體的穩定性和可靠性,運維目的和手段也發生了深刻變革。對此,龍蜥社群系統運維 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 組做好,也把龍蜥生態做好,未來也將會在故障診斷、安全和許可權管理持續發力。
- 那些 Go 語言發展歷史上的重大決策
- 從趨勢到挑戰,一站式解讀作業系統運維和可觀測性
- 百萬級 Topic,騰訊雲的 Apache Pulsar 穩定性實踐
- Apache Doris 在思必馳的應用優化實踐:海量語音通話資料下,實時、離線一體的數倉架構設計實踐
- 愛數正式開源認知智慧開發框架 KWeaver
- 運維智慧化的三大關鍵技術
- “抄我的還‘反捅’我一刀”,Gary Marcus 發文駁斥圖靈獎得主 Yann LeCun
- 當出海成為必選項,企業如何構建全場景全生態技術底座?
- 數智底座必備能力三:快速構建創新應用
- Docker 多階段構建實戰 (multi-stage builds)
- 工作筆記之 SELECT 語句在 SAP ABAP 中的用法總結(上)
- 經久不衰的設計定律是不要讓我思考的設計
- 不要指望下一個像 GPT 這樣的大型語言模型會民主化
- Java 近期新聞:Helidon Níma、Spring Framework、MicroProfile、MicroStream、Kotlin 和 Piranha
- 一文入門 jQuery
- C 學習 ---__libc_open 函式的原理
- 監控系統工作原理
- 甲骨文新微服務框架 Helidon Níma:使用虛擬執行緒實現高效能
- 【雲原生 | 從零開始學 Kubernetes】二、使用 kubeadm 搭建 K8S 叢集
- Elasticsearch 聚合學習之四:結果排序