Linux中國

系統之鍬sysdig:Linux伺服器監控和排障利器

在本教程中,我們將探索sysdig的安裝及其基本用法,在Linux上實施系統監控和排障。

安裝Sysdig

對於本教程,由於為了簡便、縮短安裝流程以及版本的不可知,我們將選擇使用官方網站提供的自動化安裝過程。在自動化過程中,安裝腳本會自動檢測操作系統並安裝必需的依賴包。

以root身份運行以下命令來從官方apt/yum倉庫安裝sysdig

# curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | bash 

安裝完成後,我們可以通過以下方法調用sysdig來感受一下它:

# sysdig 

我們的屏幕將馬上被系統上發生的所有事件填滿,對於這些信息,不便於我們做更多操作。要進一步處理,我們可以運行:

# sysdig -cl | less 

來查看可用的鑿子列表。

默認有以下類目可用,各個類目中分布有多個內建的鑿子。

  • CPU Usage:CPU使用量
  • Errors:錯誤
  • I/O
  • Logs:日誌
  • Misc:混雜
  • Net:網路
  • Performance:性能
  • Security:安全
  • System State:系統狀態

要顯示指定鑿子上的信息(包括詳細的命令行用法),運行以下命令:

# sysdig -cl [鑿子名稱] 

例如,我們可以檢查「網路」類目下關於spy_port鑿子的信息:

# sysdig -i spy_port 

鑿子可以通過過濾器(可同時應用於實時數據和記錄文件)組合,以獲取更多有用的輸出。

過濾器遵從「類.欄位」結構。例如:

  • fd.cip:客戶端IP地址。
  • evt.dir:事件方向,可以是『>』用於進入事件,或『<』用於退出事件。

完整的過濾器列表可以通過以下命令顯示:

# sysdig -l 

在本教程剩餘部分,我將演示幾個sysdig的使用案例。

Sysdig實例: 伺服器性能排障

假定你的伺服器發生了性能問題(如,沒有回應,或者重大的回應延遲)。你可以使用瓶頸鑿子來顯示當前10個最慢系統調用的列表。

使用以下命令在存活伺服器上進行實時檢查。「-c」標識,後跟鑿子名稱告訴sysdig運行指定的鑿子。

# sysdig -c bottlenecks 

或者,你可以離線對伺服器實施性能分析。在此種情況下,你可以保存完整的sysdig記錄到文件,然後像下面這樣針對記錄運行瓶頸鑿子。

首先,保存sysdige記錄(使用Ctrl+c來停止收集):

# sysdig -w trace.scap 

收集完記錄後,你可以運行以下命令來檢查捕獲間隔中最慢的系統調用:

# sysdig -r trace.scap -c bottlenecks 

你需要關注欄#2,#3和#4,這些分別表示執行時間、進程名和PID。

Sysdig實例: 監控交互用戶活動

假定你作為系統管理員想要監控系統中交互的用戶活動(如,用戶在命令行輸入了什麼命令,以及用戶去了什麼目錄),這時spy_user鑿子就派上用場了。

讓我們首先通過一些額外選項來收集一個sysdig記錄。

# sysdig -s 4096 -z -w /mnt/sysdig/$(hostname).scap.gz 
  • 「-s 4096」告訴sysdig每個事件捕獲4096位元組。
  • 「-z」 (與「-w」一起使用)為記錄文件啟用壓縮。
  • 「-w 」保存sysdig記錄到指定的文件。

在上面的例子中,我們自定義了基於每個主機的壓縮的記錄文件的名稱。記住,你可以在任何時候按下Ctrl+c來打斷sysdig的執行。

在我們收集到了合理數量的數據後,我們可以通過運行以下命令來查看每個用戶的交互活動:

# sysdig -r /mnt/sysdig/debian.scap.gz -c spy_users 

上面輸出的第一欄表示與指定用戶的活動相關進程的PID。

如果你想要定位一個指定的用戶,以及只監控該用戶的活動又怎麼樣呢?你可以通過用戶名對spy_users鑿子的結果進行過濾:

# sysdig -r /mnt/sysdig/debian.scap.gz -c spy_users "user.name=xmodulo" 

Sysdig實例: 監控文件I/O

我們可以使用「-p」標識來自定義sysdig記錄的輸出格式,並指定雙引號括起來的想要的欄位(如用戶名、進程名,以及文件或套介面名稱)。在本例中,我們將創建一個記錄文件,該文件將只包含在家目錄中的寫入事件(我們今後可以使用「sysdig -r writetrace.scap.gz」來檢測該文件)。

# sysdig -p "%user.name %proc.name %fd.name" "evt.type=write and fd.name contains /home/" -z -w writetrace.scap.gz 

Sysdig實例: 監控網路I/O

作為伺服器排障的一部分,你可能想要監聽網路通信,此工作通常由tcpdump做。對於sysdig,可以很容易進行通信嗅探,其風格更為對用戶友好。

例如,你可以檢查由特定IP地址,特定進程(如apache2)提供的數據(ASCII編碼格式):

# sysdig -s 4096 -A -c echo_fds fd.cip=192.168.0.100 -r /mnt/sysdig/debian.scap.gz proc.name=apache2 

如果你想要監控原生數據傳輸(二進位格式),請把「-A」替換為「-X」:

# sysdig -s 4096 -X -c echo_fds fd.cip=192.168.0.100 -r /mnt/sysdig/debian.scap.gz proc.name=apache2 

要獲取更多信息、實例以及案例分析,你可以查閱項目網站。相信我,會有著無限可能,但請不要僅僅局限於我所寫的這些。安裝sysdig,請從今天開始深入挖掘吧!

via: http://xmodulo.com/monitor-troubleshoot-linux-server-sysdig.html

作者:Gabriel Cánepa 譯者:GOLinux 校對:wxy

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


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國