lunes, 16 de agosto de 2010

Monitorizar Windows 7 con Nagios, Centreon y NSClient++

Una vez instalado Nagios y Centreon, como podemos ver en el siguiente enlace del blog
http://yoadminsis.blogspot.com/2010/08/centreon-219-y-nagios-321-en-ubuntu.html

podemos monitorizar los equipos con Microsoft Windows. En mi caso he monitorizado un Windows 7 Home Premium de 64 bits, pero es válido para Windows XP.

Configuración del cliente Windows

Lo primero que debemos hacer es configurar el cliente Microsoft Windows. Hay que descargar la aplicación NSClient++ de 64 bits desde el siguiente enlace.

http://downloads.sourceforge.net/project/nscplus/nscplus/NSClient%2B%2B%200.3.8/NSClient%2B%2B-0.3.8-x64.msi?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fnscplus%2F&ts=1281950994&mirror=puzzle

La versión es la 0.3.8 64 bits. Una vez descargado el fichero NSClient++-0.3.8-x64.msi, lo ejecutamos y vemos las siguientes pantallas:

Pantalla de bienvenida del asistente de instalación. Pulsamos Next.


Aceptamos la licencia GNUv2 y pulsamos Next.


Seleccionamos todo para instalar (por defecto). Pulsamos Next.


Creamos un fichero de configuración nuevo. Si ya teníamos instalado otra versión antigua de NSClient++ que usara archivos de configuración antiguos, debemos leer lo que nos pone aquí sobre los ficheros de configuración.


En esta ventana debemos poner la dirección IP del servidor Nagios donde vayamos a enviar los datos. La contraseña la dejamos en blanco. Si pusiéramos contraseña, deberíamos cambiar el comando check_nt del servidor nagios para que usara la contraseña que hemos puesto (añadir la opcion -s). Marcamos las opciones que se ven en pantalla. Pulsamos Next.


En las siguientes pantallas pulsamos Install para que se instale la aplicación y, después de la instalación de los ficheros, marcamos que se inicie el servicio y pulsamos Finish. Si queremos podemos donar algo al proyecto marcando la casilla correspondiente.




Por último comprobamos que el servicio está iniciado. Vamos a Inicio --> Click del Botón Derecho en Equipo --> Administrar --> Servicios y Aplicaciones --> Servicios. Vamos al servicio NSClient++ (x64)

En nuestro caso no estaba iniciado. Lo configuramos para que se inicie automáticamente y para que interactue con el escritorio. Después pulsamos Iniciar.



También podríamos iniciarlo desde linea de comandos pero no tenemos activa la cuenta Administrador de Windows 7 Home Premium. La Home Premiun no deja usar la mmc (consola gráfica) de usuarios a no ser que pagues más de lo que ya has pagado... y luego dicen que porque los administradores preferimos GNU\Linux...

Para activar la cuenta Administrador pulsamos Inicio-->Todos los programas --> Accesorios --> Click en Botón Derecho en Símbolo del sistema --> Ejecutar como Administrador. Nos abrirá la consola en "modo elevado" (algunos privilegios de administrador) y ahora ponemos los siguientes comandos (donde pone password ponemos la contraseña del usuario Administrador que queramos para el usuario)

Microsoft Windows [Versión 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.

C:\Windows\system32>net user Administrador /ACTIVE:yes
Se ha completado el comando correctamente.

C:\Windows\system32>net user Administrador password
Se ha completado el comando correctamente.

Una vez activado el usuario Administrador y la contraseña... (que fácil es Ms Windows :-)... ¿no? jeje)

Primero abrimos la consola como usuario Administrador usando runas, el equivalente a sudo en GNU\Linux, casaw7 es el nombre del equipo windows 7 home premium. En esta nueva consola iniciamos el servicio con net start o podemos pararlo con net stop . Por último, vemos el estado del servicio con sc query e información extendica con sc queryex . Con sc también podríamos arrancar y parar servicios, entre otras muchas cosas.



