如何从Linux命令行安装和使用sysdig

时间:2020-03-05 15:31:16  来源:igfitidea点击:

Sysdig是一种工具,使管理员和开发人员无法进入其系统行为的前所未有的可见性。
通过在存储,处理,网络和内存子系统中提供统一,连贯和精细的可视性,可以通过为系统活动创建跟踪文件来实现统一,连贯和精细的可视性来完成制定系统级监控和故障排除的方式完成的团队我们可以随时轻松分析它。
他们还建立了一种过滤语言,以自然和互动的方式挖掘信息,也是富裕的Lua脚本库来解决常见问题,他们称之为凿子。
将此申请视为类固醇的strace + tcpdump + lsof。
简而言之,它是一个强大的性能监控工具,用于分析系统状态及其活动。

如何安装sysdig

Sysdig被测试并支持以下Linux发行版Debian,Ubuntu,CentOS,Rhel,Fedora,Amazon Linux,Oracle Linux和Linux Mint。

它可以使用自动安装脚本安装在一步中,可以通过运行以下命令来执行此操作:

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

输出应该如下所示:

注意:如果未安装CURL,则系统将提示我们使用命令"sudo apt-get安装curl"安装它

这就是我们在系统上安装应用程序的全部。

基本用法

在最简单的形式中,我们可以在没有任何参数的情况下运行程序,这将输出到标准输出每个系统调用。
格式为事件编号,事件时间,事件CPU编号,进程名称(PID),事件方向,出发类型,事件参数。
输出看起来如此:

注意:并非所有系统调用都被Sysdig解码。
输出中仍然显示未解码的系统调用,但没有参数。

过滤

所有这些输出都是巨大的,并且主要不是本身非常有用,因此我们可以使用强大而多功能过滤系统过滤结果。
例如,过滤过程Vim可以使用proc.name参数:

# sysdig proc.name=vim

我们可以使用"或者"和"和"等运算符使用参数的组合。
例如,列出我们可以使用的Apache不服务的所有传入连接:

# sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"

或者显示我们可以使用的用户"root"访问的目录:

# sysdig evt.type=chdir and user.name=root

输出看起来像这样:

为了快速参考,请记住,我们可以使用-l参数列出我们可以使用的所有字段,而-l获取所有事件的列表:

# sysdig -l
# sysdig -L

更多的例子

这些是来自Wiki的一些流行的例子:

1)按网络带宽使用顺序列出顶部流程

# sysdig -c topprocs_net

2)根据已建立的连接列出顶部本地服务器端口:

# sysdig -c fdcount_by fd.sport "evt.type=accept"

3)列出Apache不服务的所有传入连接。

# sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"

4)列出磁盘带宽使用情况下的最新流程:

# sysdig -c topprocs_file

5)列出使用大量文件的进程

# sysdig -c fdcount_by proc.name "fd.type=file"

6)基本OpenSnoop:Snoop文件在发生时打开

# sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open

7)在CPU使用率方面查看顶部流程

# sysdig -c topprocs_cpu

8)查看CPU 0的顶部进程

# sysdig -c topprocs_cpu evt.cpu=0

9)显示用户"root"访问的目录

# sysdig -p"%evt.arg.path" "evt.type=chdir and user.name=root"

10)显示在/etc中发生的每个文件打开

# sysdig evt.type=open and fd.name contains /etc

使用sysdig的可能性是无穷无尽的,取决于你想要了解的东西,但它是一个非常有用和多功能的工具。