[PoC] installation de Nagios pour superviser une application HTTP avec docker
Ressources utilisé :
Superviser un hôte Linux via NRPE
https://blog.nicolargo.com/2007/10/surveiller-vos-serveurs-linux-avec-nagios-et-nrpe.html
[Tuto] Nagios: Introduction au fichiers de configurations de Nagios
http://blog.nicolargo.com/wp-content/uploads/2011/03/ebook-nicolargo-nagios-v1.0.pdf
http://djibril.developpez.com/tutoriels/perl/ecrire-facilement-plugin-nagios-perl/
1. Pré-requis
1.1 Script bash qui démare un container nagios superviseur :
1 2 3 4 5 6 7 8 |
#!/bin/bash docker pull jasonrivers/nagios:latest docker run --name nagios4 \ -v /home/morgan/dev/docker/nagios/data/etc/:/opt/nagios/etc/ \ -v /home/morgan/dev/docker/nagios/data/var:/opt/nagios/var/ \ -v /home/morgan/dev/docker/nagios/data/custom-plugins:/opt/Custom-Nagios-Plugins \ -p 80:80 jasonrivers/nagios:latest |
1.2 un autre container qui contiens votre application http
1.3 Commande docker pour connaitre les ip :
docker network inspect bridge | jq
2. Mise en place de l’environnement
2.1 Pour chaque container docker supervisé, il faut installé un serveur NRPE :
apt-get install nagios-nrpe-server
2.1.1 Configurer pour autorisé a se connecter à notre serveur nagios de supervision
nano /etc/nagios/nrpe.cfg
1 |
allowed_hosts=<ip du container nagios> |
2.1.2 Si iptable est installé, autorisé les requete NRPE
iptables -A INPUT -p tcp --dport 5666 -j ACCEPT
2.1.3 Automatisé le démarrage de NRPE :
update-rc.d nagios-nrpe-server defaults
2.1.3 redémaré le service
service nagios-nrpe-server restart
2.1.4 Pour vérifier que cela fonctionne, connecter vous sur le container <nagios>
1 2 |
cd $NAGIOS_HOME ./check_nrpe -H <ip_container a supervisé> |
3. Exécuter une commande de supervision
3.1 sur le container supervisé, créer une nouvelle commande en éditant le fichier nrpe.cfg
vim /etc/nagios/nrpe.cfg
3.2 En dessous des commandes déjà existantes, ajouté :
command[check_home]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -p /home
Ici, le statue du service que nous allons créer plus tard sera en WARNING (-w), s’il reste moins de 20% (20) d’espace disque disponible et le statue sera CRITICAL (-c) s’il reste moins de 10% (10) d’espace libre.
3.3 Redémarer pour que la nouvelle commande soit prise en compte :
service nagios-nrpe-server restart
3.4 Executer la commande depuis le container nagios
1 2 |
cd $NAGIOS_HOME ./check_nrpe -H <ip_container a supervisé> -c check_home |
4. Superviser plusieurs containers
4.1 Dans le container nagios :
Dans le dossier objects nous allons créer un dossier linux_servers, c’est dans ce dossier que nous allons configurer toutes nos machines linux à superviser.
Puis nous allons éditer le fichier nagios.cfg se trouvant dans $NAGIOS_HOME/etc et nous allons donc rajouter la ligne:
1 2 |
#Dossier serveurs Linux cfg_dir=/opt/nagios/etc/objects/linux_servers |
Commenter la ligne qui surveille le serveur locale :
1 2 |
# Definitions for monitoring the local (Linux) host #cfg_file=/opt/nagios/etc/objects/localhost.cfg |
Maintenant dans le dossier linux_servers, nous allons créer trois fichiers:
linux_hosts.cfg, linux_hostgroups.cfg et linux_services.cfg
linux_hosts.cfg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#### LINUX HOST DEFINITIONS ###### define host{ use linux-server host_name nagios alias Serveur Nagios address 172.17.0.3 } define host{ use linux-server host_name packkm alias PackKM-5.2 address 172.17.0.2 } |
linux_hostgroups.cfg
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#### LINUX HOSTGROUPS DEFINITIONS #### define hostgroup { hostgroup_name linux_servers alias Serveurs Supervision Linux members nagios } define hostgroup { hostgroup_name linux_clients alias Pack client sous Linux members packkm } |
linux_services.cfg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#### LINUX SERVICES DEFINITIONS #### define service { use generic-service host_name * service_description ping check_command check_ping!100.0,20%!500.0,60% } define service { hostgroup_name web-internet use generic-service service_description HTTP check_command check_http!-p 8080 } |