Sysdig – 一個強大的Linux系統監控和故障排除工具

Sysdig是一款開源、跨平台、功能強大且靈活的系統監控和故障排除工具,主要用於Linux;它也能在Windows和Mac OSX上運行,但功能有限,可用於系統分析、檢測和除錯。

通常,您可能會結合各種不同的Linux性能監控和故障排除工具,包括下面列出的工具,來執行Linux監控和除錯任務:

  1. strace – 發現進程的系統調用和信號。
  2. tcpdump – 原始網絡流量監控。
  3. netstat – 網絡連接監控。
  4. htop – 實時進程監控。
  5. iftop – 實時網絡帶寬監控。
  6. lsof – 查看哪些進程打開了哪些文件。

然而,sysdig集成了所有上述工具以及更多工具,提供了一个单一且简单的程序,特别是在惊人的容器支持方面。它使您能够捕获、保存、过滤和检查Linux系统以及容器的真实行为(事件流)。

它带有一个命令行界面和一个强大的交互式UI(csysdig),可以让您实时查看系统活动,或执行跟踪转储并保存以供以后分析。您可以在下面的视频中看到 csysdig 的工作方式。

Sysdig 功能:

  • 它快速、稳定且易于使用,有着全面的文档支持。
  • 具有对容器技术的本地支持,包括 Docker、LXC。
  • 支持 Lua 脚本;提供 chisels(轻量级 Lua 脚本)用于处理捕获的系统事件。
  • 支持有用的输出过滤。
  • 支持系统和应用程序跟踪。
  • 可以与 Ansible、Puppet 和 Logstash 集成。
  • 启用样本高级日志分析。
  • 还为伦理黑客提供 Linux 服务器攻击(取证)分析功能等诸多功能。

在本文中,我们将展示如何在Linux系统上安装 sysdig,并使用基本示例进行系统分析、监控和故障排除。

如何在Linux中安装 Sysdig

安裝sysdig套件就像執行以下命令一樣簡單,它將檢查所有要求;如果一切就緒,它將從Draios APT/YUM存儲庫下載並安裝該套件。

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

安裝後,您需要以root身份運行sysdig,因為它需要訪問關鍵區域,如/proc文件系統,/dev/sysdig*設備,並需要自動加載sysdig-probe內核模塊(如果尚未加載);否則使用sudo命令

最基本的示例是不帶任何參數運行它,這將使您能夠實時查看Linux系統的事件流:

$ sudo sysdig
Watch Linux System Events

上述輸出(原始數據)可能對您來說意義不大,為了獲得更有用的輸出,運行csysdig

$ sudo csysdig 
Monitor Linux System Events

注意:要真正感受這個工具,您需要使用sysdig從運行中的Linux系統產生像我們之前看到的原始數據:這要求您了解如何使用過濾器和chisels。

但如果您需要一種無痛的方式來使用sysdig–繼續使用csysdig

理解Sysdig Chisels和Filters

Sysdig chisels是最小的Lua腳本,用於檢查sysdig事件流以執行有用的系統故障排除操作等。以下命令將幫助您查看所有可用的chisels:

$ sudo sysdig -cl

這個螢幕截圖顯示了不同類別下的鑿子樣本清單。

View Sysdig Chisels

如果你想獲取有關特定鑿子的更多信息,請使用-i標誌:

$ sudo sysdig -i topprocs_cpu
View Sysdig Chisel Info

Sysdig過濾器增加了從事件流中獲取輸出的功能,它們允許你自定義輸出。你應該在命令行的末尾指定它們。

A straightforward and commonest filter is a basic “class.field=value” check, you can also combine chisels with filters for even more powerful customizations.

要查看可用字段類別、字段及其描述的列表,請輸入:

$ sudo sysdig -l
View Sysdig Field Classes

創建Linux系統跟蹤文件

要將sysdig輸出轉儲到文件以便以後進行分析,請使用-w標誌,就像這樣。

