Überwachung von Docker von Centreon
Brunnen, Ich nehme an, dass ihr alle wie Pilze Docker-Container bekommen habt, Nein? Wenn selbst ein Dinosaurier wie ich eine Plage von ihnen hat… Brunnen, und, Abgesehen davon, dass man sie genießt, wenn wir Centreon als Überwachungssystem für unsere Organisation verwenden, Wir wissen es bereits:, um sie zu überwachen!
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, Gedächtnis, 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.
Zuallererst, 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, Laufen:
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
Nächster, 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 Befehle, 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:
- Name des Befehls: ‘centreon_plugins-docker_container-usage’
- Befehlszeile: perl $CENTREONPLUGINS$/centreon-plugins/centreon_plugins.pl –plugin=cloud::docker::Restapi::Stecker –mode=container-usage –hostname=$HOSTADDRESS$ –port=$ARG1$ –container-id=$ARG2$ –warning-cpu=$ARG3$ –critical-cpu=$ARG4$ –critical-container-status=’%{Zustand} !~ /running/’
- Argumente: 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, netto…
- Name des Befehls: ‘centreon_plugins-docker_node-status’
- Befehlszeile: perl $CENTREONPLUGINS$/centreon-plugins/centreon_plugins.pl –plugin=cloud::docker::Restapi::Stecker –mode=node-status –hostname=$HOSTADDRESS$ –port=$ARG1$
- Argumente: 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. Brunnen, 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, Und wenn nicht,, 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!