C:\Windows\system32>runas /user:casaw7\Administrador "cmd"
Escriba la contraseña para casaw7\Administrador:
Intentando iniciar cmd como usuario "casaw7\Administrador" ...

C:\Windows\system32>net start NSClientpp
El servicio de NSClient++ (x64) está iniciándose.
El servicio de NSClient++ (x64) se ha iniciado correctamente.

C:\Windows\system32> sc query NSClientpp

NOMBRE_SERVICIO: NSClientpp
        TIPO               : 110  WIN32_OWN_PROCESS  (interactive)
        ESTADO             : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        CÓD_SALIDA_WIN32   : 0  (0x0)
        CÓD_SALIDA_SERVICIO: 0  (0x0)
        PUNTO_COMPROB.     : 0x0
        INDICACIÓN_INICIO  : 0x0

C:\Windows\system32>sc qc NSClientpp
[SC] QueryServiceConfig CORRECTO

NOMBRE_SERVICIO: NSClientpp
        TIPO               : 110  WIN32_OWN_PROCESS (interactive)
        TIPO_INICIO        : 2   AUTO_START
        CONTROL_ERROR      : 1   NORMAL
        NOMBRE_RUTA_BINARIO: C:\Program Files\NSClient++\nsclient++.exe
        GRUPO_ORDEN_CARGA  :
        ETIQUETA           : 0
        NOMBRE_MOSTRAR     : NSClient++ (x64)
        DEPENDENCIAS       :
        NOMBRE_INICIO_SERVICIO: LocalSystem

Lo hemos hecho desde la cuenta de Administrador porque así nos aseguramos que tenemos todos los permisos. La cuenta de usuario con privilegios de Administrador que nos creamos al instalar Ms Windows, aunque nos permite iniciar y parar los servicios con NET START, NET STOP al ejecutar una consola en modo elevado, no tiene todos los permisos del usuario Administrador.

El archivo de configuración del servicio NSClient++ se encuentra en C:\Program Files\NSClient++\NSC.ini donde podremos editar algunos parámetros con un editor de textos si es necesario alguna vez.

Servidor Nagios/Centreon

Ahora ya podemos recoger datos desde Ms Windwos. Lo que debemos tener es el plugin check_nt instalado. En el artículo de instalación de Nagios y Centreon, check_nt se instala junto con los nagios-plugins, así que ya lo tenemos.

Simplemente debemos abrir Centreon, configurar un host llamado casaw7 y agregar los servicios que queramos monitorizar usando check_nt para ello.

Configuramos el host

Vamos a Configuración, Hosts y damos a Add. Rellenamos los campos como tenemos en las dos capturas de pantallas siguientes. Relacionamos el Host con el host-group Windows-Servers.





Configuramos el servicio

Configuramos el servicio que queramos monitorizar. Vamos a Configuración, Services y damos a Add.

El servicio lo vamos a relacionar con el grupo de hosts Windows-Servers, en la pestaña relations, en vez de con el host casaw7, así, todos los hosts que pertenezcan al host-group Windows-Servers tendrán este servicio asociado (además de todos los servicios adicionales del grupo de hosts Windows-Servers que ya tuvieramos)

En concreto, como ejemplo, crearemos el servicio que nos indica la versión del servicio NSClient++. Lo ponemos como viene en las capturas de pantalla.






Con esto tendremos el host y el servicio creado. Si queremos crear otro servicio, como monitorizar el espacio de C, o la carga de memoria o CPU, repetimos los pasos y cambiamos la variable del comando. En vez de CLIENTVERSION otra de la que disponga el comando check_nt.

Para que tenga efecto, y como vimos en la instalación de Nagios y Centreon, vamos a Configuración, Nagios, Generate y generamos los ficheros con la opción Move Export Files. Le damos Export y listo. A partir de ahora Nagios cogera la información de nuestro Windows y lo mostrará en Centreon.



Si vamos a la monitorización de servicios, vemos como el host casawin7 tiene el servicio NSClient++ 64bit Version OK y nos devuelve la versión, pero también vemos como el host casawin7 tiene también este servicio sin tocar este host. Esto es porque casawin7 pertenece, también al grupo de hosts Windows-Servers y el servicio se le ha añadido automáticamente.



