Monitorizando Docker desde Centreon

Onena, supongo que a todos vosotros os han ido saliendo como setas los contenedores de Docker, ¿no? Si hasta un dinosaurio como yo tiene una plaga de ellos… Onena, eta, a parte de disfrutarlos, si usamos Centreon como sistema de monitorización para nuestra organización, ya sabemos, ¡a monitorizarlos!

Comencemos de nuevo alabando al script 'centreon_plugins.pl’ que vimos en posts anteriores y sirve para casi todo lo que podamos necesitar. En este caso y gracias a la API de Docker podremos usarlo para conocer la salud de sus contenedores, donde además podremos conocer granularmente el uso de CPU, Memoria, IOPS lectura/escritura y tráfico de las interfaces de red. Entre otros, ya que también podremos conocer la salud del nodo de Docker o de sus servicios.

Antes de nada, en cada máquina con Docker, habilitamos el acceso por API a Docker, editaremos '/lib/systemd/system/docker.service’ y modificaremos la siguiente línea:

#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:4444

Reiniciamos los servicios y después verificamos que la API responde, el puerto el que queramos, sería interesante habilitar algún token o cifrar el canal:

sudo systemctl daemon-reload
sudo systemctl restart docker
curl -X GET http://localhost:4444/images/json

Ahora ya sí, desde nuestro Centreon podríamos empezar a jugar con 'centreon_plugins.pl', lo primero ver la ayuda y los modos que tenemos, ejecutamos:

perl /usr/lib/centreon/plugins/centreon-plugins/centreon_plugins.pl --plugin=cloud::docker::restapi::plugin --list-mode

Modes Available:
   container-usage
 list-containers
 node-status
 service-status

Ondoren, necesitaremos listar los IDs de los contenedores y los anotaremos, para luego monitorizar individualmente cada contenedor:

perl /usr/lib/centreon/plugins/centreon-plugins/centreon_plugins.pl --plugin=cloud::docker::restapi::plugin --mode=list-containers --hostname=DIRECCION_IP --port=PUERTO

y con poquito más, vamos a crear 2 Comandos, necesitaremos uno para conocer el uso de los recursos de cada contenedor y otro Comando para conocer la salud del Nodo Docker, o si tenemos Servicios de Docker, pues otro tercer comando. Quedando:

  • Nombre del comando: 'centreon_plugins-docker_container-usage’
  • Línea de comandos: perl $CENTREONPLUGINS$/centreon-plugins/centreon_plugins.pl –plugin=cloud::docker::restapi::plugin –mode=container-usage –hostname=$HOSTADDRESS$ –port=$ARG 1$ –container-id=$ARG 2$ –warning-cpu=$ARG 3$ –critical-cpu=$ARG 4$ –critical-container-status='%{state} !~ /running/’
  • Argumentos: Serán ARG1 el Puerto de la API, el ARG2 el ID del contenedor, el ARG3 y ARG4 para alertarnos de uso de CPU, Warning y Critical respectivamente, podemos meter más argumentos para la memoria, iops, sarea…

  • Nombre del comando: 'centreon_plugins-docker_node-status’
  • Línea de comandos: perl $CENTREONPLUGINS$/centreon-plugins/centreon_plugins.pl –plugin=cloud::docker::restapi::plugin –mode=node-status –hostname=$HOSTADDRESS$ –port=$ARG 1$
  • Argumentos: ARG1 el puerto de la API de Docker.

Crearemos tantos servicios como contenedores tengamos para controlar sus recursos, así cómo nodos de Docker tengamos y sepamos su salud. Estos servicios se los asociaremos a un Host que crearemos basandonos en una plantilla de Linux, así al nodo también le sacaremos sus recursos. Onena, pues cumplimentamos los nombres de cada Servicio, sus argumentos…

Y cómo siempre, si lo hicimos bien y tras grabar y exportar la configuración de Centreon lo tendremos en un periquete! Todos los contenedores supervisados, ninguno consumirá más de lo que debe, gainera, zuen baliabideen gaineko zaintza eta kontrola izateaz aparte, Docker nodoen osasuna bezalaxe.

Espero dut interesgarriak iruditzea, eta bestela, barkatu 😉 ondo, asmoa dut, ahalegindu zaitezte ahal duzuen guztia zaintzen! Besarkada bat bidaltzen dizuet eta oso zoriontsu izan zaitezen!

Izenburuko mezuak

Egilea

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, ez zalantzarik izan nirekin harremanetan jartzeko, ahal duzun guztietan laguntzen saiatuko naiz, partekatu ahal dudan guztietan ;) . Dokumentuez gozatu!!!