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]

By jack

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *