使用Sysdig監(jiān)測你的容器
譯文【51CTO.com快譯】您的容器眼下在做什么?您知道嗎?它們運(yùn)行如何?哪些系統(tǒng)調(diào)用和事件與部署的微服務(wù)有關(guān)?如果您不知道,那就有點(diǎn)落后了。
別擔(dān)心,有一些工具可以幫助我們挖掘細(xì)節(jié),那樣您就能輕松獲得所需的每個(gè)信息。Sysdig 就是這樣一種工具。按照設(shè)計(jì),sysdig直接從Linux 內(nèi)核(而不是/proc)收集系統(tǒng)調(diào)用和事件,并(自行)執(zhí)行strace、tcpdump、htop、iftop、lsof和Wireshark所做的工作。換句話說,您只需使用一種工具,而不是六種。更棒的是,自2015年以來,Sysdig就意識到容器。因此,當(dāng)您需要為Linux上的那些微服務(wù)排除故障時(shí),Sysdig可提供支持。雖然Sysdig是個(gè)命令行工具,但它確實(shí)包含ncurses用戶界面,使得查看這些信息更容易。
我會介紹在所選擇的服務(wù)器操作系統(tǒng)Ubuntu Server 20.04上安裝和使用Sysdig。當(dāng)然,Sysdig可以安裝在基于Debian或Red Hat的發(fā)行版上。要完成這項(xiàng)工作,您需要運(yùn)行中的Ubuntu Server實(shí)例,以及擁有sudo權(quán)限的用戶。您還需要容器運(yùn)行時(shí)引擎(以便可以部署和監(jiān)測容器)。我將使用Docker引擎和WordPress部署環(huán)境進(jìn)行演示。
安裝Sysdig
我們要做的第一件事是安裝Sysdig。為此,登錄進(jìn)入到您的Ubuntu服務(wù)器,執(zhí)行以下命令:
- curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig |sudo bash
這應(yīng)該會安裝所有依賴項(xiàng)以及最新版本的 Sysdig。
部署WordPress Docker容器
不妨部署一個(gè)WordPress Docker容器,那樣我們就有對象可以監(jiān)測了。這比部署一次性容器要復(fù)雜一點(diǎn),但有必要知道如何部署。
首先,使用以下命令拉出MariaDB容器:
- sudo docker pull mariadb
接下來,使用以下命令創(chuàng)建將存放WordPress數(shù)據(jù)(用于持久存儲)的必要文件夾:
- sudo mkdir /opt/wordpress
- sudo mkdir -p /opt/wordpress/database
- sudo mkdir -p /opt/wordpress/html
創(chuàng)建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是不重復(fù)的強(qiáng)密碼。
使用以下命令拉取最新版本的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設(shè)置的密碼。
您現(xiàn)在可以將瀏覽器指向http://SERVER:8081(其中SERVER是托管服務(wù)器的IP地址),并完成WordPress安裝。
如何使用Sysdig?
現(xiàn)在我們有了要監(jiān)測的對象,不妨看看如何使用Sysdig。我偏愛使用ncurses命令行界面,因此我們將使用csysdig,而不是使用sysdig命令。
首先,不妨使用以下命令列出當(dāng)前運(yùn)行的容器:
- sudo csysdig -vcontainers
如果您部署的唯一容器用于WordPress站點(diǎn),應(yīng)該會看到兩個(gè)容器在運(yùn)行:
- WordPress
- mariadb
列出的內(nèi)容還將告訴您每個(gè)容器使用的CPU數(shù)量、關(guān)聯(lián)進(jìn)程的數(shù)量、線程、虛擬內(nèi)存、駐留內(nèi)存、文件、所使用的引擎以及容器 ID。所以,我們已經(jīng)看到了使用Sysdig的價(jià)值。
想退出該視圖,請使用[Ctrl]+鍵盤快捷鍵。
不妨獲得更多信息。想查看與容器關(guān)聯(lián)的每個(gè)進(jìn)程,執(zhí)行以下命令:
- sudo csysdig -pc
這將列出(針對所發(fā)現(xiàn)的每個(gè)進(jìn)程):
- PID(進(jìn)程ID)
- PPID(父進(jìn)程ID)
- VPID(虛擬進(jìn)程ID)
- CPU(容器使用的CPU)
- USER(啟動容器的用戶)
- 虛擬內(nèi)存
- RES(分配的駐留內(nèi)存)
- 文件(容器使用的文件)
- Net(容器使用的總的網(wǎng)絡(luò)I/O)
- 容器(容器名稱)
- 命令(容器使用的命令)
上述命令的問題在于,可能提供過多的信息。比如說,您只想查看與某一個(gè)容器(本文中名為wpress的容器)有關(guān)的信息。為此,您可以執(zhí)行以下命令:
- sudo sysdig -pc -c topprocs_cpu container.name=wpcontainer
從上述命令您會看到以下信息被列出來:
- CPU%
- Process
- Host_pid
- Container_pid
- Container.name
也許您需要查看某個(gè)容器的網(wǎng)絡(luò)I/O。再次以我們的例子為例,執(zhí)行:
- sudo sysdig -pc -c topprocs_net container.name=wpcontainer
或者
- sudo sysdig -pc -c topprocs_net container.name=wordpressdb
上述命令會列出:
- 字節(jié)
- 進(jìn)程
- Host_pid
- Container_pid
- container.name
關(guān)于上述命令要知道的一點(diǎn)是,只有存在實(shí)際的網(wǎng)絡(luò)流量,您才會看到數(shù)據(jù)。
如果您想查看與面向WordPress容器的I/O有關(guān)的文件該如何是好?為此,執(zhí)行命令:
- sudo sysdig -pc -c topfiles_bytes container.name=wpcontainer
這是只有文件被使用,才會顯示輸出的另一個(gè)命令
您可能還想使用csysdig切換視圖。查看以上命令之一時(shí),按F2即可打開現(xiàn)有的csysdig視圖的菜單(圖1)。
圖1:csysdig視圖的菜單允許改變視圖
您應(yīng)該會看到以下對象的以容器為中心的視圖:容器、容器錯(cuò)誤、K8S控制器、K8S部署環(huán)境和K8S命名空間等。
但是不要以為您得先記住必要的參數(shù)和選項(xiàng)才能執(zhí)行csysdig命令。實(shí)際上,您只需執(zhí)行:
- sudo csysdig
一旦命令運(yùn)行,按鍵盤上的F2來選擇所需的視圖。這樣一來,極容易使用該命令(而不必記住可用的選項(xiàng)和參數(shù)選項(xiàng)符)。
結(jié)語
Sysdig和csysdig是功能強(qiáng)大的工具,可以幫助您從終端窗口監(jiān)測容器部署環(huán)境,并排除故障。安裝和使用很簡單。想了解更多關(guān)于csysdig的功能,執(zhí)行命令:
- man csysdig
或者
- man sysdig
原文標(biāo)題:Monitor Your Containers with Sysdig,作者:Jack Wallen
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】