Foros del Web » Administración de Sistemas » Seguridad y redes »

Monitorización NSClient++

Estas en el tema de Monitorización NSClient++ en el foro de Seguridad y redes en Foros del Web. Hola: Tengo un Servidor Nagios sobre redhat y quiero monitorizar servidores Windows. He logrado monitorizar la CPU, la Memoria, procesos , con los chequeos por ...
  #1 (permalink)  
Antiguo 20/06/2011, 05:47
 
Fecha de Ingreso: junio-2008
Mensajes: 160
Antigüedad: 16 años, 5 meses
Puntos: 2
Monitorización NSClient++

Hola:

Tengo un Servidor Nagios sobre redhat y quiero monitorizar servidores Windows.
He logrado monitorizar la CPU, la Memoria, procesos , con los chequeos por defecto que vienen con NSclient++.

Ahora, lo que necesito monitorizar es que las máquinas windows (las ya monitorizadas) tengan conectividad con una BD y unos servicios web, es decir que desde la máquina windows haga un telnet <ip_bd> <puerto_bd> y hacer un wget <URL_servicio_web>.

Según he leído esto se hace a través de [External scripts] así que me puse manos a la obra.

Realice un script "telnet.bat" con el siguiente código:

@C:\Users\Administrator\telnet.exe 172.XX.XXX.XXX 1523

, esté script lo copie en la carpeta scripts de nsclient++:

C:\Program Files\NSClient++\scripts

Configuré el archivo "NSC.ini" :

command_timeout=120
script_dir=.\scripts\*.bat
allow_nasty_meta_chars=1
allow_arguments=1

Desde mi servidor Nagios ejecuto esta orden :

/usr/local/nagios/libexec/check_nrpe -H <ip_servidor_windows> -p 5666 -c check_telnet_1

y me devuelve :

No output available from command (scripts\telnet.bat ).
Cuando ejecuto la orden estoy a la vez mirando el Administrador de tareas de la máquina windows a ver si veo como se lanza el telnet..pero no lo veo....

¿Alguna ayuda?

Gracias
  #2 (permalink)  
Antiguo 21/06/2011, 03:18
 
Fecha de Ingreso: febrero-2011
Mensajes: 581
Antigüedad: 13 años, 9 meses
Puntos: 81
Respuesta: Monitorización NSClient++

Umm... No veo nada raro... Si ya tenias comunicación con los clientes a monitorizar, el problema no viene de ahí.

¿Has verificado los permisos de ejecución del telnet? ¿El usuario como el que se ejecuta el NSClient tiene permisos para hacerlo? ¿Y para acceder al path c:\users\administrador?... Salvo que estés trabajando con el usuario "administrador", este podría ser tu problema...

Guarda el telnet.exe en un path accesible a otros usuarios y dale permisos a esa carpeta y archivo para que puede ser accedido y ejecutado por el usuario bajo el que se ejecuta el NSClient...

A ver si así.
  #3 (permalink)  
Antiguo 21/06/2011, 03:37
 
Fecha de Ingreso: junio-2008
Mensajes: 160
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Monitorización NSClient++

Hola:

Creo que el problema estaba en que el comando telnet no devuelve nada por eso decía
"No output available from command (scripts\telnet.bat ).".

He añadido esto a mi script telnet.bat:

@echo OK: Everything is going to be fine
@exit 0

,quedando así el script:

@C:\Users\Administrator\telnet.exe 172.XX.XXX.XXX 1523
@echo OK: Everything is going to be fine
@exit 0

Ahora ejecuto desde mi servidor nagios la orden :

/usr/local/nagios/libexec/check_nrpe -H <ip_servidor_windows> -p 5666 -c check_telnet

y devuelve :

[root@XXXXX libexec]# ./check_nrpe -H XXX.XX.XX.XX -c check_telnet
OK: Everything is going to be fine


Pero claro!:

* Ahora siempre me devuelve "OK: Everything is going to be fine" ponga la ip que le ponga al telnet......