你可以使用-r標誌來讀取跟蹤轉儲文件:

$ sudo sysdig -r trace.scap

-s選項用於指定每個系統事件要捕獲的數據字節數。在這個例子中,我們正在過濾mongod進程的事件。

$ sudo sysdig -s 3000 -w trace.scap
$ sudo sysdig -r trace.scap proc.name=mongod
Create MongoDB Trace File

監控Linux進程

要列出系統進程,請輸入:

$ sudo sysdig -c ps
Monitor Linux Processes

按CPU使用率監控進程

要通過運行以下命令監視CPU使用率百分比最高的進程:

$ sudo sysdig -c topprocs_cpu
Monitor Processes by CPU Usage

監控網絡連接和I/O

要查看系統網絡連接,運行:

$ sudo sysdig -c netstat
Monitor Network Connections

以下命令將幫助你列出總字節數最多的網絡連接:

$ sudo sysdig -c topconns

接下來,你還可以列出網絡I/O最多的進程,如下:

$ sudo sysdig -c topprocs_net    

監控系統文件I/O

你可以輸出系統上進程讀取和寫入的數據,如下:

$ sudo sysdig -c echo_fds
Monitor System IO

要按(讀取+寫入)磁盤字節數列出頂級進程,請使用:

$ sudo sysdig -c topprocs_file   

排除 Linux 系統效能問題

為了監控系統瓶頸(系統調用緩慢),執行以下命令:

$ sudo sysdig -c bottlenecks
Troubleshoot Linux Performance

追蹤進程執行時間

要追蹤進程的執行時間,您可以運行以下命令並將跟踪信息傾印到文件中:

$ sudo sysdig -w extime.scap -c proc_exec_time 
Track Process Execution Time

然後使用過濾器來縮小對特定進程(在此示例中為 postgres)的詳細信息:

$ sudo sysdig -r extime.scap proc.name=postgres

發現緩慢的網絡 I/O

這個簡單的命令將幫助您檢測緩慢的網絡 I/O:

$ sudo sysdig -c netlower     

監視日誌文件記錄

以下命令將幫助您顯示寫入到系統日誌的每條消息,如果您對特定進程的日誌記錄感興趣,請創建一個跟踪傾印並相應地過濾它,如前所示:

$ sudo sysdig -c spy_syslog      

您可以將任何進程寫入的數據打印到日誌文件中,如下所示:

$ sudo sysdig -c spy_logs   

監控 HTTP 伺服器請求

如果您的系統上運行著像 Apache 或 Nginx 這樣的 HTTP 伺服器,請使用此命令查看伺服器的請求日誌:

$ sudo sysdig -c httplog    
$ sudo sysdig -c httptop   [Print Top HTTP Requests] 
Monitor HTTP Requests

顯示登錄外殼和互動用戶活動

以下命令將使您能夠查看所有登錄外殼 ID:

$ sudo sysdig -c list_login_shells

最後,您可以顯示系統用戶的互動活動,如下所示:

$ sudo sysdig -c spy_users
Monitor User Activity

有關更多使用信息和示例,請閱讀 sysdig 和 csysdig 的手冊頁:

$ man sysdig 
$ man csysdig

參考:https://www.sysdig.org/

同時檢查這些有用的 Linux 效能監控工具:

  1. BCC – Linux性能監控、網路和更多方面的動態追踪工具
  2. pyDash – 基於Web的Linux性能監控工具
  3. Perf – Linux性能監控和分析工具
  4. Collectl:Linux的高級一體化性能監控工具
  5. Netdata – Linux系統的實時性能監控工具
結論

Sysdig 將眾多命令列工具的功能集合到一個非凡的界面中,讓您能深入探究Linux系統事件以收集數據,保存以供日後分析,並提供出色的容器支援。

如有任何問題或想法要分享關於此工具,請使用下方的反饋表格。

Source:
https://www.tecmint.com/sysdig-system-monitoring-and-troubleshooting-tool-for-linux/