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 [2018/02/05 08:25] – [Installation de PNP4Nagios] pteuinformatique:logiciels:nagios [2021/01/15 15:47] (current) – [Contrôler Nagios en CLI] nagios_downtime_w_childs.sh pteu
Line 1088: 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 1205: 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 1216: 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 1729: 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.1517819141.txt.gz · Last modified: 2018/02/05 08:25 by pteu