
![]()
Qu'est ce que c'est que Nagios ?
Nagios est un outil permetant de monitorer d'autres machines d'un réseau et d'informer des contacts de differents problemes relatifs à des services "espionner" sur ces machines. Les alertes peuvent se faire soit par e-mail soit par SMS (noter que je ne détaillerai pas ici les alertes GSM ni leurs configurations).
Nagios est issu de Net Saint.
Nagios ne s'installe que sous Lunix, mais est capable de monitorer n'importe quel OS grace à des plugins.
Comment configurer Nagios sur une Mandrake ?
Pour ce tutorial j'ai utilisé une Mandrake 10.1 (valable également sous Debian) avec Nagios 2.0a1 et un serveur de messagerie type sendmail ou postfix et du serveur web apache.
Les fichiers de configuration de Nagios se trouvent dans le repertoire /etc/nagios/ (pour y accèder vous devez être logué sous root ou disposer des droits de modifications dans ce repertoire).
Le premier fichier à éditer est le fichier nagios.cfg voici son contenu :
# Les lignes précées du dièse sont des commentaires qui permete la compréhention de ce que l'on est en train de faire
Les Lignes colorées en rouges sont les paramètres que j'ai changé dans le fichier de base de Nagios.
log_file=/var/log/nagios/nagios.log
# emplacement du fichier de log de Nagios# Enchainnement de fichiers de configuration dont nous verrons le détails plutard. Les fichiers de configuration sont appellés ici par cfg_file = chemin/nomdufichierdeconf.cfg . Pour désactiver l'appel à l'un d'eux il suffit de rajouter un # pour commenter la ligne.
cfg_file=/etc/nagios/checkcommands.cfg
cfg_file=/etc/nagios/misccommands.cfg
cfg_file=/etc/nagios/contactgroups.cfg
cfg_file=/etc/nagios/contacts.cfg
cfg_file=/etc/nagios/dependencies.cfg
cfg_file=/etc/nagios/escalations.cfg
cfg_file=/etc/nagios/hostgroups.cfg
cfg_file=/etc/nagios/hosts.cfg
cfg_file=/etc/nagios/services.cfg
cfg_file=/etc/nagios/timeperiods.cfgcfg_file=/etc/nagios/hostextinfo.cfg
#cfg_file=/etc/nagios/serviceextinfo.cfgcfg_dir=/etc/nagios/servers (laisser en commentaire - Je n'ai pas trouvé d'informations sur le fonctionnement de ce fichier à ce jour)
cfg_dir=/etc/nagios/printers
cfg_dir=/etc/nagios/switches
cfg_dir=/etc/nagios/routersobject_cache_file=/var/log/nagios/objects.cache
# emplacement du fichier contenant toute la configuration de Nagios quand celui-ci est en route (ceci permet de modifier la configuration sans avoir besoin d'arrêter le service)
resource_file=/etc/nagios/resource.cfg
# Fichier de configuration pour des ressources supplémentaires comme des macros par exemple. Il n'est pas necessaire de commenter cette ligne même si le fichier ne nous sert pas, car celui-ci est par defaut présent dans /etc/nagios/ et comporte que des commentaires.status_file=/var/log/nagios/status.dat
# Emplacement du fichier status pour le serveur Nagios. C'est ce fichier qui sera lu lors de la consulation web du status.nagios_user=nagios
# Nom de l'utilisateur Nagios (laisser par defaut mais penser à le créé sur le systeme et également dans apache : htpasswd /etc/nagios/passwd nagiosadmin puis pensez à modifier le fichier /etc/nagios/group en consequence)nagios_group=nagios
# Groupe Nagios - Permet d'ajouter des utilisateurs systèmes afin qu'ils possèdent les même droit que l'utilisateur Nagioscheck_external_commands=1
# Placez l'indicateur à 1 est indispensable afin que Nagios utilisent les CGI pour checker les services. Si vous mettez la valeur à 0 Nagios fonctionnera en autonome et ne pourra checker d'autres système#command_check_interval=1
#command_check_interval=15s
command_check_interval=-1
# Si vous choisissez 1 alors Nagios checkera les commandes externes toutes les 1 minutes. Pour un intervalle en seconde alors ajouter "s" après le nombres désiré par ex : 15s = 15 secondes. "-1" comme configuré ici fait en sorte que Nagios check aussi souvent qu'il le peut les commandes externes.command_file=/var/spool/nagios/nagios.cmd
# c'est le fichier qui est créé lorsqu'un check d'une commande est lancé par Nagios - Laisser le paramètre par defaut, mais s'assurer que l'utilisateur Nagios a bien le droit d'écrire sur ce fichier
comment_file=/var/log/nagios/comments.dat
# Fichiers de commentaires. Sur l'interface web vous pouvez placer des commentaires et c'est dans ce fichier qu'ils seront stockés. Vérifier ici que les droits d'ecriture pour apache sont bien passédowntime_file=/var/log/nagios/downtime.dat
# Fichier utilisé par Nagios pour enregistrer les downtimelock_file=/var/run/nagios/nagios.pid
# Fichier PIDtemp_file=/var/log/nagios/nagios.tmp
# Fichier temporaire créé puis supprimé par Nagios à chaque opérationevent_broker_options=-1
# Indique quelles sont les options à envoyés aux broker si il y en a un... dans notre configuration il n'y en a pas. Laisser par defaut à -1
# broker_module=/somewhere/module1.o
# broker_module=/somewhere/module2.o arg1 arg2=3 debug=0
# Emplacement où paramètrer les broker - Je ne me suis jamais interessé à eux donc je ne détaillerai pas ici leur configuration ni leur utilitélog_rotation_method=d
# Delais de rotation des log (n = aucune; h = heures ; d = journaliere ; w = semestrielle ; m = mensuelle)log_archive_path=/var/log/nagios/archives
# Emplacement où les archives des logs seront stockéesuse_syslog=1
# 0 n'utilise pas le syslog 1 l'utilise.log_notifications=1
# Si vous ne désirez pas que les notifications envoyés par email soient loguées alors passer le paramètre à 0log_service_retries=1
# Idem pour les re-tentative de check sur les services espionnéslog_host_retries=1
# Idem sur les hostlog_event_handlers=1
# Idem pour l'activité des hosts et serviceslog_initial_states=0
# Si le paramètre est à 1, le fichier de log soncervera toujours le premier etat du host ou du service la première fosi qu'il a été testélog_external_commands=1
# Permet de loguer les differentes commandes exécutéeslog_passive_checks=1
# Log les check passifs (je n'ai pas très bienc ompris à quoi ils correspondaient mais je laisse par défaut à 1.#global_host_event_handler=somecommand
#global_service_event_handler=somecommand
# Ces paramètres sont des options que je ne détaillerai pas ici et dont l'utilité est réduite dans une utilisation standar du produit.service_inter_check_delay_method=s
# Paramètre de delais de check. Visiblement dans la documentation ils indiquent que s est la meilleure méthodes donc je laissepar défaut à s.max_service_check_spread=30
# Paramètre indispensable mais peu d'utilité à changer. Il s'agit du delais maximum attendu pour que tous les services soient scheduler après le lancement du programme. En mettant à 30 minutes le système fera tout pour que tous les services et hosts espionnés soient testé au plutard 30 minutes après le start du demon Nagiosservice_interleave_factor=s
# Mettre s indique au système de déterminé automatiquement le delais entre deux checks d'un même servicehost_inter_check_delay_method=s
# Mettre s indique au système de déterminé automatiquement le delais entre deux checks d'un même hosts.max_host_check_spread=30
# Idem que pour max_service_check_spread mais pour les hosts cette fois.max_concurrent_checks=0
# Indique le nombre de services checké en parallèle sur la machine. 0 laisse le système déterminé le nombre maximum qu'il est capable.service_reaper_frequency=10
# frequence à laquelle Nagios transmet le résultat d'un check sur un serviceauto_reschedule_checks=0
# Attention ce paramètre étant expérimental il est préférable de ne pas le changer et de le laisser sur 0auto_rescheduling_interval=30
# Ne pas changer et laisser sur 30 - Paramètre utile uniquement quand auto_reschedule_check est actif
auto_rescheduling_window=180
# idemsleep_time=0.25
# Delais d'attente sur les checksservice_check_timeout=60
host_check_timeout=30
event_handler_timeout=30
notification_timeout=30
ocsp_timeout=5
perfdata_timeout=5
# Delais d'attente avant que Nagios tue les processes.retain_state_information=1
# Indique à Nagios s'il doit sauvegarder l'etat des services et host avant de s'arrêter.state_retention_file=/var/log/nagios/retention.dat
# Emplacement du fichier pour le paramètre précédentretention_update_interval=60
# Delais en minutes entre les sauvegarde des etatsuse_retained_program_state=1
# Pas vraiment compris ce paramètre.use_retained_scheduling_info=0
# Permet à Nagios de retenir où il en etait dans les checks avant de s'arrêter. Très peu utile donc mieux vaut passer le paramètre à 0 (desactivé)interval_length=60
# Paramètre la longueur de l'unité utilisé dans les check (60 = 1 minute)use_agressive_host_checking=0
# Vu que l'on est courtoi et calme on utilise pas cette option ;-)execute_service_checks=1
# Un peu inutile de mettre 0 car si tel est le cas, Nagios ne checkera pas les service à son lancement.accept_passive_service_checks=1
execute_host_checks=1
# Tout est bon à prendre donc on accepte les checks passifs
accept_passive_host_checks=1
# idem que pour les services mais pour les hostsenable_notifications=1
# Fort pratique alors oui on l'active.enable_event_handlers=1
# Idemprocess_performance_data=0
#host_perfdata_command=process-host-perfdata
#service_perfdata_command=process-service-perfdata
#host_perfdata_file=/tmp/host-perfdata
#service_perfdata_file=/tmp/service-perfdata
#host_perfdata_file_template=[HOSTPERFDATA]\t$TIMET$\t$HOSTNAME$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$
#service_perfdata_file_template=[SERVICEPERFDATA]\t$TIMET$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA #host_perfdata_file_mode=a
#service_perfdata_file_mode=a
#host_perfdata_file_processing_interval=0
#service_perfdata_file_processing_interval=0
#host_perfdata_file_processing_command=process-host-perfdata-file
#service_perfdata_file_processing_command=process-service-perfdata-file
# Indique si Nagios utilisera le fichier de commande perferdata. Je n'ai pas détaillé ici sa configuration donc on place 0 pour désactiver. Et donc tous les paramètres s'y ratachant sont ici commenter
obsess_over_services=0
#ocsp_command=somecommand
# Pas compris alors desactivécheck_for_orphaned_services=1
# Indique à Nagios de checker les services orphelinscheck_service_freshness=1
# Indique à Nagios de vérifier la "fraicheur" des services à checker. Ceci est utile pour vérifier si les check passifs sont bien reçusservice_freshness_check_interval=60
# Intervale de vérficationcheck_host_freshness=0
host_freshness_check_interval=60
# idem pour les hostsaggregate_status_updates=1
status_update_interval=15
# Pas tout compris donc laisse par defaut à 1enable_flap_detection=0
# Indique à Nagios s'il peut suspendre une alerte dans le cas où elle se repeterait trop souvent. Par exemple passage trop rapide de warning à OK et de OK à Warning.low_service_flap_threshold=5.0
high_service_flap_threshold=20.0
low_host_flap_threshold=5.0
high_host_flap_threshold=20.0
# Paramètre pour le flapping - Je ne détaille pas car l'option est disable dans mon exempledate_format=euro
# Afin d'avoirmax_embedded_perl_calls=0
# Nombre d'occurence avant la réinitalisation du composant Perl - 0 desactive la réinitalisationp1_file=/usr/sbin/p1.pl
# Emplacement de l'interpréteur de script perlillegal_object_name_chars=`~!$%^&*|'"<>?,()=
# Caractères non autorisés dans les noms de services ou de hostsillegal_macro_output_chars=`~$&|'"<>
# Caractères non autorisés dans les macrosuse_regexp_matching=0
# Plus pratique pour les débutant, reduit les erreur lors du lancementuse_true_regexp_matching=0
# Idemadmin_email=nagios
# Compte mail de l'admin de Nagiosadmin_pager=pagenagios
# Pager de l'admin de Nagios