Monitorizando Docker desde Centreon

Bueno, 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 ellosBueno, y, 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.plque 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.servicey 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

A continuación, 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.plplugin=cloud::docker::restapi::pluginmode=container-usagehostname=$HOSTADDRESS$port=$ARG1$container-id=$ARG2$warning-cpu=$ARG3$critical-cpu=$ARG4$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, red

  • Nombre del comando: ‘centreon_plugins-docker_node-status
  • Línea de comandos: perl $CENTREONPLUGINS$/centreon-plugins/centreon_plugins.plplugin=cloud::docker::restapi::pluginmode=node-statushostname=$HOSTADDRESS$port=$ARG1$
  • 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. Bueno, 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, además de tener supervisión y contro de sus recursos, así como la salud de los nodos de Docker.

Espero que os resulten interesantes, y si no, lo siento 😉 bueno, la intención la tengo, intentad supervisar todo lo que podáis! Os mando un abrazo y que seáis muy felices!

Posts recomendados

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, no dudes en contactar conmigo, os intentare ayudar siempre que pueda, compartir es vivir ;) . Disfrutar de los documentos!!!

Monitorizando latencias con Telegraf

17 de January de 2023