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服务器攻击(取证)分析功能。

在本文中,我们将介绍如何在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

观看Linux系统事件

上面的输出(原始数据)对您来说可能不太有意义,为了更有用的输出运行csysdig

$ sudo csysdig 

监控Linux系统事件

注意 :为了获得这个工具的真实感觉,您需要使用sysdig来生成原始数据,如前所述,从运行的Linux系统:这要求您了解如何使用过滤器和凿子。

但是如果您需要使用sysdig的简单方法 - 继续使用csysdig

了解Sysdig凿子和过滤器

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

$ sudo sysdig -cl

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

查看Sysdig凿子

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

$ sudo sysdig -i topprocs_cpu

查看Sysdig凿子信息

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

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

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

$ sudo sysdig -l

查看Sysdig字段类

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

创建MongoDB跟踪文件

监控Linux进程

要列出系统进程,请键入:

$ sudo sysdig -c ps

监控Linux进程

按CPU使用情况监视进程

要通过CPU使用百分比观察顶级进程,请运行以下命令:

$ sudo sysdig -c topprocs_cpu

按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

监控系统IO

要通过(读取/写入)磁盘字节列出顶部进程,请使用:

$ sudo sysdig -c topprocs_file   

排除Linux系统性能问题

要注意系统瓶颈(系统调用缓慢),请执行以下命令:

$ sudo sysdig -c bottlenecks

排除Linux性能问题

跟踪进程的执行时间

要跟踪进程的执行时间,可以运行此命令并将跟踪转储到文件中:

$ 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服务器请求

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

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

监控HTTP请求

显示登录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系统事件以收集数据,节省后续分析,并提供令人难以置信的容器支持。

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

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