Com controlar els contenidors Docker amb l'eina de supervisió Zabbix


Docker és sens dubte una de les eines DevOps més apreciades que racionalitza el desenvolupament, el desplegament i l'enviament d'aplicacions dins dels contenidors.

El concepte de contenidorització implica aprofitar les imatges dels contenidors. Es tracta de paquets executables petits, lleugers i autònoms que inclouen tot el que es necessita per executar una aplicació, inclòs el codi font, les biblioteques i les dependències i els fitxers de configuració.

En fer-ho, l'aplicació es pot executar en gairebé qualsevol entorn informàtic; infraestructura informàtica tradicional, núvol i una infinitat de sabors Linux/UNIX.

La supervisió dels contenidors ajuda els equips operatius a identificar problemes subjacents i resoldre'ls de manera oportuna. La supervisió de contenidors inclou la captura de mètriques bàsiques, com ara els registres en temps real, que són útils per depurar i avisar l'equip de TI quan s'ha d'escalar.

Zabbix és una eina popular de monitorització d'infraestructura informàtica que vigila gairebé tots els elements del vostre entorn, inclosos els dispositius físics com ara servidors i dispositius de xarxa com encaminadors i commutadors. També pot supervisar aplicacions, serveis i bases de dades.

En aquesta guia, us mostrarem com podeu controlar els contenidors Docker mitjançant l'eina de supervisió Zabbix a Linux.

Això és el que necessiteu abans de començar:

Primer, assegureu-vos que teniu dos nodes: el primer node és el servidor Zabbix. Aquest és el node des del qual monitoritzarem el servidor Docker remot. Tenim un article sobre:

  • Com instal·lar Zabbix a Rocky Linux i AlmaLinux
  • Com instal·lar l'eina de supervisió Zabbix a Debian 11/10
  • Com instal·lar Zabbix a RHEL 8
  • Com instal·lar Zabbix a Ubuntu

El segon node és el servidor Docker on està instal·lat Docker. Aquest és el node des d'on executarem els contenidors Docker i supervisarem l'activitat dels contenidors.

  • Com instal·lar Docker a Rocky Linux i AlmaLinux
  • Com instal·lar i utilitzar Docker a Ubuntu 20.04
  • Com instal·lar Docker a CentOS i RHEL 8/7

A continuació, assegureu-vos que teniu accés SSH al vostre node del servidor Docker amb un usuari sudo ja configurat.

Amb la vostra configuració al seu lloc, ja podeu enrollar-vos les mànigues!

Pas 1: instal·leu Zabbix-Agent a Linux

Per supervisar els contenidors de Docker al servidor remot, heu d'instal·lar un agent Zabbix, que és un agent de supervisió que es desplega en un node de destinació per supervisar activament les mètriques del sistema i altres aplicacions.

Primer, heu d'instal·lar el dipòsit Zabbix al node Docker.

----------- On Ubuntu 20.04 ----------- 
$ sudo wget https://repo.zabbix.com/zabbix/5.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.4-1+ubuntu20.04_all.deb
$ sudo dpkg -i zabbix-release_5.4-1+ubuntu20.04_all.deb
$ sudo apt update
$ sudo apt install zabbix-agent2

----------- On RHEL-based Distro ----------- 
$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-release-5.4-1.el8.noarch.rpm
$ sudo dnf update
$ sudo dnf install zabbix-agent

----------- On Debian 11 ----------- 
$ sudo wget https://repo.zabbix.com/zabbix/5.4/debian/pool/main/z/zabbix-release/zabbix-release_5.4-1%2Bdebian11_all.deb
$ sudo dpkg -i zabbix-release_5.4-1%2Bdebian11_all.deb
$ sudo apt update
$ sudo apt install zabbix-agent2

----------- On Debian 10 ----------- 
$ sudo wget https://repo.zabbix.com/zabbix/5.4/debian/pool/main/z/zabbix-release/zabbix-release_5.4-1%2Bdebian10_all.deb
$ sudo dpkg -i zabbix-release_5.4-1%2Bdebian10_all.deb
$ sudo apt update
$ sudo apt install zabbix-agent2

Pas 2: configureu Zabbix-Agent a Linux

De manera predeterminada, l'agent Zabbix està configurat per enviar mètriques al servidor Zabbix al mateix host que està instal·lat. Com que el nostre objectiu és supervisar els contenidors Docker al servidor remot, calen algunes configuracions addicionals.

Per tant, accediu al fitxer de configuració de l'agent Zabbix.

$ sudo vim /etc/zabbix/zabbix_agent2.conf

El fitxer de configuració conté paràmetres que especifiquen l'adreça on s'envien les mètriques, el port utilitzat per a les connexions i molt més. En la seva majoria, la configuració predeterminada funcionarà bé.

Per configurar l'agent Zabbix perquè enviï mètriques al servidor Zabbix, localitzeu la directiva que està configurada per enviar mètriques a l'adreça de loopback, o simplement, al mateix sistema host.

Server=127.0.0.1

Estableix l'adreça perquè reflecteixi l'adreça del servidor Zabbix

Server=zabbix-server-IP

A més, navegueu a la secció Comprovacions actives i canvieu la directiva per apuntar a l'adreça IP del servidor Zabbix.

