Pandora FMS community forums

Full Version: Monitorizar servidor linux sin agente Pandora
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hola,

Se me presenta una situación para la que he optado por preguntar, ya que no he encontrado nada sobre ello, o no conozco la forma adecuada de buscarlo.
Me van a instalar un servidor que hace las labores de conversor de medios que pilla televisión IP y lo despliega al cableado de TV de la empresa. Este servidor no es un servidor al uso, en realidad es un hardware gestionado con una distribución de linux solo lectura precompilado (de ahí que no pueda instalar el agente de Pandora).
De lo que sí dispongo es de reportes de estado de ciertas áreas a través de json con un formato:

,"net": {

"eth0:":{"inStart":"43756180414","outStart":"1150530073","inStop":"43757903574","outStop":"1150578519","timeout":"1"},
"lo:":{"inStart":"41976404787","outStart":"41976404787","inStop":"41977472371","outStop":"41977472371","timeout":"1"},
"tun0:":{"inStart":"128851","outStart":"1565155","inStop":"128851","outStop":"1565155","timeout":"1"}}



Como tengo monitorizado todo lo monitorizable a traves de Pandora, quisiera también agregar alertas de este equipo.
¿Sabéis si existe alguna forma de que Pandora interprete este json y poder configurar alertas en función de la información que contiene?

Muchas gracias de antemano.
Hola eugeniolpa.

Yo los servidores Linux los monitorizo sin el agente software através del comando "expect" mediante un script, hay que instalarlo en el servidor pandora, te pongo un ejemplo:

[email protected][/etc/pandora/plugins]# more conexion_expect_linux.sh
#!/usr/bin/expect
set ip [lindex $argv 0]
set usuario [lindex $argv 1]
set contrasena [lindex $argv 2]

set timeout 2
spawn ssh -o StrictHostKeyChecking=no $[email protected]$ip
expect "*?assword:*"
send "$contrasena\r"
expect "*->"
send "uname -srvn\r"
expect "*->"
send "df -h\r"
expect "*->"
send "top -d 1 -n 1 | grep -B 6 'PID USER'\r"
expect "*->"
send "exit\r"
expect eof


Este script es llamado por otro script en perl, este perl lo que hace es grabar la salida del "expect" en un fichero txt.
Este fichero txt es leído por los diferentes módulos que quieras poner en tu agente.
Debes crear un script en perl por cada módulo que quieres monitorizar. Pero solo uno crea el fichero txt, los demás solo lee ese fichero, con lo cual solo te hace falta como parámetro para leer el fichero la IP.
Para cada uno de estos scripts debes crear un "plugins registrado", en el cual configuras las variables que necesitas, como, IP, usuario y contraseña del servidor linux.
Cuando crees el módulo tienes que elegir la opción "Crear un modulo nuevo de servidor de complementos" y en el campo "Complemento" pones el plugin creado anteriormente y se desplegará los parámetros que debes introducir, como IP, usuario y contraseña.

Te pongo un ejemplo del script en Perl que crea el txt y otro que solo lo lee.

Este graba fichero txt y muestra información del sistema operativo Linux.
[email protected][/etc/pandora/plugins]# more conexion_linux_info.pl
#!/bin/env perl
$HOST=""; $USER=""; $PASS=""; @VAR="";
$INFO1="";
$elemento=""; $x=0;

$HOST=$ARGV[0];
$USER=$ARGV[1];
$PASS=$ARGV[2];
$file="/etc/pandora/plugins/logs/$HOST.txt";;
@VAR=`/etc/pandora/plugins/conexion_expect_linux.sh $HOST $USER $PASS > $file`;

open FILEIN,"<",$file;
@ficheroin=<FILEIN>;
close FILEIN;

$x=0;
foreach $elemento(@ficheroin)
{
        $num1=index($ficheroin[$x], "uname -srvn");
        if ($num1 >= 0)
        {
                $INFO1="$ficheroin[$x+1]";
                last;
        }
        $x++;
}
print "$INFO1";
exit;


Este lee el txt y muestra uso de CPU:
[email protected][/etc/pandora/plugins]# more conexion_linux_cpu.pl
#!/bin/env perl
$HOST="";

$HOST=$ARGV[0];

$estado=`ps -ef | grep "conexion_linux_info.pl $HOST" | grep -v grep`;
if ($estado ne "") {exit;}

$file="/etc/pandora/plugins/logs/$HOST.txt";

$comando="grep 'id,' $file | awk ' { print \$5 }'";
$comando=`$comando`;
$n=sprintf("%.2f",substr($comando,0,5));
$n=sprintf("%.2f",100-$n);
print "$n";
exit;


Bueno espero haberme explicado, también sirve para otros usuarios que os sirva.

Saludos.