如何在 Debian 11 上安装 Sysdig
在此页
- 先决条件
- 更新系统
- 在 Debian 11 上安装 Syndig
- 使用 Sysdig
- 结论
Sysdig 是一种开源的跨平台系统监控和故障排除工具。它对经验丰富的系统管理员以及初次接触 Linux 命令行的人很有用。它可以让我们深入了解正常操作期间服务器、容器或桌面上实际发生的情况。
Sysdig 带有一个命令行界面,但对于那些更倾向于 GUI 的人来说,它也有一个 Web UI。
Sysdig 收集系统数据并让用户以多种方式过滤和监控这些数据。您可以捕获进出容器或 VM 的流量,使用过滤器使系统仅向您显示相关事件,例如进程 X 是否正在侦听端口 Y,并且您可以将事件聚合在一起,形成长期趋势的图形表示。
Sysdigs 最大的优势在于它的洞察力。 Sysdig 可以告诉您所有磁盘读取发生的位置、每个容器发送/接收的数据包数量,或者您的任何 Web 服务器是否已关闭。它甚至更进一步,用相关的二进制数据(如果有记录)来备份这些信息。
作为系统管理员,我们大部分时间都花在解决难以重现或识别的问题上。这些问题很难调试的原因是没有足够的信息可以继续。
Sysdig 可以为我们提供足够的信息来解决这些问题。一旦我们掌握了这些信息,我们的故障排除就会变得非常容易——感觉就像拥有了超能力。
Sysdig 适用于大多数主要发行版,包括 CentOS、Ubuntu、Debian、Fedora Core、Arch Linux、Gentoo,甚至 OSX。安装很简单;它不需要编译源代码(耶!),甚至还有一个官方 GitHub 页面,其中包含 Sysdig 官方支持的每个发行版的安装说明。
对于本文,我们将在 Debian 11 服务器上安装 Sysdig。这个过程非常简单,不需要对 Linux 有太多深入的了解就可以开始。
先决条件
为了安装 sysdig,我们需要:
- 到我们的远程服务器的 ssh 连接。
- root 或 sudo 权限。
更新系统
在我们继续之前更新系统是个好主意。我们可以通过运行来做到这一点:
sudo apt-get update && sudo apt-get upgrade -y
更新完成后,运行以下命令来安装所需的依赖项。 libc6 是 Sysdig 用来完成大部分繁重工作的 C 标准库。 curl 是一个使用 HTTP 或 HTTPS 协议检索文件的工具,我们将使用它来下载 sysdig。 libcurl3 是 curl 的依赖项。
sudo apt install libc6 libcurl3 gnupg -y
sudo apt install software-properties-common curl -y
在 Debian 11 上安装 Syndig
现在系统已更新,让我们下载并安装 Sysdig。运行以下命令下载并安装 sysdig。
sudo curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash
根据您的服务器规格,这可能需要一段时间。因此,请耐心等待此下载和安装完成。
示例输出:

安装完成后,我们可以通过运行以下命令来检查 Sysdig 是否正确安装。
sysdig --version
如果安装成功,此命令将返回 sysdig 版本详细信息,如下所示。

您还可以通过运行以下命令来检查 sysdigs 的各种功能。
sysdig -h

使用 Sysdig
现在我们已经安装了 Sysdig,让我们复习一下 Sysdig 中的一些基本命令。
我们需要做的第一件事是运行下面的命令来开始捕获系统活动。我们使用 sysdig 命令来监控系统。我们运行带有 sudo 前缀的 sysdig 命令,这是必需的,因为 csysdig 需要 root 或 sudo 访问权限才能工作。
sudo csysdig
示例输出:

当 sysdig 开始捕获事件时,sysdig 将开始使用信息填充界面。运行上述命令后,系统数据每两秒刷新一次。这由变量 refresh_rate 控制,默认为 2 秒。这可以使用 sysdigs 配置文件进行调整。
在上面的输出中,您将看到 PID、名称、CPU 和 Comm 等列。这些是列描述,可以通过将鼠标悬停在它们上面来查看。列名的语法是[字段名]-[字段描述符]。
我们最关心的字段通常包括:
- PID - 生成事件的进程的 PID。
- PPID - 给定进程的父进程的 PID。
- %CPU - 一个进程使用了多少 CPU 时间。
- USER - 负责该过程的用户的用户名。
- RES - 进程正在使用的非交换内存量。
- 命令 - 启动进程的命令行。
当然,您可以使用许多其他列来更深入地了解系统活动。并且可以自定义 Sysdig 以满足您的需求。
随着系统数据不断刷新,可能很难理解发生了什么。我们可以通过按 CTRL + C 来停止 sysdig 运行。清除界面后,我们可以运行带有选项和过滤器的 sysdig 命令来获取我们想要的数据。
systax 是 sysdig [options] [filters]。
Sysdig 的过滤机制非常强大,可以用来准确找到你要找的东西。与 tcpdump 类似,过滤器由一个或多个原始表达式链组成,这些表达式由连词(“and”、“or”)链接,并可选地由析取符(“not”)终止。要显示我们可以与 sysdig 一起使用的所有过滤器,请运行以下命令。
sysdig -l
您将获得一个包含大量过滤器的列表,每个过滤器的简要说明如下所示。

由于不可能涵盖所有这些,我们将介绍一些常用的过滤器。
我们将从过滤器 - proc.name= 开始,它允许我们过滤掉特定的进程名称。
例如,要查找进程名称“nano”的所有事件,我们可以运行以下命令。
sudo sysdig proc.name=nano
示例输出:

您还可以使用 \or 和 \and 等运算符来获取更具体的数据。例如,您可以获得 \nano\ 或 \vi\ 的所有事件。
sudo sysdig proc.name=cat or proc.name=vi

运行以下命令以查看与网络相关的事件。您可以实时查看连接到哪些端口、MAC 地址等等。
sudo sysdig -c netstat
示例输出:

运行以下命令以获取 CPU 消耗最高的进程。
sudo sysdig -c topprocs_cpu
示例输出:

为了捕获系统活动并将其保存以供以后分析,请使用 -w 选项,后跟文件名。在下面的示例中,我们将 sysdig 的所有输出捕获到名为“sysdig-output.scap”的文件中
sudo sysdig -w sysdig-output.scap
此命令告诉 sysdig 连续输出数据,直到按 CTRL+C 停止为止。随着时间的推移,文件会变大。您可以使用 -C 选项将系统活动捕获到最大大小为指定 MB 的文件中。
例如,下面的命令将每 1MB 创建一个新文件并将系统活动存储在其中。
sudo sysdig -C 1 -w sysdig-output.scap
运行 ls -l 命令以查看名称为“sysdig-output.scap”的新创建文件,如下所示。
ls -l
输出如下:

结论
Sysdig 具有大量功能,可用作故障排除和性能分析的绝佳工具。由于它是开源的,您还可以通过凿子扩展其功能以满足您的需求。
在本文中,我们介绍了一些开始使用 sysdig 的基本命令。如需进一步阅读 sysdig 及其用例,请参阅其文档页面。