Sysdig是一款用于Linux的开源,跨平台,功能强大且灵活的系统监控和故障排除工具; 它也适用于Windows和Mac OSX,但功能有限,可用于系统分析,检查和调试。
通常,您将使用各种各样的Linux性能监视和故障排除工具,包括以下列出的各种操作,以执行Linux监视和调试任务:
- strace - 发现一个进程的系统调用和信号。
- tcpdump - 原始网络流量监控。
- netstat - 网络连接监控。
- htop - 实时过程监控。
- iftop - 实时网络带宽监控。
- 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性能监控工具:
- BCC - 用于Linux性能监控,网络等的动态跟踪工具
- pyDash - 基于Web的Linux性能监控工具
- Perf-用于Linux的性能监视和分析工具
- Collectl:用于Linux的高级一体化性能监控工具
- Netdata - 用于Linux系统的实时性能监控工具
结论
Sysdig将来自众多命令行工具的功能集成到一个显着的界面中,从而让您深入了解Linux系统事件以收集数据,节省后续分析,并提供令人难以置信的容器支持。
要提出任何问题或分享有关此工具的任何想法,请使用下面的反馈表。