Monitoraggio di Docker da Centreon
Bene, Immagino che tutti voi stiate diventando come funghi contenitori Docker, No? Se anche un dinosauro come me ne ha una piaga… Bene, e, oltre a goderne, se utilizziamo Centreon come sistema di monitoraggio per la nostra organizzazione, Lo sappiamo già, per monitorarli!
Cominciamo di nuovo lodando lo script 'centreon_plugins.pl’ che abbiamo visto nei post precedenti e serve per quasi tutto ciò di cui potremmo avere bisogno. In questo caso e grazie all'API di Docker potremo usarlo per conoscere la salute dei suoi container, dove inoltre potremo conoscere in modo dettagliato l'uso della CPU, Memoria, IOPS lettura/scrittura e traffico delle interfacce di rete. Tra gli altri, poiché potremo anche conoscere la salute del nodo Docker o dei suoi servizi.
Innanzitutto, in ogni macchina con Docker, abilitiamo l'accesso via API a Docker, modificheremo '/lib/systemd/system/docker.service'’ e modificheremo la seguente riga:
#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
Riavviamo i servizi e poi verifichiamo che l'API risponda, la porta che vogliamo, sarebbe interessante abilitare qualche token o criptare il canale:
sudo systemctl daemon-reloadsudo systemctl restart dockercurl -X GET http://localhost:4444/images/json
Adesso sì, dal nostro Centreon potremmo iniziare a giocare con 'centreon_plugins.pl', la prima cosa è vedere l'aiuto e le modalità che abbiamo, Correre:
perl /usr/lib/centreon/plugins/centreon-plugins/centreon_plugins.pl --plugin=cloud::docker::Restapi::plugin --list-mode Modalità disponibili: container-usage list-containers node-status service-status
Prossimo, dovremo elencare gli ID dei contenitori e prenderne nota, per poi monitorare individualmente ogni contenitore:
perl /usr/lib/centreon/plugins/centreon-plugins/centreon_plugins.pl --plugin=cloud::docker::Restapi::plugin --mode=list-containers --hostname=INDIRIZZO_IP --port=PORTA
e con poco più, creeremo 2 Comandi, 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='%{stato} !~ /running/’
- Argomenti: 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, rete…
- 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$
- Argomenti: ARG1 el puerto de la API de Docker.
Crearemos tantos servicios como contenedores tengamos para controlar sus recursos, así como 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 anche le sacaremos sus recursos. Bene, 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 consumará más de lo que debe, además de tener supervision y contro de sus recursos, así como la salud de los nodos de Docker.
Espero que os resulten interesantes, E se non lo è, 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!











































