PDA

View Full Version : Récupérer données dans un fichier texte


seb974
08-30-2007, 10:22 AM
Bonjour !

Voilà, j'aimerais récupérer les données d'un pc qui n'est pas dans le réseau. Apparement, Nagios n'est pas capable de le faire et je ne veux pas faire de VPN.

J'ai donc pensé quelque chose comme ceci :

Sur la machine cliente, un service écrit les informations que j'ai besoin de récupérer (exemple CPU, mémoire etc...) dans un fichier texte ou xml ou Base de données ou .... Le fichier (les données) est (sont) ensuite envoyé(s) par mail sur un serveur ftp en réseau avec le serveur Nagios ou par mail au serveur Nagios.

Un plugin s'occupe ensuite de lire les données, et d'afficher les alertes d'après le fichier texte.

Voici un schéma :

http://img410.imageshack.us/img410/4008/idefi5.png

Il y a t-il une solution plus simple (sans VPN) ? Mon "idée" est-elle réalisable ?

Merci de m'aider !! :)

seb974
08-30-2007, 10:30 AM
Comme service j'ai pensé à un truc comme NRPE pour éxécuter un plugin qui s'occuperais de récuperer les informations sur le CPU, la mémoire etc... et les écrierais dans un fichier texte et par la même occasion les enverraient par mail.

Mais j'aimerais pouvoir faire mon propre service, juste pour excéuter un plugin et non pas ce service NRPE. Je vais donc commencer par faire le service.

seb974
08-30-2007, 01:07 PM
Quelqu'un pourrait me dire quels sont les variables "essentiels" dans un plugin pour que nagios reconnaisse les différents états : Warning, Ok, Critical etc... svp

Quel variable renvoit le plugin pour que nagios/oreon change d'état ?

Merci ! :)

--

EDIT, ok c'est la valeur retournée par "exit" :)

Guigui2607
08-30-2007, 03:15 PM
Je me suis inspiré de cette page (http://nagiosplug.sourceforge.net/developer-guidelines.html)

C'est bien la sortie (exit) de ton script qui va donner l'état (OK, WARNING ou CRITICAL) à Nagios.

seb974
08-31-2007, 01:09 PM
J'ai créée 2 minis plugins pour lire dans un fichier texte (un en Bash et un en Perl). Quand je test la commande dans le terminal, ça fonctionne correctement.

Voici mon fichier texte :

Fichier config :
Cpu CRITIQUE: Taux d.utilisation du CPU = 94,32 %:
Mem OK: Taux d.utilisation de la memoire = 43,51 %:

Voici mes plugins :

#! /bin/bash

etat_cpu="$(awk -F ":" '{print $1}' config | grep Cpu)"
details_cpu="$(awk -F ":" '{print $2}' config | grep CPU)"

if [ "$etat_cpu" == "Cpu OK" ]; then
echo "OK - $details_cpu";
exit 0
fi

if [ "$etat_cpu" == "Cpu ATTENTION" ]; then
echo "Attention - $details_cpu";
exit 1
fi

if [ "$etat_cpu" == "Cpu CRITIQUE" ]; then
echo "Critique - $details_cpu";
exit 2
fi

#!/usr/bin/perl
use strict; use warnings;
@ARGV = ('config');
my ($etat_cpu, $details_cpu);

while(<>) {
last if ($etat_cpu, $details_cpu) = m/^Cpu (\w+): (.*)$/;
}

my %etat_exit = (OK => 0, ATTENTION => 1, CRITIQUE => 2);
print "$etat_cpu - $details_cpu";
exit $etat_exit{$etat_cpu};


Voici ce que je vois dans le terminal avec le plugin PERL:

CRITIQUE - Taux d.utilisation du CPU = 94,32 %


Sous oreon je ne vois que le tiret entre les 2 variables avec le plugin PERL:

-

Pourquoi ça ne fonctionne pas ? :confused: :| :(

Merci de m'aider.

(Pour info :

les droits sont bons sur les plugins, je peux exécuter avec l'utilisateur Nagios. J'ai mis le plugin et le fichier texte dans le même répertoire, à savoir : /usr/lib/nagios/plugins/

Poulpatine
08-31-2007, 02:56 PM
Je ne sais pas du tout si ça t'aidera mais tu as testé en mettant des chemins absolus dans ton code plutôt que des chemins relatifs ?

:)

seb974
08-31-2007, 03:02 PM
Ca fonctionne o_o

Merci beaucoup, mais pourquoi ça fonctionnait pas avec les chemins relatifs ? :p

Merci encore ! ^^

Poulpatine
08-31-2007, 03:53 PM
Eh bien dis toi que les plugins n'étaient pas forcément exécutés depuis le répertoire /usr/lib/nagios/plugins/ .

;)