如何安裝Sysdig監控Linux系統

您的Linux系統是一個優秀的伺服器和桌面平台。但像其他複雜的系統一樣,在系統運行的最佳狀態下,擁有適當的監控是至關重要的。幸運的是,Sysdig就在附近!

Sysdig是一個全面的Linux監控工具,可以監控系統的威脅、錯誤、使用模式等等。在本教程中,您將學習安裝Sysdig,並在此過程中突出顯示如何更好地監控您的Linux系統的特定配置選項。

繼續閱讀,不再錯過任何“警報”!

先決條件

本教程將進行實際演示。如果您想跟著操作,請確保您擁有以下內容。

  • A Linux machine – This tutorial uses Ubuntu 20.04 LTS, but any Linux distributions will work.
  • A non-root user with sudo privileges.

在Linux上安裝Sysdig

Sysdig命令行工具通常在大多數現代Linux發行版中都可用,您可以像安裝其他軟體包一樣安裝Sysdig在您的機器上。

1. 開啟終端機,執行下方的指令 apt update 以確保您的發行版儲存庫中有最新的更新。此指令會更新系統的套件清單,可能需要幾分鐘的時間才能完成。

sudo apt update -y
Updating your System’s Package Lists

2. 接著執行下方的指令 apt install 來下載 (curl) 並且安裝 Sysdig 所需的套件。此指令也會安裝一些後續教學中使用的額外模組,如下:

  • gnupg – GNU Privacy Guard 是一個用於安全通訊和資料儲存的工具。此套件用於下載 Sysdig 的公開 GPG 金鑰,以驗證 Sysdig 套件的有效性。
  • software-properties-common – 通過命令行環境或圖形界面快速管理軟件源的方法。該套件允許您使用add-apt-repository命令添加Sysdig套件庫。
  • linux-headers-$(uname -r) – 提供構建正在運行的內核的內核模塊所需的文件。此套件是必需的,因為您可能在具有舊內核的機器上安裝Sysdig。
sudo apt install gnupg software-properties-common curl -y && sudo apt install linux-headers-$(uname -r) -y
Installing the Necessary Packages for Sysdig

3. 執行下面的curl命令,將Sysdig的GPG公鑰(GPG)添加到您的APT金鑰圈中。此命令可讓您驗證從sysdig.com下載的套件是否有效且未修改。

curl -s https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public | apt-key add -

成功添加金鑰後,您將收到一條OK消息,如下所示。

Adding the GPG key to APT”s Keyring

4. 現在,執行下面的curl命令,以靜默(-s)方式下載Sysdig庫並將其添加到系統中。文件的.list擴展名告訴APT該文件是一個存儲庫URL的列表,而不僅僅是一個URL。

curl -s -o /etc/apt/sources.list.d/draios.list http://download.draios.com/stable/deb/draios.list

5. 重新運行下面的 apt update 命令,以下載新的 Sysdig 存儲庫並使用新的存儲庫信息更新您的 APT 包列表。

sudo apt update -y

如果您的 APT 配置正確,您將看到以下輸出。

Updating your APT’s Package Lists

6. 下載 Sysdig 存儲庫後,在您的機器上運行下面的 apt install 命令以安裝 sysdig。此命令將下載並安裝 sysdig 包及其支持包。

sudo apt install sysdig -y
Installing Sysdig

7. 最後,運行下面的 sysdig 命令檢查您的機器上安裝的 Sysdig 版本。

sudo sysdig --version

版本號有助於確定您的 Sysdig 包是否為最新版本。版本還可以提供關於 Sysdig 發布是否影響系統性能的信息。

如下所示,0.28.0 是撰寫本文時的最新版本的 sysdig。您的版本號可能不同。

Verifying Sysdig Version Installed

使用 csysdig 監控 Linux 系統

現在您已經安裝了Sysdig,您可以使用Sysdig來查看系統的運行情況。Sysdig命令行工具具有許多標誌,可以為您提供系統和其活動的不同視圖。最基本的示例是csysdig命令。

運行不帶任何標誌的csysdig命令,以查看系統當前的情況。該命令將顯示所有當前運行的進程的活動。

請注意,您必須以sudo權限運行Sysdig命令,以完全訪問系統。一些系統活動可能被默認隱藏,非root用戶無法查看,例如/proc文件系統的輸出。Sysdig還需要sudo權限來自動加載內核符號,以執行其許多技巧,如sysdig-probe內核模塊

sudo csysdig

如果遇到以下錯誤,您需要重新安裝ncurses-term軟件包。在安裝Sysdig後,ncurses-term軟件包往往會損壞。Sysdig依賴於ncurses-term軟件包來支持其ncurses界面。

Getting an Error while Running csysdig

如果csysdig命令成功,您將獲得以下輸出,按選項卡進行組織。

Description
PID The Process ID that assigned by the Linux kernel. You use PIDs to identify and manage processes.
PPID The parent process ID of the process. You use PPID to trace the process back through its parent processes. Together, PID and PPID uniquely identify a process on your system.
CPU The percentage of CPU used by the application since it started can be seen on a scale from 0 to 100%, where 100% equals total CPU usage. You use CPU usage to find applications that are hogging system resources.
USER The name of the user that started the process. You use USER to find out who is executing a process you are interested in.
TH The name of the user that started the process. You use USER to find out who is executing a process you are interested in.
VIRT The total amount of virtual memory used by the application. You use VIRT to find applications that are hogging your system’s memory.
RES The number of resident memory pages a process has, as mapped to physical memory. You use RES to find applications that are hogging your system’s memory.
FILE The disk’s file descriptor used by the application. You use FILE to see which files are being read or written frequently, usually an indication of I/O activity.
NET The network socket descriptor used by the application. You use NET to see which network connections are being used by the process, and how much data is being transferred in bytes per second.
Command The network socket descriptor used by the application. You use NET to see which network connections are being used by the process, and how much data is being transferred in bytes per second.

