Bonjour à tous
aujourd’hui on va essayer de ne pas avancer à l’aveugle et avoir une visu sur nos containers via de la supervision Nagios.
Alors pourquio Nagios?
tout d’abord parce que c’est ce que j’utilise comme supervision, libre gratuit, efficace et rapide.
Il y’a plus beau dans le genre Grafana + prometheus ou encore la suite TIG pour telegraf, Influxdb et Grafana. peut etre que j’y passerais plus tard.
Nous allons deja differencier deux choses
– la supervision de l’hôte en lui même
– la supervision du container
pré-requis
- une machine sous Debian pour ma part mais tout linux serait ok (voire windows mais ce n’est pas le cas ici)
- Un serveur Nagios
- une connexion internet
Supervision de l’hôte.
Certains éléments sont déjà supervisable sans ajouter de plugin tel le ping. ou la charge courante.
J’ai ajouté des éléments à mon fichier de configuration vous pouvez voir en vert ceux qui sont ok selon les éléments que j’ai indiqué, et en gris, en cours de recuperation d’info.
Conseil (surtout pour les eleves en études informatiques) : SOYEZ PATIENT !!!
Parfois votre fichier est bon, votre configuration est ok, mais la recuperation de metrique peut parfois prendre du temps alors que votre fichier est bon. Ne commencez à tout modifier suspectant un probleme. Dans tout les cas, le service Nagios ne démarre pas si vous avez une erreur dans votre fichier de conf.

et avec un peu de patience

Ca, ce sont des metriques qui ne necessite pas de plugin sur la machine cible. Je me suis basé sur les metriques proposé par Nagios à l’installation du service.
Le fichier de configuration linuxhosts.cfg
afin de faire marcher tout ce petit monde, il nous faut un fichier de conf que l’on trouve dans le repertoire
/chemin/vers/nagios/etc/objects
Afin que nagios puisse aller interroger ces fichiers, il faut au préalable les renseigner dans le répertoire
nano /chemin/vers/nagios/etc/nagios.cfg
# Definitions for monitoring the local (Linux) host
cfg_file=/chemin/vers/nagios/etc/objects/localhost.cfg
# Definitions for monitoring the remote (Linux) host
cfg_file=/chemin/vers/nagios/etc/objects/linuxhosts.cfg
# Definitions for monitoring a Windows machine
cfg_file=/chemin/vers/nagios/etc/objects/windows.cfg
# Definitions for monitoring a router/switch
cfg_file=/chemin/vers/nagios/etc/objects/switch.cfg
et ensuite vous pouvez renseigner le fichier de configuration, dans notre cas le linuxhosts.cfg
!!!AVANT TOUTE MODIFICATION, PRENEZ SOIN DE FAIRE UNE SAUVEGARDE!!!
j’ai toujours un fichier qui tourne et je fais une copie de mon fichier sur un .bak en amont
cp chemin/vers/nagios/etc/objects/linuxhosts.cfg chemin/vers/nagios/etc/objects/linuxhosts.cfg.bak
Puis la modification
Il faut déja définir la machine à superviser
###############################################################################
# LOCALHOST.CFG - SAMPLE OBJECT CONFIG FILE FOR MONITORING THIS MACHINE
#
#
# NOTE: This config file is intended to serve as an *extremely* simple
# example of how you can create configuration entries to monitor
# the local (Linux) machine.
#
###############################################################################
###############################################################################
#
# HOST DEFINITION
#
###############################################################################
# Define a host for the local machine
define host {
use linux-server ; Name of host template to use
; This host definition will inherit all variables that are defined
; in (or inherited by) the linux-server host template definition.
host_name dock-nxc
alias Serveur debian docker
address Mettez votre IP ici
}
###Mettez ensuite vos configurations par exemple ici le ping
###############################################################################
#
# SERVICE DEFINITIONS
#
###############################################################################
# Define a service to "ping" the local machine
define service {
use local-service,graphed-service ; Name of service template to use
host_name dock-nxc
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
Voila le fichier pour superviser le ping, vous definissez la machine à superviser et ensuite vous ajouter les elements que vous voulez voir apparaitre dans Nagios. Ensuite il faut redemarrer le service nagios
systemctl restart nagios
de la, deux choses
- Vous n’avez pas d’erreurs !!! : Bravo passez à la suite
- Job for nagios.service failed because the control process exited with error code. See « systemctl status nagios.service » and « journalctl -xe » for details. : et la il faut aller verifier.
La verification se fait soit avec
journalctl -xe
systemctl status nagios.service
Parfois le problème est assez clair, parfois plus nébuleux. Mais souvent il y’a une erreur de syntaxe dans votre fichier. C’est pour cela que j’avance à taton, services par services pour être certain de pas faire une ânerie, et également je vérifie bien mes parenthèses { } d’ouverture et de fermeture, parce qu’une parenthèse en moins peut vous mettre la supervision en l’air et c’est une panne pas compliqué.
Bref vérifiez bien.
check_docker ou le plugin Nagios pour Docker
Il existe plethore de plugin pour Nagios a installer sur son serveur nagios. Mais il existe un plugin pour docker
https://github.com/timdaman/check_docker
on va s’empresser d’installer ça. Petit gag, pour une fois sur ce plugin Chatgpt est complétement paumé. Par chance, je ne mise pas tout la dessus et je sais installer un plugin manuellement.
Timdaman donne plusieurs methodes pour l’installation, je vais partir sur wget
wget -O /usr/local/bin/check_docker https://raw.githubusercontent.com/timdaman/check_docker/master/check_docker/check_docker.py
de même pour le swarm si d’aventure on en aurait besoin
wget -O /usr/local/bin/check_swarm https://raw.githubusercontent.com/timdaman/check_docker/master/check_docker/check_swarm.py
chmod a+rx /usr/local/bin/check_docker /usr/local/bin/check_swarm
les plugins sont installés dans
/chemin/vers/nagios/libexec/ls -al
le ls me permet de verifier et je constate que les droits sont root, alors qu’il devrait être à Nagios. on va corriger ça de suite

pour le changement de proprietaire
chown nagios:nagios check_docker
et dans le doute pour les droits
sudo chmod a+rx /usr/local/bin/check_docker /usr/local/bin/check_swarm
Nous pouvons désormais également avoir acces à l’aide du plugin
root@Nagios:/usr/local/nagios/libexec# check_docker --help
usage: check_docker [-h] [--connection [/<path to>/docker.socket|<ip/host address>:<port>] | --secure-connection [<ip/host address>:<port>]] [--binary_units | --decimal_units] [--timeout TIMEOUT]
[--containers CONTAINERS [CONTAINERS ...]] [--present] [--threads THREADS] [--cpu WARN:CRIT] [--memory WARN:CRIT:UNITS] [--status STATUS] [--health] [--uptime WARN:CRIT] [--image-age WARN:CRIT] [--version]
[--insecure-registries INSECURE_REGISTRIES [INSECURE_REGISTRIES ...]] [--restarts WARN:CRIT] [--no-ok] [--no-performance] [-V]