Below:一個時間旅行的資源監控器

Below:一個時間旅行的資源監控器

在這篇文章中,我們將介紹

below

:一個用於現代 Linux 系統的 Apache 2。0 許可的資源監視器。

below

可以讓你重放以前記錄的資料。

Below:一個時間旅行的資源監控器

背景

核心的主要職責之一是排程對資源的訪問。有時這可能意味著分配物理記憶體,使多個程序可以共享同一主機。其他時候,它可能意味著確保 CPU 時間的公平分配。在這些場景裡,核心提供了機制,而將策略留給了“別人”。近來,這個“別人”通常是 systemd 或 dockerd 這樣的執行時。執行時接受來自排程器或終端使用者的輸入(類似於執行什麼和如何執行)並在核心上轉動正確的旋鈕和拉動正確的槓桿,從而使工作負載能夠

好好

工作。

在一個完美的世界裡,故事就到此結束了。然而,現實情況是,資源管理是一個複雜的、相當不透明的技術混合體,在幾十年裡計算技術不斷髮展。儘管其中一些技術有各種缺陷和死角,但最終的結果是,容器運作得比較好。雖然使用者通常不需要關心這些細節,但對於基礎設施運營商來說,對他們的技術架構擁有可見性是至關重要的。可見性和可除錯性對於檢測和調查錯誤的配置、問題和系統性故障至關重要。

讓事情變得更加複雜的是,資源中斷往往難以重現。經常需要花費數週時間等待一個問題重新出現,以便調查其根本原因。規模的擴大進一步加劇了這個問題:我們不能在

每臺

主機上執行一個自定義指令碼,希望在錯誤再次發生時記錄下關鍵狀態的片段。因此,需要更復雜的工具。這就出現了

below

動機

歷史上,Facebook 一直是 atop的忠實使用者。

atop

是一個用於 Linux 的效能監視器,能夠報告所有程序的活動以及各種系統級活動。與

htop

等工具相比,

atop

最引人注目的功能之一是能夠作為一個守護程式記錄歷史資料。這聽起來是一個簡單的功能,但在實踐中,這使得除錯無數的生產問題成為可能。有了足夠長的資料保留,就有可能在時間上回溯,檢視在問題或故障發生之前、期間和之後的主機狀態。

不幸的是,隨著時間的推移,人們發現

atop

有某些不足之處。首先,控制組cgroup 已經成為控制和監視 Linux 機器上資源的實際方式。

atop

仍然缺乏對這一基本構建模組的支援。第二,

atop

用自定義的 delta 壓縮方法在磁碟上儲存資料。這在正常情況下執行良好,但在沉重的資源壓力下,主機很可能會丟失資料點。由於使用了 delta 壓縮,在資料最重要的時間段內,資料可能會大面積丟失。第三,使用者體驗有一個陡峭的學習曲線。我們經常聽到

atop

的資深使用者說,他們喜歡密集的佈局和眾多的鍵盤繫結。然而,這也是一把雙刃劍。當一個剛進入這個領域的人想要除錯一個生產問題時,他們現在要同時解決兩個問題:手頭的問題和如何使用

atop

below

是由 Facebook 的資源控制團隊為其設計和開發的,並得到了

atop

生產環境使用者的支援。顧名思義,資源控制團隊負責的是規模化的資源管理。該團隊由核心開發人員、容器執行時開發人員和硬體人員組成。認識到下一代系統監控器的機會,我們在設計

below

時考慮到以下幾點:

易用性:

below

必須既能為新使用者提供直觀的體驗,又能為日常使用者提供強大的功能。 *有意義的統計資料:

below

顯示準確和有用的統計資料。即便可以,但我們儘量避免收集和傾倒統計數字。

靈活性:當預設設定不合適時,我們允許使用者自定義他們的體驗。例如包括可配置的鍵繫結、可配置的預設檢視,以及指令碼介面(預設為終端使用者介面)。

安裝

安裝該軟體包:

# dnf install -y below

開啟記錄守護程序:

# systemctl enable ——now below

快速介紹

below

最常用的模式是重放模式。顧名思義,重放模式是重放以前記錄的資料。假設你已經啟動了記錄守護程式,那麼透過執行以下程式啟動一個會話:

$ below replay ——time “5 minutes ago”

然後你會看到控制組檢視:

Below:一個時間旅行的資源監控器

如果你不知道該怎麼操作,或者忘記了一個鍵位,按

可以進入幫助選單。

螢幕的最上方是狀態列。狀態列顯示關於當前樣本的資訊。你可以透過按

t

T

分別向前和向後移動樣本。中間的部分是系統概覽。系統概覽包含了關於整個系統的統計資料,一般來說,這些資料總是很有用的。第三部分也是最下面的部分是多用途檢視。上面的圖片顯示了控制組檢視。此外,還有程序和系統檢視,分別透過按

p

s

來訪問。

來移動列表選擇。按回車鍵來摺疊和展開控制組。假設你發現了一個感興趣的控制組,你想看看它裡面有哪些程序在執行。要放大程序檢視,選擇控制組並按

z

Below:一個時間旅行的資源監控器

再按

z

返回到控制組檢視。這個檢視有時會有點長。如果你對你要找的東西有一個模糊的概念,你可以透過按

/

並輸入一個過濾器來過濾控制組名稱。

Below:一個時間旅行的資源監控器

在這一點上,你可能已經注意到了一個我們還沒有探索過的標籤系統。要在標籤中向前和向後迴圈,可以分別按

Tab

Shift

+

Tab

。我們把這個問題留給讀者去做練習。

其他功能

在底層,

below

有一個強大的設計和架構。Facebook 正在不斷升級到更新的核心,所以我們從不假設資料來源是可用的。這種默契的假設使得核心和

below

版本之間能夠完全向前和向後相容。此外,每個資料點都用 zstd 壓縮並完整地儲存。這解決了我們看到的

atop

在大規模時的 delta 壓縮問題。根據我們的測試,我們的每個樣本壓縮可以達到平均 5 倍的壓縮率。

below

也使用 [eBPF][8] 來收集關於短暫程序(生存時間短於資料收集間隔的程序)的資訊。相比之下,

atop

使用 BSD 程序核算來實現這一功能,這是一個已知緩慢且容易發生優先順序轉換的核心介面。

對於使用者來說,

below

還支援實時模式和一個轉儲介面。實時模式將記錄守護程式和 TUI 會話合併到一個程序中。這對於瀏覽系統狀態是很方便的,不需要為資料儲存投入長期執行的守護程式或磁碟空間。轉儲介面是一個可編寫指令碼的介面,用於所有的

below

資料儲存。轉儲既強大又靈活,詳細的資料以 CSV、JSON 和人類可讀格式提供。

總結

below

是一個 Apache 2。0 許可的開源專案,我們(

below

的開發者)認為它比資源監控領域的現有工具具有引人注目的優勢。我們已經花了大量的精力來準備

below

,以提供開源使用,所以我們希望讀者和社群有機會嘗試

below

,並報告錯誤和功能要求。

via: https://fedoramagazine。org/below-a-time-traveling-resource-monitor/

作者:Daniel Xu選題:lujun9972譯者:wxy校對:wxy

本文由 LCTT原創編譯,Linux中國榮譽推出