Nagios est L'OUTILS open-source de monitoring, très puissant, très complet, très configurable ... ce qui le rend inévitablement un petit peu complexe à configurer.
Ce billet ne remplacera pas la lecture de la doc de Nagios et comme le champ d'application de cet outil est vraiment vaste, la doc l'est aussi. De plus, ce n'ai pas trouvé un bon tutorial sur le sujet, spécialement lorsqu'on touche aux machines déportées. Heureusement, l'équipe d'Ubuntu a fait le plus gros du travail ...
L'un dans l'autre, je n'essaierai pas d'être exhaustif et mes billets se focaliseront sur mes propres besoins, mais j'essaierai de faire quelque chose d'utile.
Ce premier billet introduit l'outil, les concepts de base concernant la configuration et le monitoring local.
La syntaxe de Nagios est très flexible et il y a bien entendu beaucoup de façon d'optimiser sa configuration. Par exemple, pour éviter de dupliquer les services pour chacun des hosts, la doc suggère de lister les dit hosts directement dans la définition des services.
Perso, je n'aime pas trop ... je préfère passer par les groupes : tous les hosts fournissant un service font partie d'un groupe et c'est ce groupe qui est associé au service ; on peut faire le parallèle avec le HTML qui défini un document, ici le service, et le CSS qui défini comment il doit être affiché, ici la liste des hosts qui le fournissent ...
Nagios est composé de 3 composants :
C'est le coeur du système : il lance les vérifications régulièrement et lance les actions à prendre lorsqu'il détecte un incident.
Cette interface permet d'avoir une vue sur ce qui se passe dans les objets monitorés et d'interagir avec le programme, par exemple pour signaler qu'un problème a été corriger.
Il faut qu'un serveur web soit installé (Apache dans le cas présent)
C'est un ensemble de sondes qui permettent à Nagios d'acquérir les informations sur les objets à monitorer. Ils peuvent être locaux ... ou déportés comme on verra par la suite.
Nagios peut sauvegarder ses informations sous plusieurs formes : texte ou base de données (mySQL ou PostgreSQL). J'ai choisi la première méthode, car dans un outil de monitoring, il faut par définition faire au plus simple et éliminer tous les intermédiaires qui peuvent flancher ...
apt-get install nagios3
Un fois le téléchargement terminé, le mot de passe de l'administrateur Nagios est demandé :
┌────────────────────┤ Configuration de nagios3-common ├────────────────────┐
│ Veuillez fournir le mot de passe à utiliser avec l'utilisateur │
│ « nagiosadmin ». │
│ │
│ Il s'agit du nom d'utilisateur et du mot de passe que vous utiliserez │
│ pour vous connecter à Nagios une fois que l'installation est terminée. │
│ Si vous ne fournissez pas de mot de passe, vous devrez configurer Nagios │
│ vous-même afin d'y accéder. │
│ │
│ Mot de passe pour l'administration web de Nagios : │
│ │
│ _________________________________________________________________________ │
│ │
│ <Ok> │
│ │
└───────────────────────────────────────────────────────────────────────────┘
Tout le reste est fait automatiquement : création de l'utilisateur unix qui fera tourner le programme, création des fichiers de configuration par défaut, redémarrage d'apache ...
Tous les fichiers se trouvent dans /etc/nagios3 (évidement, c'est la configuration d'Ubuntu, avec une configuration par les sources, ils seraient potentiellement dans un autre répertoire).
Je présenterai ici les fichiers que j'ai modifié pour MON système. Les autres, nagios.cfg, commands.cfg et resource.cfg restent inchangés par rapport à la configuration fournie par dans le package d'Ubuntu.
On notera enfin que le programme chargera tous les fichiers qui se trouvent dans le répertoir /etc/nagios3/conf.d : c'est dans ce répertoire qu'on placera tous nos configurations personnelles. Ceci est configurable par une directive dans nagios.cfg
Ce fichier est utilisé pour configurer l'interface web dans apache, à travers le fichier de configuration /etc/apache2/conf.d/nagios3.conf .
Quand on est un peu chatouilleux, on a envie de modifier les alias histoire de réduire les risques de sécurité au cas où une faille de Nagios soit découverte ... Ca devrait être possible sans modifier les pages HTML ou PHP par la variable physical_html_path du fichier cgi.cfg.
Mouai, j'ai préféré baser ma sécurité sur l'authentification d'apache et utiliser un compte alternatif à nagiosadmin.
Comme son nom l'indique, ce fichier contient les paramètres qui s'appliquent aux CGIs, en particulier au niveau des utilisateurs. Souvenons-nous que l'utilisateur nagiosadmin a été créé par le programme d'installation. Par mesure de sécurité, il est préférable d'utiliser un compte dédié ...
Dans mon cas, il n'y a qu'un seul profile et la solution la plus simple est encore :
Il n'est pas nécessaire de redémarrer Apache ou Nagios en cas de modification (vu que tout ce passe au niveau des scripts)
Nagios peut avoir un fonctionnement diffèrent en fonction du moment où l'incident se produit. Ainsi, on peut choisir de n'envoyer un mail que lorsque nous sommes un jour ouvré, pendant les horaires de travail.
Ce fichier contient la définition de différentes périodes souvent utilisées, à savoir :
Pour facilité la configuration, Nagios connait la notion d'héritage. C'est pourquoi il existe les objets generic-host et generic-service qui contiennent respectivement le template des machines et des services qu'on peut y trouver.
Dans mon cas, je n'y ai modifié que le groupe de contact (vu que je souhaite notifier support et non admins).
Ce fichier contient la définition des personnes à contacter en cas de problème. Voici les définitions que j'utilise :
define contact{
contact_name laurent24
alias Mon adresse public
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email xxx@yahoo.com
}
define contact{
contact_name laurentTaf
alias Mon adresse au taf
service_notification_period workhours
host_notification_period workhours
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email moi@aMonTaf.com
}
Et on peut même les agréger dans un group
define contactgroup{
contactgroup_name support
alias Support en cas de probleme
members laurentTaf,laurent24
}
Comme indiqué précédemment, Nagios permet de simplifier grandement la gestion des objets à superviser grâce à l'héritage. Ainsi, il est possible de regrouper des caractéristiques partagées dans des objets génériques. On les reconnaitra par la présence de l'attribut
register 0
Ubuntu fourni les fichiers generic-host.cfg et generic-service.cfg ... qui conviennent parfaitement à mon usage.
De plus, on peut aussi définir des groupes. Par exemple, dans mon cas, j'ai défini
Le fichier de définition ressemble à
define hostgroup {
hostgroup_name g-debian
alias Debian GNU/Linux hosts
members actif, chose
}
(avec actif et chose qui sont mes machines ... on les verra plus loin).
On notera qu'on peut leur associer des icônes grâce au hostextinfo.
define hostextinfo{
hostgroup_name g-debian
notes Debian GNU/Linux hosts
icon_image base/debian.png
icon_image_alt Debian GNU/Linux
vrml_image debian.png
statusmap_image base/debian.gd2
}
Ici, les icones sont fournis par Ubuntu, mais on peut ajouter les notres.
Comme indiqué précédemment, la majorité des options sont héritées de generic-host. Pour chacun des hosts, il nous reste à définir leurs paramètres spécifiques telle que leur adresse IP.
Ici, je ne définirai que 2 machines :
Comme indiqué dans la présentation de mon réseau, il s'agit d'un alias sur la machine où se trouvent tous les services 24/24 de mon réseau ... Dans le billet suivant, je listerai les services que j'y vérifie.
define host{
use generic-host ; Name of host template to use
host_name actif
alias localhost
address 192.168.0.3
}
La freebox pour accéder à Internet.
define host {
host_name boitelibre
alias Default Gateway
address 192.168.0.10
use generic-host
}
Sa particularité est qu'elle ne supporte aucun service ... on verra que Nagios n'aime pas trop ...
Il s'agit d'une IP flottante attachée à la machine qui fait tourner VLC pour le freeplayer.
define host {
host_name freeplayer
alias Default Gateway
address 192.168.0.12
use generic-host
notification_options n
}
La particularité est qu'on aura ici a vérifier que VLC fonctionne ... sur une machine qui peut être différente de celle où fonctionne Nagios.
De plus, comme ce service n'a rien de critique, les notifications sont désactivés.
Visitez : Nos sorties Ski et rando |
Copyright Laurent Faillie
2001-2024
N'oubliez pas d'entrer le mot de passe pour voir aussi les photos perso. |
Contactez moi si vous souhaitez réutiliser ces photos et pour les obtenir avec une plus grande résolution. |
Visites durant les 7 derniers jours au total. |
Vous pouvez
laissez un commentaire
sur cette page.