User Tools

Site Tools


informatique:logiciels:nagios

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatique:logiciels:nagios [2016/04/01 07:34] – [Exemple 3] pteuinformatique:logiciels:nagios [2021/01/15 15:47] (current) – [Contrôler Nagios en CLI] nagios_downtime_w_childs.sh pteu
Line 1052: Line 1052:
  
   * Choisir le mode de fonctionnement de pnp4nagios (cf http://docs.pnp4nagios.org/fr/pnp-0.6/modes). Dans mon cas ça sera le **mode synchronisé** car c'est ce qui est conseillé pour les petites installations (< 1000 services).   * Choisir le mode de fonctionnement de pnp4nagios (cf http://docs.pnp4nagios.org/fr/pnp-0.6/modes). Dans mon cas ça sera le **mode synchronisé** car c'est ce qui est conseillé pour les petites installations (< 1000 services).
 +<WRAP center round info 60%>
 +Note : ce mode semble buggué sur Debian 9 / Nagios 4.3.4 / PNP 0.6.26, utiliser plutôt d'autres modes (bulk par exemple)
 +</WRAP>
  
   * Configurer Nagios pour qu'il fasse appel à PNP4Nagios :   * Configurer Nagios pour qu'il fasse appel à PNP4Nagios :
Line 1085: Line 1088:
 <code bash> <code bash>
 ln -s /usr/share/doc/pnp4nagios/examples/ssi/status-header.ssi /usr/share/nagios3/htdocs/ssi/ ln -s /usr/share/doc/pnp4nagios/examples/ssi/status-header.ssi /usr/share/nagios3/htdocs/ssi/
 +
 +# ou, avec un Nagios/PNP récemment compilée :
 +cp /home/dude/src/pnp4nagios-0.6.26/contrib/ssi/status-header.ssi /usr/local/pnp4nagios/share/
 +ln -s /usr/local/pnp4nagios/share/status-header.ssi /usr/local/nagios/share/ssi/
 </code> </code>
  
Line 1114: Line 1121:
 <code bash> <code bash>
 vi cgi.cfg vi cgi.cfg
-action_url_target=main+action_url_target=_self
 </code> </code>
  
Line 1120: Line 1127:
 <code bash> <code bash>
 service nagios3 restart service nagios3 restart
 +# OU
 +systemctl restart nagios
 </code> </code>
  
Line 1200: Line 1209:
 {{ :informatique:logiciels:template_pnp4nagios.png?direct |}} {{ :informatique:logiciels:template_pnp4nagios.png?direct |}}
  
-Pour chaque service disposant de perfdata et sur lequel PNP4nagios est activé, le plugin va rechercher son template éponyme avec l'extension ".php" dans les répertoires suivants (et dans cet ordre) :+Pour chaque service disposant de perfdata et sur lequel PNP4nagios est activé, le plugin va rechercher un template éponyme du nom de sa commande (''command_name'' dans la définition de la commande), avec l'extension ".php"dans les répertoires suivants (et dans cet ordre) :
 <code bash> <code bash>
 # avec le paquet pnp4nagios sous debian 7 : # avec le paquet pnp4nagios sous debian 7 :
Line 1211: Line 1220:
 </code> </code>
  
-Par exemple pour un service "check_syno_4disks_temp" il recherchera le template check_syno_4disks_temp.php. S'il ne le trouve pas il appliquera le template ''default.php'' qui trace une courbe par valeur. Il va ensuite créer un fichier XML qui contiendra les perfdata, dans le même répertoire que la base RRD : ''/var/lib/pnp4nagios/perfdata/<host>'' (ou ''/usr/local/pnp4nagios/var/perfdata/'' si pnp4nagios a été installé à partir les sources).+Par exemple pour un service "check-syno-4disks-temp" appelant la commande la commande "check_syno_4disks_temp" (''check_command check_syno_4disks_temp!public''), il recherchera le template **check_syno_4disks_temp.php**. S'il ne le trouve pas il appliquera le template ''default.php'' qui trace une courbe par valeur. Il va ensuite créer un fichier XML qui contiendra les perfdata, dans le même répertoire que la base RRD : ''/var/lib/pnp4nagios/perfdata/<host>'' (ou ''/usr/local/pnp4nagios/var/perfdata/'' si pnp4nagios a été installé à partir les sources).
  
 ====Exemple 1 : trafic in/out==== ====Exemple 1 : trafic in/out====
Line 1724: Line 1733:
 [Thu Sep  3 10:29:38 2015] Auto-save of retention data completed successfully. [Thu Sep  3 10:29:38 2015] Auto-save of retention data completed successfully.
 </code> </code>
 +
 +
 +
 +=====Contrôler Nagios en CLI=====
 +
 +Grâce au commandes externes, on peut envoyer des ordres à Nagios via la ligne de commande, ce qui va plus vite que l'interface web dès qu'on donne beaucoup d'ordres :) Pour cela il suffit d'utiliser l'API/la syntaxe documentée ici : [[https://assets.nagios.com/downloads/nagioscore/docs/externalcmds/|Nagios Core External Commands]].
 +
 +Exemples de scripts inspirés de ceux de la doc :
 +  * ''nagios_downtime-host-and-childs.sh'' : permet de planifier un DOWNTIME à partir de maintenant pour un ou des hosts et tous ces childs.
 +<code bash nagios_downtime-host-and-childs.sh>
 +#!/bin/bash
 +# This is a sample shell script showing how you can submit the SCHEDULE_AND_PROPAGATE_HOST_DOWNTIME command
 +# to Nagios. Adjust variables to fit your environment as necessary.
 +
 +[ -z "$3" ] && { echo "Syntaxe: ${O##*/} <duree_secs> <commentaire> <host> {<host2> <host3> etc..}"; exit 1; }
 +
 +now=`date +%s`
 +commandfile='/var/nagios/rw/nagios.cmd'
 +end=`expr $now + $1`
 +comment="$2"
 +shift 2
 +
 +while [ -n "$1" ]; do
 +   /usr/bin/printf "[%lu] SCHEDULE_AND_PROPAGATE_HOST_DOWNTIME;$3;$now;$end;1;0;7200;toto;$comment\n" $now > $commandfile
 +   shift
 +done
 +</code>
 +
 +  * permet de planifier un downtime pour un host et ses childs à un date donnée
 +<code bash nagios_downtime_w_childs.sh>
 +function usage {
 +        echo "Usage: ${O##*/} <host> <date_debut> (format: \"%Y-%m-%d %H:%M:%S\")> <date_fin> \"<commentaire>\""
 +        echo " format dates: \"%Y-%m-%d %H:%M:%S\""
 +        echo " ex: nagios_downtime_w_childs.sh switch1 \"2021-01-15 07:18:00\" \"2021-01-15 07:48:00\" \"test downtime 30min\""
 +        exit 1
 +        }
 +
 +[ -z "$4" ] && usage
 +
 +now=$(date +%s)
 +commandfile='/var/nagios/rw/nagios.cmd'
 +
 +# affectation et contrôle des inputs
 +naghost=$1
 +debut=$(date -d "$2" +%s 2>/dev/null)
 +[ -z "$debut" ] && { echo "Date début $2 invalide !"; usage; }
 +#[[ "$3" =~ ^[0-9]*$ ]] && fin=`expr $debut + $3` || { echo "ERR: Durée $3 invalide !"; usage; }
 +fin=$(date -d "$3" +%s 2>/dev/null)
 +[ -z "$fin" ] && { echo "Date fin $3 invalide !"; usage; }
 +comment="$4"
 +
 +/usr/bin/printf "[%lu] SCHEDULE_AND_PROPAGATE_HOST_DOWNTIME;$naghost;$debut;$fin;1;0;7200;toto;$comment\n" $now > $commandfile
 +</code>
 +=====Annuler des actions en masse=====
 +
 +//Préalable : il faut avoir activer les commandes externes (ce qui est bien souvent le cas...)//
 +
 +Pour annuler en masse certaines actions, on peut interagir avec le fichier de pipe nommé **nagios.cmd** (situé dans **/var/spool/nagios/cmd/** ; sinon voir le paramètre ''command_file'' dans **/etc/nagios/nagios.cfg**).
 +
 +Exemple pour supprimer des DOWNTIME planifiés pour un équipement et tous ses fils (soit une centaine de DOWNTIME) :
 +  * on pourrait les supprimer un par un / clic par clic dans le menu "Downtime" ou ils sont listés, mais ça serait fastidieux ; au lieu de cela, repérer juste le premier et le dernier "Downtime ID" (1050 et 1150 dans mon cas)
 +  * puis se connecter en SSH sur le serveur et lancer la commande :
 +<code bash>
 +for i in `seq 1050 1150`; do
 +  printf "[%lu] DEL_HOST_DOWNTIME;$i\n" `date +%s` > /var/nagios/rw/nagios.cmd
 +done
 +</code>
 +Cela a pour effet d'envoyer des commandes qui seront lues par nagios ; l'effet n'est pas immédiat cela peut prendre quelques secondes/minutes.
  
  
informatique/logiciels/nagios.1459496051.txt.gz · Last modified: 2016/04/01 07:34 by pteu