Outils pour utilisateurs

Outils du site


nagios

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

nagios [2017/04/09 09:24] (Version actuelle)
Ligne 1: Ligne 1:
 +{{tag> infra supervision}}
 +=====  Nagios =====
 + ​==== ​ Références:​ ====
 +Voir la documentation officielle, très bien faite.
 +
 + ​==== ​ Prérequis: ====
 +[[:apache| apache2]]
 +
 + ​==== ​ Installation:​ ====
 +<​code>​
 + ​aptitude install nagios3
 +</​code>​
 +
 +Lors de l'​installation,​ un utilisateur //​nagiosadmin//​ est créé pour l'​accès à l'​interface web
 +
 + ​==== ​ Configurer apache ====
 +
 +Il peut être judicieux de modifier les directives de contrôle d'​accès dans  la configuration apache
 +
 +Il faut ensuite créer un utilisateur pour l'​accès à la page web:
 +<​code>​
 +   ​htpasswd -c /​etc/​nagios3/​htpasswd.users nagiosadmin
 +</​code>​
 +
 + ​==== ​ Configuration ====
 +
 +Celle-ci passe par la mise en place d'un ensemble d'//​Objets de Configuration//​ basé sur des //​Modèles//​.
 +
 +Les objets de base, à définir impérativement sont:
 +
 +^Nom ^  Fichier de configuration ^
 +| contact | contacts.cfg |
 +| groupe de contact |  contactgroups.cfg |
 +| hote | hosts.cfg |
 +| groupe d'​hotes | hostgroups.cfg |
 +| service | services.cfg |
 +
 +penser à **vérifier** la syntaxe après toute modification via la commande suivante:
 +
 +
 +<​code>​
 + ​[[:​nagios|nagios]] -v /​etc/​nagios/​nagios.cfg
 +</​code>​
 +
 +à noter que les objets //​services//​ font le liens entre un //(groupe de )contact(s)//,​ un //(groupe de) machine(s)//​ et une //​commande//​
 +
 +====  Configurer l'​authentification ====
 +
 +Elle est nécessaire pour permettre l'​éxécution de commandes
 +
 +voir le fichier **[browser:​config/​workine/​nagios3/​cgi.cfg]**:​
 +<​code>​
 +use_authentication=1
 +</​code>​
 +
 +Ajouter la regle [[:​old:​logcheck| logcheck]] suivante:
 +<​code>​
 +[[:​nagios|nagios]] Auto-save of retention data completed successfully
 +</​code>​
 +
 + ==== Notification ====
 +Comment éviter de se faire flooder, ou d'​exploser le budget téléphone dans le cas d'une alerte par sms ?
 +
 +Déjà ce dernier cas peut être corrigé par le mécanisme d'​escalade.
 +
 +Sinon, il faut jouer sur les directives suivantes:
 +
 +  * //​check_interval//​ : intervalle de vérification,​ en minute, en temps normal
 +  * //​max_check_attemps//​ : nombre de tentatives de vérification à faire si l'​état du service n'est plus //OK// avant de déclencher une alerte.
 +  * //​retry_interval//​ : intervalle de vérification,​ en minute, quand le service n'est pas dans l'​état //OK//.
 +  * //​notification_interval//​ : intervalle entre 2 notifications. Mettre à **zéro** pour désactiver les **re**notifications.
 +
 + ==== Service SMS ====
 +
 +En attendant le push-mail, l'​utilisation des services //​mail2sms//​ de [http://​smsbox.fr smsbox] peut être utile.
 +
 +
 +FREEmobile permet d'​envoyer des sms vers son propre téléphone gratuitement,​ illimité, via api web
 +
 +==== Passive check ====
 +
 +L'​idée est de pouvoir monitorer une machine derrière un parefeu sans passer par un vpn, en utilisant //ncsa//
 +
 +sur le serveur nagios: yum install nsca, lancer et activer le service. Par défaut un //​chiffrement XOR// est utilisé pour les échanges, pour les besoins, on peut mettre en œuvre un chiffrement symétrique par clé partagée.
 +
 +
 +sur le client: yum install nsca-client
 +
 +sur le serveur:
 +
 +  - installer et activer //nsca//
 +  - installer le plugin //​nagios-plugins-dummy//​
 +  - définir une //​commande//:​
 +<​code>​
 +define command{
 +        command_name ​   check-dummy
 +        command_line ​   /​usr/​lib64/​nagios/​plugins/​check_dummy $ARG1$ $ARG2$
 +        }
 +</​code>​
 +
 +
 +Définition d'un service ou d'un host passif:
 +
 +Dans la définition :
 +  - activer //​active_checks_enabled//​
 +  - activer //​passive_checks_enabled//​
 +  - définir une //​check_command//​ utilisant check-dummy!2!"​no recent check"
 +  - activer //​check_freshness//​
 +  - définir //​freshness_threshold//​
 +
 + ​==== ​ En option: ====
 +
 +
 + ​=== ​ escalade ===
 +
 +<​code>​
 +define serviceescalation{
 + host_name webserver
 + service_description HTTP
 + first_notification 3
 + last_notification 5
 + notification_interval 45
 + contact_groups nt-admins,​managers
 + }
 +define serviceescalation{
 + host_name webserver
 + service_description HTTP
 + first_notification 6
 + last_notification 0
 + notification_interval 60
 + contact_groups nt-admins,​managers,​everyone
 + }
 +</​code>​
 +
 +Dans cet exemple si le service //http// sur la machine //​webserver//​ n'est pas revenu à la normale au bout de la 5eme verification ( //​last_notification//​ ) alors on contact tout le monde.
 +
 +====  NRPE ====
 +
 +**nrpe** est un addon à [[:​nagios|nagios]] permettant l'​éxécution de plugins [[:​nagios|nagios]] sur un client, et la récupération des résultats par le serveur [[:​nagios|nagios]].
 +
 +===  sur le client: ===
 +
 +<​code>​
 +aptitude install nagios-nrpe-server
 +</​code>​
 +
 +<​code>​
 +[[:​vim|vim]]/​etc/​nagios/​nrpe.cfg
 +server_port=5666
 +allowed_hosts=82.224.208.146
 +nrpe_user=nagios
 +nrpe_group=nagios
 +dont_blame_nrpe=0
 +debug=0
 +command_timeout=60
 +command[check_users]=/​usr/​lib/​nagios/​plugins/​check_users -w 5 -c 10
 +command[check_load]=/​usr/​lib/​nagios/​plugins/​check_load -w 10,8,2 -c 30,20,11
 +command[check_disk1]=/​usr/​lib/​nagios/​plugins/​check_disk -w 20 -c 10 -p /dev/hda1
 +command[check_disk2]=/​usr/​lib/​nagios/​plugins/​check_disk -w 20 -c 10 -p /dev/hdb1
 +command[check_zombie_procs]=/​usr/​lib/​nagios/​plugins/​check_procs -w 5 -c 10 -s Z
 +command[check_total_procs]=/​usr/​lib/​nagios/​plugins/​check_procs -w 150 -c 200
 +</​code>​
 +
 +modifier le parefeu:
 +
 +<​code>​
 +iptables -A INPUT -i ppp0 --source [[:​commercial:​opendoor|opendoor]].fr -p tcp --dport 5666 -j ACCEPT
 +invoke-rc.d nagios-nrpe-server restart
 +</​code>​
 +
 +===  sur le serveur: ===
 +  * installer le plugin nrpe
 +<​code>​
 +aptitude install nagios-nrpe-plugin
 +</​code>​
 +===  Troubleshooting nrpe. ===
 +
 +  * message "**no output from plugin**"​ : Vérifier la configuration de la commande incriminée dans /​etc/​nagios-plugins/​config ).
 +  * message **"... virgule flottante..."​** : il s'agit d'un problème de **[[:​locale|locale]]**
 +  * Il est conseillé de tester en directement le bon fonctionnement d'un plugin. Ceux-ci se trouvent dans ///​usr/​lib/​nagios/​plugins//​.
 +
 + ​==== ​ Au final: ====
 +
 +Les alertes sont envoyées par mail, elle apparaissent aussi dans les logs, et sont donc traitées par [[:​old:​logcheck| logcheck]]: il est recommandé de les filtrer.
 +
 + ​==== ​ NRPE et le plugin procps ====
 +
 +d'​après la doc, le plugin //procps// permet une surveillance fine des services d'une machine:
 +
 +ce plugin permet:
 +
 +  * vérification du nombre d'un process donné:
 +<​code>​
 + ​check_procps -w 2:20 -C [[:​apache|apache]]
 +</​code>​
 +
 +// erreur si le nombre de process [[:​apache|apache]] est < à 2 ou > à 20//
 +
 +  * vérification de la charge d'un process donné:
 +<​code>​
 + ​check_procps -c
 +</​code>​
 +pour les valeurs, voir la commande suivante:
 +<​code>​
 + /​bin/​ps axwo 'vsz rss pcpu comm'
 +</​code>​
 +le flag //--sort rss // ( ou autre ) peut être intéressant
 +
 +
 +
 +//par exemple//:
 +
 +  * un //pcpu// > 10, c'est énorme
 +
 +Vérifier si un périphérique est monté : utiliser l'​option **-E** de //​check_disk//​ :
 +<​code>​
 +/​usr/​lib/​nagios/​plugins/​check_disk -E -w 10 -c 30 --path=/​media/​usb
 +</​code>​
 +
 +Vérifier tous les disques en une seule fois, n'​affiche que les erreurs:
 +<​code>​
 +/​usr/​lib/​nagios/​plugins/​check_disk --units=GB -w 20% -c 10% -e -E -p / -p /var -p /tmp  -p /data
 +</​code>​
 +==== En pratique ====
 +
 +[[:​MonitoringNagios| c'est ici]]
 +
 +Voir également [[:​maison:​sci| nagios à sciencespo]]
 +
 +==== Monitoring d'un serveur Windows ====
 +
 +=== nsc ===
 +testé à Saint germain sur serveur [[:​windows|windows]] 2008R2
 +
 +Installation de nsc++ from http://​nsclient.org/​nscp/​downloads
 +(attention de ne pas installer nscp qui n'a rien à voir).
 +
 +nom du service: //nscp//
 +
 +fichier de conf: c:\program files\nsclient++\nsclient.ini
 +
 +Configurer [[:​nagios|nagios]] pour qu'il utiliser //​check_nt//​. Attention aux espaces dans les paramètres.
 +
 +Modifier le fichier // /​etc/​nagios-plugins/​config/​nt.cfg // pour rajouter:
 +  * le n° de port " -p 12489"
 +  * le mot de passe " -s nsclient"​ défini lors de l'​installation de nsc++
 +
 +Lancer le service.
 +
 +Exemple de configuration [[:​nagios|nagios]]:​
 +<​code>​
 +        check_command ​  ​check_nt!'​USEDDISKSPACE -l c -w 50 -c 60'
 +        check_command ​  ​check_nt!'​USEDDISKSPACE -l E -w 50 -c 60'
 +        check_command ​  ​check_nt!'​SERVICESTATE -d SHOWALL -l OracleServiceEMAGNUS10GR2'​
 +        check_command ​  ​check_nt!'​SERVICESTATE -d SHOWALL -l "​Berger-Levrault SAM"'​
 +        check_command ​  ​check_nt!'​SERVICESTATE -d SHOWALL -l "​Berger-Levrault AGENT"'​
 +</​code>​
 +
 +=== snmp ===
 +
 +[[:snmp]] c'est bien c'est standard. Résultat d'un test (2016.07) rapide depuis chemine sur ecoline:
 +  - check_snmp_storage.pl est compatible avec windows
 +  - check_snmp_process.pl est compatible avec windows
 +  - check_snmp_load.pl est compatible avec windows
 +  - check_snmp_mem pas compatible mais comme indiqué dans le script, on peut utiliser check_snmp_storage pour vérifier l'​état de la mémoire:
 +<​code>​
 +/​etc/​nagios/​custom_check/​check_snmp_storage.pl -C opendoor -2 -H ecoline -m "​^Virtual Memory$"​ -w 10 -c 20
 +</​code>​
 +
 +en ce qui concerne ce dernier:
 +  - .1.3.6.1.2.1.25.2 : branche stockage / ram (.4)
 +  - .1.3.6.1.2.1.25.2.3.1.3.4 : mémoire physique
 +  - .1.3.6.1.2.1.25.2.3.1.4.4 : unité de stockage utilisée (apparemment 64Ko)
 +  - .1.3.6.1.2.1.25.2.3.1.5.4 : espace total
 +  - .1.3.6.1.2.1.25.2.3.1.6.4 : espace utilisé
 +==== Plugin personnalisé ====
 +
 +Un script de vérification [[:​nagios|nagios]] doit notamment renvoyer les valeurs suivantes:
 +^valeur^état^
 +| 0 | OK |
 +| 1 | WARNING |
 +|2 | CRITICAL |
 +|4|UNKNOW|
 +
 +Il doit être exécutable par l'​utilisateur **[[:​nagios|nagios]]** (ou nrpe dans le cas d'un check distant) donc pas de droit root !
 +
 +==== Divers ====
 +
 +=== Ligne de commande ===
 +
 +Désactiver les "host notifications"​ pour une machine:
 +<​code>​
 +curl --insecure ​ -d "​cmd_typ=25&​host=HOST&&​btnSubmit=Commit"​ "​https://​NAGIOSSERVER/​nagios/​cgi-bin/​cmd.cgi"​ --user '​NAGIOSUSER:​NAGIOSPASS'​
 +</​code>​
 +
 +==== Vérifier la validité d'un certificat ====
 +
 +<​code>​
 +git clone https://​github.com/​matteocorti/​check_ssl_cert.git
 +</​code>​
 +
 +Définir une nouvelle commande:
 +<​code>​
 +define command{
 +        command_name ​   check_cert_validity
 +        command_line ​   PATH_TO/​check_ssl_cert --noauth -H $ARG1$ --warning 30 --critical 10
 +        }
 +</​code>​
 +
 +Définir un nouveau service:
 +<​code>​
 +define service
 +        host_name ​              ​gelatine
 +        service_description ​    check certificate validity
 +        use                     ​lazy-service
 +        check_command ​          ​check_cert_validity!pad.opendoor.fr!
 +        }
 +</​code>​
 +//​Remarque://​
 +
 +//​lazy-service//​ est une définition de service personnalisée,​ avec une
 +fréquence de vérification moins importante. Vous pouvez-utiliser
 +//​generic-service//​ à la place.
 +
 +host_name désigne la machine hébergeant le ou les sites
 +
 +La commande prend en paramètre le nom du site dont on souhaite vérifier le
 +certificat.
 +
 +# vim: set filetype=dokuwiki:​
  
nagios.txt · Dernière modification: 2017/04/09 09:24 (modification externe)