网站搜索

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 编写脚本;提供凿子(轻量级 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系统:这需要你了解如何使用过滤器和凿子。

但如果您需要轻松使用sysdig,请继续使用csysdig

了解 Sysdig Chisels 和过滤器

Sysdig chisels 是最小的 Lua 脚本,用于检查 sysdig 事件流以执行有用的系统故障排除操作等。下面的命令将帮助您查看所有可用的凿子:

sudo sysdig -cl

屏幕截图显示了不同类别下的凿子示例列表。

如果您想了解有关特定凿子的更多信息,请使用 -i 标志:

sudo sysdig -i topprocs_cpu

Sysdig 过滤器为您可以从事件流获取的输出类型添加了更多功能,它们允许您自定义输出。您应该在命令行末尾指定它们。

简单且最常见的过滤器是基本的“class.field=value”检查,您还可以将凿子与过滤器结合使用,以实现更强大的自定义。

要查看可用字段类、字段及其描述的列表,请键入:


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/0

这个简单的命令将帮助您检测慢速网络 I/0:

sudo sysdig -c netlower     

查看日志文件条目

下面的命令可帮助您显示写入 syslog 的每条消息,如果您对特定进程的日志条目感兴趣,请创建跟踪转储并相应地过滤掉它,如前所示:

sudo sysdig -c spy_syslog      

您可以将任何进程写入的任何数据打印到日志文件中,如下所示:

sudo sysdig -c spy_logs   

监控 HTTP 服务器请求

如果您的系统上运行着 HTTP 服务器,例如 Apache 或 Nginx,请使用以下命令查看服务器的请求日志:

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

显示登录 shell 和交互式用户活动

下面的命令将使您能够查看所有登录 shell ID:

sudo sysdig -c list_login_shells

最后但并非最不重要的一点是,您可以显示系统用户的交互活动,如下所示:

sudo sysdig -c spy_users

有关更多使用信息和示例,请阅读 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 系统事件以收集数据,保存以供以后分析,并且它提供了令人难以置信的容器支持。

要提出任何问题或分享有关此工具的任何想法,请使用下面的反馈表。