
Monitoritzant Docker des de Centreon
Bo, suposo que a tots vosaltres us han anat sortint com bolets els contenidors de Docker, ¿no? Si fins a un dinosaure com jo té una plaga d'ells… Bo, y, a part de gaudir-los, si fem servir Centreon com a sistema de monitoratge per a la nostra organització, ja sabem, a monitoritzar-los!
Comencem de nou alabant l'script 'centreon_plugins.pl’ que vam veure en posts anteriors i serveix per a gairebé tot el que puguem necessitar. En aquest cas i gràcies a l'API de Docker podrem fer-lo servir per conèixer la salut dels seus contenidors, on a més podrem conèixer granularment l'ús de CPU, Memòria, IOPS lectura/escriptura i tràfic de les interfícies de xarxa. Entre d' altres, ja que també podrem conèixer la salut del node de Docker o dels seus serveis.
Abans de res, a cada màquina amb Docker, habiliten l'accés per API a Docker, editarem '/lib/systemd/system/docker.service’ i modificarem la següent línia:
#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
Reiniciem els serveis i després verifiquem que l'API respon, el port el que vulguem, seria interessant habilitar algun token o xifrar el canal:
sudo systemctl daemon-reload sudo systemctl restart docker curl -X GET http://localhost:4444/images/json
Ara ja sí, des del nostre Centre podríem començar a jugar amb 'centreon_plugins.pl', el primer veure l'ajuda i les maneres que tenim, executem:
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ó, necessitarem llistar els IDs dels contenidors i els anotarem, per després monitoritzar individualment cada contenidor:
perl /usr/lib/centreon/plugins/centreon-plugins/centreon_plugins.pl --plugin=cloud::docker::restapi::plugin --mode=list-containers --hostname=DIRECCION_IP --port=PUERTO
i amb poquet més, vam crear 2 Comandaments, en necessitarem un per conèixer l'ús dels recursos de cada contenidor i un altre Comando per conèixer la salut del Node Docker, o si tenim Serveis de Docker, doncs un altre tercer comandament. Quedant:
- Nom del comandament: 'centreon_plugins-docker_container-usage’
- Línia de comandaments: 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/’
- Arguments: Seran ARG1 el Port de l'API, l'ARG2 l'ID del contenidor, l'ARG3 i ARG4 per alertar-nos d'ús de CPU, Warning i Critical respectivament, podem posar més arguments per a la memòria, iops, xarxa…
- Nom del comandament: 'centreon_plugins-docker_node-status’
- Línia de comandaments: perl $CENTREONPLUGINS$/centreon-plugins/centreon_plugins.pl –plugin = cloud::docker::restapi::plugin –mode = node-status –hostname=$HOSTADDRESS$ –port = $ARG 1$
- Arguments: ARG1 el port de l'API de Docker.
Crearem tants serveis com contenidors tinguem per controlar els seus recursos, així com nodes de Docker tinguem i sapiguem la seva salut. Aquests serveis se'ls associarem a un Host que crearem basant-nos en una plantilla de Linux, així al node també li traurem els seus recursos. Bo, doncs emplenem els noms de cada Servei, els seus arguments…
I com sempre, si ho fem bé i després de gravar i exportar la configuració de Centreon el tindrem en un periquet! Tots els contenidors supervisats, cap consumirà més del que ha de, a més de tenir supervisió i contro dels seus recursos, així com la salut dels nodes de Docker.
Espero que us resultin interessants, i si no, ho sento 😉 bo, la intenció la tinc, intenteu supervisar tot el que podeu! Us mando una abraçada i que seguiu molt felices!