使用 Sysdig 监控您的Docker容器


Sysdigg直接从 Linux 内核(而不是 /proc)收集系统调用和事件,并(自行)执行 strace、tcpdump、htop、iftop、lsof 和 Wireshark 所做的工作。当您需要对 Linux 上的这些微服务进行故障排除时,Sysdig 会为您提供支持。

安装 Sysdig:

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

让我们部署一个 WordPress Docker 容器,这样我们就可以监控一些东西。这比部署一次性容器要复杂一些,但值得知道如何去做。
首先,使用以下命令拉出 MariaDB 容器:
sudo docker pull mariadb
接下来,使用以下命令创建将存放 WordPress 数据(用于持久存储)的必要文件夹:
sudo mkdir /opt/wordpress
sudo mkdir -p /opt/wordpress/database
sudo mkdir -p /opt/wordpress/html

创建 MariaDB 容器:
docker run -e MYSQL_ROOT_PASSWORD=PWORD1 -e MYSQL_USER=wpuser -e MYSQL_PASSWORD=PWORD2 -e MYSQL_DATABASE=wordpress_db -v /opt/wordpress/database:/var/lib/mysql --name wordpressdb -d mariadb

其中 PWORD1 和 PWORD2 是唯一/强密码。
使用以下命令拉取最新版本的 WordPress:
docker pull wordpress:latest
部署 WordPress 容器:
docker run -e WORDPRESS_DB_USER=wpuser -e WORDPRESS_DB_PASSWORD=PWORD2 -e WORDPRESS_DB_NAME=wordpress_db -p 8081:80 -v /opt/wordpress/html:/var/www/html --link wordpressdb:mysql --name wpcontainer -d wordpress

其中“PWORD 2”是您在之前的 docker run命令中为 wpuser 设置的密码。
您现在可以将浏览器指向http://SERVER:8081(其中 SERVER 是托管服务器的 IP 地址)并完成 WordPress 安装。
 

如何使用 Sysdig
现在我们有了要监控的东西,让我们看看如何使用 Sysdig。我更喜欢使用ncurses命令行界面,因此我们将使用 csysdig,而不是使用 sysdig 命令。
首先,让我们列出当前正在运行的容器:
sudo csysdig -vcontainers
如果您部署的唯一容器用于 WordPress 站点,您应该会看到两个容器正在运行:

  • WordPress的
  • MariaDB 数据库

清单还将告诉您每个容器使用的 CPU 数量、关联进程的数量、线程、虚拟内存、驻留内存、文件、正在使用的引擎以及容器 ID。所以,我们已经看到了使用 Sysdig 的价值。
要查看与容器关联的每个进程,请发出以下命令:
sudo csysdig -pc
这将列出(对于找到的每个进程):
  • PID(进程 ID)
  • PPID(父进程 ID)
  • VPID(虚拟进程 ID)
  • CPU(容器使用的CPU)
  • USER(启动容器的用户)
  • 虚拟内存
  • RES(分配的驻留内存)
  • 文件(容器使用的文件)
  • Net(容器使用的总网络 I/O)
  • 容器(容器名称)
  • 命令(容器使用的命令)

上述命令的问题在于它可能会给你太多的信息。举例来说,您只想查看与一个特定容器(在我们的示例中为名为 wpress 的容器)相关联的信息。为此,您可以发出以下命令:

sudo sysdig -pc -c topprocs_cpu container.name=wpcontainer
从该命令中,您应该看到列出:

  • 中央处理器%
  • 过程
  • 主机_pid
  • 容器_pid
  • 容器名称

sudo sysdig -pc -c topprocs_net container.name=wordpressdb
上面的命令将列出:
  • 字节
  • 过程
  • 主机_pid
  • 容器_pid
  • 容器名称

关于上述命令要了解的一件事是,只有在存在实际网络流量时,您才能看到数据。
 
按 F2 打开现有 csysdig 视图的菜单:您应该看到以容器为中心的视图,例如容器、容器错误、K8s 控制器、K8s 部署、K8s 命名空间等。


结论
Sysdig 和 csysdig 是功能强大的工具,可帮助您从终端窗口监控容器部署并对其进行故障排除。安装和使用都很简单。要了解有关 csysdig 可以为您做什么的更多信息,请发出以下命令:
man csysdig
要么
man sysdig