* Además sigo mirando el administrador de tareas de windows a la vez que lanzo desde mi servidor nagios el comando check_nrpe y no veo que en la máquina windows se inicie ningún proceso telnet...


Ummm...,creo que hay dos problemas:

* El telnet no devuelve nada y por tanto el nrpe se queda esperando..
* El telnet no se lanza cuando ejecuto el check_nrpe -c check_telnet desde mi servidor nagios....


¿Alguien me puede iluminar...?


Gracias!

Un Saludo
  #4 (permalink)  
Antiguo 21/06/2011, 05:05
 
Fecha de Ingreso: febrero-2011
Mensajes: 581
Antigüedad: 13 años, 9 meses
Puntos: 81
Respuesta: Monitorización NSClient++

a) El telnet en windows no es igual que en linux... Para usarlo en un batch no es demasiado operativo... Unido a que el cmd no es un bash, resulta un problema usarlo. Además, NO quieres hacer nada mas que verificar si el puerto está a la escucha y te puedes conectar a él, ¿no?

Prueba a utilizar otro programa para testear si un puerto esta abierto... Dado que es tcp tu conexión, puedes probar tcping:

http://www.elifulkerson.com/projects/tcping.php

(no lo he probado en windows 7 64bits... Pruebalo tu si lo necesitas. En windos 7 32 bits y en XP funciona).

Para no tener que parsear la salida de tcping en un bat, puedes crear un script sencillo (un .bat):


@echo off
tcping -n 1 172.XX.XXX.XXX 1523 > NUL

IF %ERRORLEVEL% == 0 (echo 0) else (echo 1)

@echo on

Ese "bat" da como salida 0 si el puerto 1523 de la IP 172.XX.XXX.XXX esta abierto (hay conexión)... Y 1 si está cerrado (o pon tú la salida que quieras en los echo del final).

b) Dos cosas: Tu comando a ejecutar se llama "telnet.bat"... No check_telnet (creo). La sintaxis es:
check_nrpe -H <nsclient++ server ip> -c <command>

Y, de nuevo, chequea los permisos por si acaso... Asegurate de que tienes permisos para ejecutar (via socket que has abierto con un usuario determinado) el comando adecuado.

Resumiendo:
Prueba a usar un bat como el de arriba con tcping para obtener una salida válida en función de que el puerto remoto esté o no abierto.

Asegúrate de que usas la sintaxis correcta y llamas al comando con el nombre que le pusistes... Y de que ese comando puede ser ejecutado por el usuario que abrió el NSClient++
  #5 (permalink)  
Antiguo 21/06/2011, 05:33
 
Fecha de Ingreso: junio-2008
Mensajes: 160
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Monitorización NSClient++

Gracias!

Voy a profundizar sobre el tema.

Un Saludo
  #6 (permalink)  
Antiguo 22/06/2011, 01:52
 
Fecha de Ingreso: junio-2008
Mensajes: 160
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Monitorización NSClient++

Funciono!

Una última cosa:

Como he puesto al inicio del post necesitaba también comprobar desde la máquina windows la disponibilidad de algunas URL.

Con wget lo he conseguido, pero tengo una URL que me pide User y passwor.

Ojo! porque no digo que la URL tenga dos cajas para meter el usuario y password sino que cuando entro en la URL me sale el típico prompt de user y password, es decir que es un wget +POST.

¿Como puedo hacer esto?

Gracias!
  #7 (permalink)  
Antiguo 22/06/2011, 03:13
 
Fecha de Ingreso: febrero-2011
Mensajes: 581
Antigüedad: 13 años, 9 meses
Puntos: 81
Respuesta: Monitorización NSClient++

Me alegro de que te funcionase :)

Si quieres logearte usando post (con parametros de la pagina) tendras que usar la funcionalidad --post-data de wget... Si no necesitas una cookei previa, bastaría con eso (y usando "--save-cookies" si quieres mantener la cookie devuelta).