乍一看,csysdig界面看起來與像htop這樣的監控工具相似。

Monitoring System Processes using Csysdig

按下F2,頂部標籤將改變,顯示在左側按鈕組織成的新一組信息,如下所示。

Sysdig稱這些為“視圖”,因為它們是不同的系統視圖,根據它們顯示的信息類型進行組織,提供更多上下文。由於這些視圖是基於LUA腳本的,您可以自定義腳本,從系統中提取不同的數據並按照您的喜好更改視圖。

Viewing System Information via the Csysdig Views

默認情況下,LUA腳本位於/usr/share/sysdig/chisels目錄中,如下所示。

ls /usr/share/sysdig/chisels
Listing files (scripts) in the /usr/share/sysdig/chisels directory

使用Sysdig Chisels監控佔用CPU的進程

Sysdig提供了幾個預先設定的chisels,可以自動收集特定的系統信息,稱為“chisels”。也許您的CPU性能較慢。如果是這樣,使用指定的chisel運行sysdig命令,可以查看佔用大部分CPU使用率的應用程序/進程。

1.運行下面的sysdig命令以列出可用的chisels。

sudo sysdig -cl

以下屏幕截图只显示了几个凿子。但您可以在官方文档中找到并了解所有可用凿子的完整列表。

Sysdig凿子也是LUA脚本。您可以创建自己的凿子来监视特定的系统信息或实现自己的视图,但这个主题超出了本教程的范围。

Showing Sysdig Chisels

2. 接下来,运行以下命令以查看关于特定凿子的详细信息(-i),如此演示中的topprocs_cpu

sudo sysdig -i topprocs_cpu

您可以在下面看到有关topprocs_cpu凿子的所有信息,包括凿子的名称、类别和凿子的简要描述。

在此示例中,topprocs_cpu凿子被归类为CPU使用率,并显示由最高CPU利用率定义的顶级进程。

一旦您了解了一个凿子的功能,您就可以开始使用该凿子。

Showing All Information About the topprocs_cpu Chisel

3. 运行以下sysdig命令,指定正确的凿子(-c topprocs_cpu),以查找系统中使用最多CPU的应用程序。

sudo sysdig -c topprocs_cpu

Sysdig在此演示中捕获并在终端上显示了前10个消耗CPU的进程。最消耗CPU的进程将显示在顶部(sshd),以便更快地找到它们。

Listing the process defined by the highest CPU utilization.

监视过滤后的系统信息

在某些情況下,輸出非常龐大,很難基於特定的鑿子來過濾系統信息。幸運的是,Sysdig提供了一個強大的過濾選項,它使用Lua語法,讓您可以進行有效的過濾。

假設您只想找出對高CPU使用率有貢獻的sshd進程。您可以通過特定的PID或進程名定義一個過濾表達式

運行下面的sysdig命令,只顯示使用大量CPU的sshd進程。

sudo sysdig proc.name=sshd

如下所示,您將獲得一個經過過濾的輸出,而不會獲得其他任何進程信息。

從輸出中,您可以獲得關於sshd進程的更多信息,例如為什麼sshd進程使用更多的CPU或內存等。

Listing the SSHD process

創建事件日誌文件來監控您的系統

Sysdig提供的一個很棒的功能是事件日誌文件,它允許您收集有關應用程序或系統的所有信息,以供以後分析。事件日誌文件提供了與前面示例中的命令行輸出相同的信息,但保存到磁盤上的文件中。

1.運行下面的命令,在您的主目錄中創建一個名為ata.scap的文件(使用-w選項),Syslog將在其中存儲所有sysdig的輸出。

.scap文件擴展名允許以人類可讀的文本形式保存數據流。

sudo sysdig -w ata.scap

2. 接下來,執行下面的ls -la指令來列出工作目錄中的所有檔案。

ls -la

你會注意到在你的個人目錄中有一個名為ata.scap的新檔案,如下所示。

Listing All Files in Home Directory

3. 最後,執行以下指令以讓Sysdig讀取(-r)Sysdig事件記錄檔(ata.scap),並在你SSH進入伺服器時列印你系統的行為。

sudo sysdig -r ata.scap
Viewing the ata.scap File

結論

在這篇文章中,你學習了如何在Ubuntu 20.04上安裝Sysdig並使用csysdig來收集系統、應用程式和安全資訊。你還了解了如何建立一個事件記錄檔,以便記錄你系統的行為。

在這一點上,你已經意識到在你的系統中安裝Sysdig提供了強大的工具。而這些工具可以幫助你更深入地了解你的系統、應用程式和基礎架構的運作方式。

現在,憑藉這些新發現的知識,為什麼不學習如何用Sysdig解碼你的HTTP流量?或者如何使用Sysdig追蹤應用程式的瓶頸?

Source:
https://adamtheautomator.com/sysdig/