使用Sysdig監測你的容器
譯文【51CTO.com快譯】您的容器眼下在做什么?您知道嗎?它們運行如何?哪些系統調用和事件與部署的微服務有關?如果您不知道,那就有點落后了。
別擔心,有一些工具可以幫助我們挖掘細節,那樣您就能輕松獲得所需的每個信息。Sysdig 就是這樣一種工具。按照設計,sysdig直接從Linux 內核(而不是/proc)收集系統調用和事件,并(自行)執行strace、tcpdump、htop、iftop、lsof和Wireshark所做的工作。換句話說,您只需使用一種工具,而不是六種。更棒的是,自2015年以來,Sysdig就意識到容器。因此,當您需要為Linux上的那些微服務排除故障時,Sysdig可提供支持。雖然Sysdig是個命令行工具,但它確實包含ncurses用戶界面,使得查看這些信息更容易。
我會介紹在所選擇的服務器操作系統Ubuntu Server 20.04上安裝和使用Sysdig。當然,Sysdig可以安裝在基于Debian或Red Hat的發行版上。要完成這項工作,您需要運行中的Ubuntu Server實例,以及擁有sudo權限的用戶。您還需要容器運行時引擎(以便可以部署和監測容器)。我將使用Docker引擎和WordPress部署環境進行演示。
安裝Sysdig
我們要做的第一件事是安裝Sysdig。為此,登錄進入到您的Ubuntu服務器,執行以下命令:
- curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig |sudo bash
這應該會安裝所有依賴項以及最新版本的 Sysdig。
部署WordPress Docker容器
不妨部署一個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的價值。
想退出該視圖,請使用[Ctrl]+鍵盤快捷鍵。
不妨獲得更多信息。想查看與容器關聯的每個進程,執行以下命令:
- 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
從上述命令您會看到以下信息被列出來:
- CPU%
- Process
- Host_pid
- Container_pid
- Container.name
也許您需要查看某個容器的網絡I/O。再次以我們的例子為例,執行:
- sudo sysdig -pc -c topprocs_net container.name=wpcontainer
或者
- sudo sysdig -pc -c topprocs_net container.name=wordpressdb
上述命令會列出:
- 字節
- 進程
- Host_pid
- Container_pid
- container.name
關于上述命令要知道的一點是,只有存在實際的網絡流量,您才會看到數據。
如果您想查看與面向WordPress容器的I/O有關的文件該如何是好?為此,執行命令:
- sudo sysdig -pc -c topfiles_bytes container.name=wpcontainer
這是只有文件被使用,才會顯示輸出的另一個命令
您可能還想使用csysdig切換視圖。查看以上命令之一時,按F2即可打開現有的csysdig視圖的菜單(圖1)。
圖1:csysdig視圖的菜單允許改變視圖
您應該會看到以下對象的以容器為中心的視圖:容器、容器錯誤、K8S控制器、K8S部署環境和K8S命名空間等。
但是不要以為您得先記住必要的參數和選項才能執行csysdig命令。實際上,您只需執行:
- sudo csysdig
一旦命令運行,按鍵盤上的F2來選擇所需的視圖。這樣一來,極容易使用該命令(而不必記住可用的選項和參數選項符)。
結語
Sysdig和csysdig是功能強大的工具,可以幫助您從終端窗口監測容器部署環境,并排除故障。安裝和使用很簡單。想了解更多關于csysdig的功能,執行命令:
- man csysdig
或者
- man sysdig
原文標題:Monitor Your Containers with Sysdig,作者:Jack Wallen
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】