El problema es que necesites una cookie previa (como ocurre por ejemplo en drupal)... Entonces tendrás que salvar dicha cookie ANTES de enviar usuario y password, para enviar tambien la cookie de sesion... Hace tiempo use un script modificado que saqué de algun sitio web para logear en drupal... No sé si te dará alguna pista (supongo que sí, dado que es bastante sencillito)... El problema es que está escrito en bash... Si lo quieres en un .bat tendrás que currártelo un pelo (no demasiado, la verdad... simplemente asignar las variables con otra sintaxis y referenciarlas con %var% en lugar de $var.):

#!/bin/sh

site=http://La_Direccion_web/
name=TuUsuario
pass=TuPassword
cookies=/tmp/cron-cookies.txt

wget -O /dev/null --save-cookies /tmp/ba-cookies.txt --keep-session-cookies --load-cookies $cookies "${site}user"

wget --keep-session-cookies --save-cookies $cookies --load-cookies $cookies -O /dev/null --post-data="name=$name&pass=$pass&op=Log%20in&form_id=us er_login" "${site}user?destination=login_redirect"

## Este ultimo wget quizas no lo necesites
wget --keep-session-cookies --save-cookies $cookies --load-cookies $cookies "${site}login_redirect"

login_redirect es la pagina a la que te redirige una vez has hecho login... en tu caso tendras que poner la que sea (tras el valor de "site").


En cualquier caso, fijo que tienes decenas de ejemplos en php, perl o python que te permitiran hacer eso sin necesidad de usar wget... Pero ya que estás usándolo... Prueba :)
  #8 (permalink)  
Antiguo 22/06/2011, 14:48
 
Fecha de Ingreso: junio-2008
Mensajes: 160
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Monitorización NSClient++

Hola:


MI URL es :

http://xxx.xxxxx.es/XXX

cuando pongo eso en el navegador me sale un prompt pidiendome user y pass y si introduzco correctamente las credenciales me muestra la url http://xxx.xxxxx.es/XXX no me redirige a ningun nuevo sitio.

Una vez ya dentro puedo hacer más operaciones.

Lo que me indicas es orientado a php, por lo que tendré que modificarlo...mmm a ver como lo hago..

De todas formas, Gracias!

Me has iluminado...

Un Saludo
  #9 (permalink)  
Antiguo 23/06/2011, 02:31
 
Fecha de Ingreso: febrero-2011
Mensajes: 581
Antigüedad: 13 años, 9 meses
Puntos: 81
Respuesta: Monitorización NSClient++

Umm... espera...

¿Me dices que accediendo a la página te saca una ventana el navegador? ¿No es una página de login?

Vaya... Entendí justo lo contrario...

Si es así es bastante más fácil. Si se trata de autenticación HTTP (como la de apache, por ejemplo), puedes olvidarte de cookies y demás...

Tienes dos formas:

a) usando los parametros adecuados al protocolo en cuestion... (Sacado directamente del man del wget)

" --user=user
--password=password
Specify the username user and password password for both FTP and
HTTP file retrieval. These parameters can be overridden using the
--ftp-user and --ftp-password options for FTP connections and the
--http-user and --http-password options for HTTP connections."

En tu caso serían --http-user='usuario' y --http-password='password'

b) Ponerlos directamente en la linea con la URL:

http://usuario:[email protected]_url_que_sea/la_pagina

Cualquiera de las dos maneras debería valerte si se trata de autenticación básica HTTP. Que no tiene nada que ver con usar el método POST para publicar parámetros en un formulario...

El post anterior era, precisamente, una forma de acceso más sofisticada a una página de login... Dado que pedías EXPRESAMENTE acceder mediante POST con wget (supuse, obviamente, qu enecesitabas enviar parámetros a una página mediante método POST para autenticarte... Eso suele implicar gestión de cookies).

Etiquetas: monitorización
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:16.