在這篇文章中,我們將介紹 below:一個用于現(xiàn)代 Linux 系統(tǒng)的 Apache 2.0 許可的資源監(jiān)視器。below 可以讓你重放以前記錄的數(shù)據(jù)。
背景
內核的主要職責之一是調度對資源的訪問。有時這可能意味著分配物理內存,使多個進程可以共享同一主機。其他時候,它可能意味著確保 CPU 時間的公平分配。在這些場景里,內核提供了機制,而將策略留給了“別人”。
近來,這個“別人”通常是 systemd 或 dockerd 這樣的運行時。運行時接受來自調度器或最終用戶的輸入(類似于運行什么和如何運行)并在內核上轉動正確的旋鈕和拉動正確的杠桿,從而使工作負載能夠好好工作。
在一個完美的世界里,故事就到此結束了。然而,現(xiàn)實情況是,資源管理是一個復雜的、相當不透明的技術混合體,在幾十年里計算技術不斷發(fā)展。盡管其中一些技術有各種缺陷和死角,但最終的結果是,容器運作得比較好。
雖然用戶通常不需要關心這些細節(jié),但對于基礎設施運營商來說,對他們的技術架構擁有可見性是至關重要的。可見性和可調試性對于檢測和調查錯誤的配置、問題和系統(tǒng)性故障至關重要。
讓事情變得更加復雜的是,資源中斷往往難以重現(xiàn)。經(jīng)常需要花費數(shù)周時間等待一個問題重新出現(xiàn),以便調查其根本原因。規(guī)模的擴大進一步加劇了這個問題:我們不能在每臺主機上運行一個自定義腳本,希望在錯誤再次發(fā)生時記錄下關鍵狀態(tài)的片段。因此,需要更復雜的工具。這就出現(xiàn)了 below。
動機
歷史上,F(xiàn)acebook 一直是 atop[1] 的忠實用戶。atop 是一個用于 Linux 的性能監(jiān)視器,能夠報告所有進程的活動以及各種系統(tǒng)級活動。與 htop 等工具相比,atop 最引人注目的功能之一是能夠作為一個守護程序記錄歷史數(shù)據(jù)。
這聽起來是一個簡單的功能,但在實踐中,這使得調試無數(shù)的生產問題成為可能。有了足夠長的數(shù)據(jù)保留,就有可能在時間上回溯,查看在問題或故障發(fā)生之前、期間和之后的主機狀態(tài)。
不幸的是,隨著時間的推移,人們發(fā)現(xiàn)atop 有某些不足之處。首先,控制組[2]cgroup 已經(jīng)成為控制和監(jiān)視 Linux 機器上資源的實際方式。atop 仍然缺乏對這一基本構建模塊的支持。
第二,atop 用自定義的 delta 壓縮方法在磁盤上存儲數(shù)據(jù)。這在正常情況下運行良好,但在沉重的資源壓力下,主機很可能會丟失數(shù)據(jù)點。由于使用了 delta 壓縮,在數(shù)據(jù)最重要的時間段內,數(shù)據(jù)可能會大面積丟失。
第三,用戶體驗有一個陡峭的學習曲線。我們經(jīng)常聽到 atop 的資深用戶說,他們喜歡密集的布局和眾多的鍵盤綁定。然而,這也是一把雙刃劍。當一個剛進入這個領域的人想要調試一個生產問題時,他們現(xiàn)在要同時解決兩個問題:手頭的問題和如何使用 atop。
below 是由 Facebook 的資源控制團隊為其設計和開發(fā)的,并得到了 atop 生產環(huán)境用戶的支持。顧名思義,資源控制團隊負責的是規(guī)模化的資源管理。該團隊由內核開發(fā)人員、容器運行時開發(fā)人員和硬件人員組成。認識到下一代系統(tǒng)監(jiān)控器的機會,我們在設計 below 時考慮到以下幾點:
易用性:below 必須既能為新用戶提供直觀的體驗,又能為日常用戶提供強大的功能。*有意義的統(tǒng)計數(shù)據(jù):below 顯示準確和有用的統(tǒng)計數(shù)據(jù)。即便可以,但我們盡量避免收集和傾倒統(tǒng)計數(shù)字。
靈活性:當默認設置不合適時,我們允許用戶自定義他們的體驗。例如包括可配置的鍵綁定、可配置的默認視圖,以及腳本界面(默認為終端用戶接口)。
安裝
安裝該軟件包:
# dnf install -y below
打開記錄守護進程:
# systemctl enable --now below
快速介紹
below 最常用的模式是重放模式。顧名思義,重放模式是重放以前記錄的數(shù)據(jù)。假設你已經(jīng)啟動了記錄守護程序,那么通過運行以下程序啟動一個會話:
$ below replay --time “5 minutes ago”
然后你會看到控制組視圖:
如果你不知道該怎么操作,或者忘記了一個鍵位,按 ? 可以進入幫助菜單。
屏幕的最上方是狀態(tài)欄。狀態(tài)欄顯示關于當前樣本的信息。你可以通過按 t 和 T 分別向前和向后移動樣本。中間的部分是系統(tǒng)概覽。系統(tǒng)概覽包含了關于整個系統(tǒng)的統(tǒng)計數(shù)據(jù),一般來說,這些數(shù)據(jù)總是很有用的。第三部分也是最下面的部分是多用途視圖。上面的圖片顯示了控制組視圖。此外,還有進程和系統(tǒng)視圖,分別通過按 p 和s 來訪問。
按 ↑ 和 ↓ 來移動列表選擇。按回車鍵來折疊和展開控制組。假設你發(fā)現(xiàn)了一個感興趣的控制組,你想看看它里面有哪些進程在運行。要放大進程視圖,選擇控制組并按 z:
再按 z 返回到控制組視圖。這個視圖有時會有點長。如果你對你要找的東西有一個模糊的概念,你可以通過按 / 并輸入一個過濾器來過濾控制組名稱。
在這一點上,你可能已經(jīng)注意到了一個我們還沒有探索過的標簽系統(tǒng)。要在標簽中向前和向后循環(huán),可以分別按 Tab 和 Shift + Tab。我們把這個問題留給讀者去做練習。
其他功能
在底層,below 有一個強大的設計和架構。Facebook 正在不斷升級到更新的內核,所以我們從不假設數(shù)據(jù)源是可用的。這種默契的假設使得內核和 below版本之間能夠完全向前和向后兼容。此外,每個數(shù)據(jù)點都用 zstd 壓縮并完整地存儲。這解決了我們看到的 atop 在大規(guī)模時的 delta 壓縮問題。根據(jù)我們的測試,我們的每個樣本壓縮可以達到平均 5 倍的壓縮率。
below 也使用 [eBPF][8] 來收集關于短暫進程(生存時間短于數(shù)據(jù)收集間隔的進程)的信息。相比之下,atop 使用 BSD 進程核算來實現(xiàn)這一功能,這是一個已知緩慢且容易發(fā)生優(yōu)先級轉換的內核接口。
對于用戶來說,below 還支持實時模式和一個轉儲接口。實時模式將記錄守護程序和 TUI 會話合并到一個進程中。這對于瀏覽系統(tǒng)狀態(tài)是很方便的,不需要為數(shù)據(jù)存儲投入長期運行的守護程序或磁盤空間。轉儲接口是一個可編寫腳本的接口,用于所有的 below 數(shù)據(jù)存儲。轉儲既強大又靈活,詳細的數(shù)據(jù)以 CSV、JSON 和人類可讀格式提供。
總結
below 是一個 Apache 2.0 許可的開源項目,我們(below 的開發(fā)者)認為它比資源監(jiān)控領域的現(xiàn)有工具具有引人注目的優(yōu)勢。我們已經(jīng)花了大量的精力來準備 below,以提供開源使用,所以我們希望讀者和社區(qū)有機會嘗試 below,并報告錯誤和功能要求。
編輯:jq
-
接口
+關注
關注
33文章
8728瀏覽量
152092 -
開源
+關注
關注
3文章
3421瀏覽量
42779 -
腳本
+關注
關注
1文章
392瀏覽量
14973
原文標題:Below:一個時間旅行的資源監(jiān)控器
文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
dm6437使用hdmi連接器輸出到監(jiān)視器上,監(jiān)視器上沒有顯示是怎么回事?
無線嬰兒監(jiān)視器方案(附SI24R1選型)
![無線嬰兒<b class='flag-5'>監(jiān)視器</b>方案(附SI24R1選型)](https://file1.elecfans.com/web2/M00/06/C1/wKgaombfISeAA0tgAADzMb7nbKU004.jpg)
具有 PWM 抑制功能的高側驅動、高側電磁閥監(jiān)視器應用說明
![具有 PWM 抑制功能的高側驅動、高側電磁閥<b class='flag-5'>監(jiān)視器</b>應用說明](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
使用MSP430I2040的單相和直流嵌入式計量(功率監(jiān)視器)
![使用MSP430I2040的單相和直流嵌入式計量(功率<b class='flag-5'>監(jiān)視器</b>)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
集成風扇控制的LM96000硬件監(jiān)視器數(shù)據(jù)表
![集成風扇控制的LM96000硬件<b class='flag-5'>監(jiān)視器</b>數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
LM96194 TruTherm硬件監(jiān)視器數(shù)據(jù)表
![LM96194 TruTherm硬件<b class='flag-5'>監(jiān)視器</b>數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有集成風扇控制的LM93硬件監(jiān)視器數(shù)據(jù)表
![具有集成風扇控制的LM93硬件<b class='flag-5'>監(jiān)視器</b>數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
LM94硬件監(jiān)視器數(shù)據(jù)表
![LM94硬件<b class='flag-5'>監(jiān)視器</b>數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
AFE4400集成模擬前端,用于心率監(jiān)視器和低成本脈沖血氧計數(shù)據(jù)表
![AFE4400集成模擬前端,<b class='flag-5'>用于</b>心率<b class='flag-5'>監(jiān)視器</b>和低成本脈沖血氧計數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
用于監(jiān)視器的緊湊型TFT LCD偏置IC TPS65148數(shù)據(jù)表
![<b class='flag-5'>用于</b><b class='flag-5'>監(jiān)視器</b>的緊湊型TFT LCD偏置IC TPS65148數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
18V、380nA 電壓監(jiān)視器TPS3847數(shù)據(jù)表
![18V、380nA 電壓<b class='flag-5'>監(jiān)視器</b>TPS3847數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
高精度、過壓和欠壓監(jiān)視器TPS3702數(shù)據(jù)表
![高精度、過壓和欠壓<b class='flag-5'>監(jiān)視器</b>TPS3702數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
電視和監(jiān)視器TFT-LCD面板的偏置電源TPS65161數(shù)據(jù)表
![電視和<b class='flag-5'>監(jiān)視器</b>TFT-LCD面板的偏置電源TPS65161數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
用于電視和監(jiān)視器TFT-LCD面板的帶高速放大器的緊湊型LCD偏置IC TPS65165數(shù)據(jù)表
![<b class='flag-5'>用于</b>電視和<b class='flag-5'>監(jiān)視器</b>TFT-LCD面板的帶高速放大器的緊湊型LCD偏置IC TPS65165數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論