ServerActive=zabbix-server-IP

Assegureu-vos d'ajustar també el nom d'amfitrió del servidor Docker en conseqüència. El nom d'amfitrió del meu servidor Docker és Ubuntu20.

Hostname=Ubuntu20

A continuació, deseu els canvis i sortiu del fitxer de configuració de Zabbix.

Perquè l'agent de Zabbix vigili els contenidors de Docker, heu d'afegir l'usuari Zabbix, que està instal·lat per defecte, al grup de Docker.

$ sudo usermod -aG docker zabbix

Per aplicar els canvis fets al fitxer de configuració, reinicieu el servei de l'agent Zabbix i activeu-lo a l'inici del sistema.

$ sudo systemctl restart zabbix-agent2
$ sudo systemctl enable zabbix-agent2

Confirmeu l'estat d'execució de l'agent Zabbix de la manera següent.

$ sudo systemctl status zabbix-agent2

L'agent Zabbix escolta al port 10050. Si teniu un tallafocs en execució, considereu obrir el port de la següent manera.

----------- On UFW Firewall ----------- 
$ sudo ufw allow 10050/tcp
$ sudo ufw reload

----------- On Firewalld ----------- 
$ sudo firewall-cmd --add-port=10050/tcp --permanent
$ sudo firewall-cmd --reload

Genial! Ara estem a la meitat. L'agent Zabbix ara pot enviar les mètriques del contenidor Docker al servidor Zabbix.

En el següent pas, afegirem el servidor Docker a la interfície web de Zabbix i supervisarem els contenidors Docker.

Pas 3: afegiu el Docker al servidor Zabbix per al seguiment

Per supervisar un host remot, cal afegir-lo al tauler de control del servidor Zabbix mitjançant un navegador. Zabbix ofereix una infinitat de plantilles per a diversos serveis i aplicacions. Enllaçarem la plantilla adequada a l'amfitrió de Docker per supervisar específicament els contenidors. Però primer, accediu a la pàgina d'inici de sessió del servidor Zabbix.

http://zabbix-server-ip/zabbix

Un cop hàgiu iniciat la sessió, aneu a la barra lateral dreta i feu clic a Configuració i després a Amfitrions.

A l'extrem superior dret, feu clic a Crea amfitrió.

Ompliu els detalls del servidor Docker, com ara el nom d'amfitrió i el nom visible. Per als grups, escriviu Grups Docker (cada amfitrió ha d'estar associat a un grup).

A sota de l'etiqueta Interfícies, feu clic a Afegeix i al menú que apareix seleccioneu Agent.

A continuació, ompliu l'adreça IP privada del servidor Docker i assegureu-vos que el port estigui configurat en 10050.

A continuació, feu clic a la pestanya Plantilles i, a la secció Enllaça plantilles noves, especifiqueu Docker by Zabbix agent 2. A continuació, feu clic al botó Afegeix.

Quan feu clic al botó Afegeix, l'amfitrió Docker remot s'afegirà automàticament tal com s'indica.

En aquest moment, el servidor Zabbix està supervisant el vostre servidor Docker. En el següent pas, desplegarem un contenidor i comprovarem quines mètriques es poden controlar.

Pas 4: Supervisió de les mètriques de Docker a Zabbix Monitoring

Per començar a supervisar les mètriques de Docker, llançarem un contenidor de prova. Per tant, torneu al vostre servidor Docker i engegueu un contenidor.

En aquest exemple, treurem una imatge de contenidor d'Ubuntu i crearem un contenidor anomenat docker_test_container. Aleshores tindrem accés a l'intèrpret d'ordres utilitzant l'opció -it. Tota la comanda per a les operacions és la següent.

$ sudo docker run --name docker_test_container -it ubuntu bash

Podeu provar alguna cosa ambiciosa, com ara instal·lar paquets de programari com Apache o MariaDB per generar algunes mètriques com ara la utilització de la CPU i el trànsit de xarxa.

Ara torneu al tauler del servidor Zabbix. Feu clic a Supervisió i després a Amfitrions. Feu clic al nom del vostre servidor Docker i, a l'opció de menú que apareix, seleccioneu Últimes dades.

Després d'uns minuts de desplegament del contenidor, el servidor Zabbix detectarà el contenidor i començarà a emplenar algunes estadístiques.

També podeu veure els gràfics de les diferents mètriques dels contenidors fent clic a les opcions de gràfics del servidor Docker a la pàgina Amfitrions. A continuació podeu veure les mètriques d'ús de la CPU i la memòria.

Per simular l'error del contenidor, sortirem del contenidor inesperadament executant l'ordre següent a l'intèrpret d'ordres del contenidor.

# exit 2

Això implica que hem finalitzat el contenidor amb un codi d'error de 2. Això es registra a les metadades del contenidor. Per veure l'alerta, aneu a la barra lateral esquerra i feu clic a Supervisió i després a Tauler.

L'alerta es mostra a continuació.

Per corregir l'error, només cal que torneu a iniciar el contenidor.

$ sudo docker start docker_test_container 

I això ens porta al final d'aquesta guia. Us hem explicat un procediment pas a pas sobre com podeu supervisar els contenidors Docker mitjançant l'eina de supervisió Zabbix.