Sysdig是一款開源、跨平台、功能強大且靈活的系統監控和故障排除工具,主要用於Linux;它也能在Windows和Mac OSX上運行,但功能有限,可用於系統分析、檢測和除錯。
通常,您可能會結合各種不同的Linux性能監控和故障排除工具,包括下面列出的工具,來執行Linux監控和除錯任務:
- strace – 發現進程的系統調用和信號。
- tcpdump – 原始網絡流量監控。
- netstat – 網絡連接監控。
- htop – 實時進程監控。
- iftop – 實時網絡帶寬監控。
- 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

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

注意:要真正感受這個工具,您需要使用sysdig從運行中的Linux系統產生像我們之前看到的原始數據:這要求您了解如何使用過濾器和chisels。
但如果您需要一種無痛的方式來使用sysdig–繼續使用csysdig。
理解Sysdig Chisels和Filters
Sysdig chisels是最小的Lua腳本,用於檢查sysdig事件流以執行有用的系統故障排除操作等。以下命令將幫助您查看所有可用的chisels:
$ sudo sysdig -cl
這個螢幕截圖顯示了不同類別下的鑿子樣本清單。

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

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

創建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

監控Linux進程
要列出系統進程,請輸入:
$ sudo sysdig -c ps

按CPU使用率監控進程
要通過運行以下命令監視CPU使用率百分比最高的進程:
$ sudo sysdig -c topprocs_cpu

監控網絡連接和I/O
要查看系統網絡連接,運行:
$ sudo sysdig -c netstat

以下命令將幫助你列出總字節數最多的網絡連接:
$ sudo sysdig -c topconns
接下來,你還可以列出網絡I/O最多的進程,如下:
$ sudo sysdig -c topprocs_net
監控系統文件I/O
你可以輸出系統上進程讀取和寫入的數據,如下:
$ sudo sysdig -c echo_fds

要按(讀取+寫入)磁盤字節數列出頂級進程,請使用:
$ sudo sysdig -c topprocs_file
排除 Linux 系統效能問題
為了監控系統瓶頸(系統調用緩慢),執行以下命令:
$ sudo sysdig -c bottlenecks

追蹤進程執行時間
要追蹤進程的執行時間,您可以運行以下命令並將跟踪信息傾印到文件中:
$ sudo sysdig -w extime.scap -c proc_exec_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]

顯示登錄外殼和互動用戶活動
以下命令將使您能夠查看所有登錄外殼 ID:
$ sudo sysdig -c list_login_shells
最後,您可以顯示系統用戶的互動活動,如下所示:
$ sudo sysdig -c spy_users

有關更多使用信息和示例,請閱讀 sysdig 和 csysdig 的手冊頁:
$ man sysdig $ man csysdig
同時檢查這些有用的 Linux 效能監控工具:
- BCC – Linux性能監控、網路和更多方面的動態追踪工具
- pyDash – 基於Web的Linux性能監控工具
- Perf – Linux性能監控和分析工具
- Collectl:Linux的高級一體化性能監控工具
- Netdata – Linux系統的實時性能監控工具
結論
Sysdig 將眾多命令列工具的功能集合到一個非凡的界面中,讓您能深入探究Linux系統事件以收集數據,保存以供日後分析,並提供出色的容器支援。
如有任何問題或想法要分享關於此工具,請使用下方的反饋表格。
Source:
https://www.tecmint.com/sysdig-system-monitoring-and-troubleshooting-tool-for-linux/