不是所有的Linux工具都會讓人驚嘆,但這個絕對讓你叫絕
今天我要向大家介紹一款非常強大的系統診斷和監控工具——sysdig。它能替代top、iftop、lsof和strace等工具,讓你的工作更加高效。下面讓我舉幾個應用場景,讓你親眼見證它的強大!
什么是sysdig
sysdig是一款開源的系統診斷和監控工具,Sysdig可以看做是 strace + tcpdump + lsof + htop + iftop 以及其他系統分析工具的合集 。能夠實時捕獲系統的運行狀態并以可視化的方式展示。通過sysdig,用戶可以深入了解系統的各項指標、進程活動、網絡流量等情況,從而更好地進行故障排查、性能優化和安全監控。
安裝sysdig
首先,我們需要安裝sysdig工具。sysdig提供了多種安裝方式,包括源代碼編譯安裝和各種包管理器安裝。在大多數Linux發行版上,您可以通過包管理器輕松安裝sysdig。例如,在Ubuntu系統上,可以使用以下命令安裝:
sudo apt-get -y install sysdig
安裝成功后,通過下面命令查看對應的版本信息:
controlplane $ sysdig --version
sysdig version 0.26.4
使用場景
場景一:跟蹤進程的系統調用
跟蹤進程的系統調用是故障排查中常用的手段,可以幫助您了解應用程序在執行過程中的具體行為。舉例來說,假設一個應用程序在處理某個請求時出現了失敗,通過跟蹤系統調用,您可以得知是在哪個環節出現了問題,或者是因為缺少了哪個依賴庫。現在假設您有一臺運行Nginx服務的服務器,想要查看該Nginx服務的系統調用,您可以使用以下命令:
sysdig proc.name=nginx
或
sysdig proc.pid = 進程號
執行完上述命令后,它會實時監聽Nginx的進程,如下圖:
監聽Nginx
我們在另外一個終端向這個nginx發送一個HTTP請求,這時,sysdig就會捕抓到請求Nginx的所有數據。如下圖:
監聽Nginx的結果
場景二:系統性能分析
這也是sysdig的拿手好戲之一。比如,要查看CPU使用最高的進程,您可以使用以下命令:
sysdig -c topprocs_cpu
執行上述命令后,如下圖:
監控CPU情況
這將列出使用CPU最高的進程,可以清晰的看出當前系統中哪些進程占用CPU最高,一目了然,非常直觀。
查看網絡使用最高的進程,您可以執行以下命令:
sysdig -c topprocs_net
執行完上述命令后,將列出使用網絡最高的進程,可以看出哪些進程使用網絡流量比較大。如下圖:
監控網絡情況
要查看讀寫硬盤最高的進程,您可以執行以下命令:
sysdig -c topprocs_file
執行上述命令后,如下圖:
監控硬盤讀寫情況
這里會幫你列出讀寫硬盤最高的進程,假設你的系統硬盤讀寫慢,你想知道是那個進程,占用的磁盤IO比較大,就可以通過這個命令得出來,哪個進程現在占用大量的磁盤IO,從而造成硬盤的一個瓶頸。
查看網絡鏈接,您可以執行以下命令:
sysdig -c netstat
執行上述命令后,如下圖:
這里面列出的,與我們直接使用netstat命令列出的內容類似,包括監聽,網絡鏈接等等。
查看進程列表,您可以執行以下命令:
sysdig -c ps
執行這個命令后,幫你列出當前系統中所有的進程,包括進程ID以及它的文件描述符的限制,如下圖:
查看系統打開的文件描述,您可以執行以下命令:
sysdig -c lsof
執行完這個命令后,將列出系統中打開的所有文件描述符。包括進程PID以及文件,都能看到。如下圖:
場景三:查看某個目錄被哪些進程打開
想要了解某個目錄被哪些進程打開,可以使用以下命令:
sysdig fd.name contains /etc
它將會過濾出打開文件描述符中,包含etc的路徑,etc目錄下的所有的打開文件都能在這里看到。如下圖:
寫到最后
sysdig是一款強大的系統診斷和監控工具,結合系統調用跟蹤和抓包功能,能夠實時捕獲系統運行狀態并以可視化方式展示,提供了豐富的命令行工具和高級功能,可應用于性能優化、故障排查、安全監控等多個場景,是系統管理員和運維工程師的得力助手。