Y listo :-)

9 comentarios:

  1. Buenos días. Lo primero agradecerle su trabajo. Como ya se habrá dado cuenta, estoy siguiendo sus tutoriales de Nagios y Centreon.

    Tengo un problema. Estoy intentando monitorizar un W.Server 2008. He instalado NSClient++ 64 bits sin problema. He seguido su manual pero no consigo hacer que funcione.

    Hace ping, pero los servicios a través de NSClient no funcionan...

    Exactamente, ¿qué hay que poner en la casilla "Args" al crear el servicio? No entiendo muy bien lo de "ClientVersion= get..."
    Yo he puesto: !CLIENTVERSION!-l

    Cuando intento crear un servicio de CPU, me da el siguiente error:

    NSClient - ERROR: Invalid password.

    Pero yo no he puesto ninguna password en la instalación de NSClient...

    Gracias
    Un saludo

    ResponderEliminar
  2. Hola,

    Lo primero es que quites el -l. Se me debe haber colado una imagen que no era. Ponlo así !CLIENTVERSION!

    Si te fijas en el comando, el primer argumento es una variable que se pone con -v. CLIENTVERSION es una variable que ponemos como primer argumento y que devuelve la versión del cliente. Con -l podrías hacer que si cambia la la versión en el host remoto, la compare con este parámetro y te avise con un warning.

    En cuanto a lo de la contraseña, prueba primero si funciona correctamente quitando el -l, y si no, yo lo que hice fue desinstalar e instalar de nuevo NSClient y borrar el servicio y volverlo a crear. A mi me pasó y tampoco había puesto contraseña.

    Saludos

    ResponderEliminar
  3. Buenos días!

    Solucionado el tema de CLIENTVERSION, pero me estoy volviendo loco a la hora de dar de alta nuevos servicios, no me aclaro con los párametros...
    He conseguido monitorizar el uso de CPU.

    He visto que has monitorizado:
    espacio en disco, memoria, procesos, cpu.

    ¿Me podrías indicar que parámetros has utilizado en cada uno?

    Gracias,
    Juan Miguel (becario en apuros)

    ResponderEliminar
  4. Os ponen a trabajar sin formaros, la historia de España... en fin.

    Te recomiendo que eches un vistazo a la web de Nagios, la web de Centreon y al último artículo que he puesto. Los manuales de servicios están ahí.

    En tu empresa, si quieren implementar Nagios y Centreon pueden contratar servicio técnico a esas empresas, que de algo tienen que vivir. Dan el software libre gratis pero viven del servicio técnico y el mantenimiento.

    Saludos

    ResponderEliminar
  5. Bueno, he supuesto que eres de España, a lo mejor no :-D.

    ResponderEliminar
  6. Ya está corregida la imagen quitando el -l de CLIENTVERSION.

    ResponderEliminar
  7. Hola Francisco, antes de nada darte las gracias por el tutorial. Ahora te consulto mi dudo, espero puedas ayudarme ;)

    Tras seguir todos los pasos, configurar el equipo y el servicio, exportar los archivos a nagios (sin ningun error ni Warning ) y demás, no me aparece ningún host ni servicio en la pestaña configuración, he buscado y buscado y no se que puede ser. Será una tonteria, pero no la veo :(

    Un saludo y gracias de antemano

    ResponderEliminar
  8. Hola, buenas noches: Tengo instalado Nagios en mi servidor de linux para monitorear varios servicios pero necesito monitorear servicios de equipos windows. He creado unos plugins en pearl y java y necesito ponerlos en los equipos windows para monitorearlos a traves del nsclient de windows como hago para ingresar estos nuevos plugins en estos equipos y monitorear dichos servicios? Gracias

    ResponderEliminar
  9. Hola
    Como puedo hacer en caso de que se caíga el servicio web en windows el nagios lo reinicie? Gracias

    ResponderEliminar

Related Posts with Thumbnails