Difference between revisions of "Pandora: QuickGuides ES: Monitorizacion de grandes volumenes de sistemas"

From Pandora FMS Wiki
Jump to: navigation, search
(Paso 1. Definir los perfiles de monitorización)
(Paso 1. Definir los perfiles de monitorización)
Line 68: Line 68:
 
<br>
 
<br>
 
<center>
 
<center>
[[image:quick_mon_5.png]]
+
[[image:quick_mon_5.png|800px]]
 
</center>
 
</center>
 
<br>
 
<br>

Revision as of 09:59, 4 November 2015

Volver a Índice de Guías Rápidas de Pandora FMS

1 Introducción

Esta guía pretende mostrar al usuario como adminitrar de forma rápida y eficiente un número elevado de máquinas (5, 10..500) utilizando las diferentes características de Pandora FMS diseñadas para este propósito. Dividiremos el documento en cuatro partes:

  • Monitorización de dispositivos de red, usando Recon Server y plantillas
  • Monitorización de dispositivos de red SNMP, usando Recon Script SNMP.
  • Monitorización de agentes, usando políticas (Sólo enterprise).
  • Monitorización remota con scripts personalizados, usando un generador de agentes via XML.

2 Monitorización de dispositivos de red, usando Recon Server y plantillas

Situación

Tenemos que monitorizar doscientos servidores, veinte switches y diez routers, y no podemos ir uno por uno configurándolos. La monitorización "general" es muy sencilla, pero no tenemos mucho tiempo ni posibilidad de instalar agentes en las máquinas.

Solucion

Pandora FMS detectará los sistemas y les aplicará diferentes plantillas en función de si es un switch, un router o un servidor. Las plantillas llevarán chequeos remotos que se puedan aplicar nada más detectar el tipo de máquina. Que es.

¿ Cuando tardaré ?

Una red de clase C (255 hosts) se escanea en menos de un minuto con la version 4.0. Aplicar a las maquinas detectadas un patrón de monitorización es casi inmediato, con lo que puede tener esas 230 maquinas en menos de diez minutos, completamente configuradas.


2.1 Paso 1. Definir los perfiles de monitorización

Primero vamos a definir una plantilla de monitorización que en Pandora FMS se llama "Module template". Para ello vamos al siguiente menú:


Quick mon 1.png


Aqui veremos unas perfiles ya definidos, que contienen algunos chequeos genéricos. Vamos a editar uno de ellos (Linux Server) que hace referencia a un perfil útil para monitorizar servidores Linux genéricos de forma remota.


Quick mon 2.png



Quick mon 3.png


Como se puede ver en la captura de arriba, este perfil tiene bastantes modulos, entre ellos algunos chequeos TCP básicos, como por ejemplo "Check SSH Server", un chequeo ICMP básico: "Host Alive" y diversos módulos SNMP que hacen uso de la MIB de Linux, que son el resto de chequeos.

Estos chequeos "de plantilla" están definidos en la biblioteca de módulos básica de Pandora FMS, que viene con la instalación sencilla.

Los módulos básicos se llaman "Componentes de red" o network components en ingles. Son definiciones genericas de modulos.

El valor IP no existe en este modulo, porque se autoasignará de la IP del agente cuando se aplique este módulo. El resto de campos son "por defecto", p.e: umbrales, comunidad snmp, y se aplicarán a todos los agentes que tengan una plantilla con este módulo. Si queremos personalizarla (p.e: cambiar la comunidad) habra que cambiarla en los agentes uno por uno o de forma general con la herramienta de cambios masivos.

Bien. Ahora que ya sabemos lo que es una plantilla de monitorización y un modulo generico para plantilla, o componente de red, podemos ver algunas de las otras plantillas, concretamente la de monitorizacion generica WMI y la de monitorizacion basica.

La primera, contiene tres modulos WMI para windows. Estos modulos habra que personalizarlos, editando el componente original o los modulos generados, ya que requieren usuario y password con permisos para hacer consultas remotas WMI.

La segunda, solo contiene un chequeo basico de conectividad ICMP. Podemos agregar otros chequeos básicos, como verificaciones de servicios HTTP, FTP, SMTP... tal como podemos ver en la captura siguiente:


Quick mon 5.png


2.2 Paso 2. Utilizar una tarea de red con Recon Server

Ahora que tenemos tres perfiles basicos de monitorización: Linux, Windows y red.

Supongamos que tenemos que monitorizar todos los equipos en un conjunto de redes, por ejemplo:

  • 192.168.50.0/24 para servidores.
  • 192.168.50.0/24,192.168.1.0/24 para comunicaciones.

Y queremos que identifique todas las máquinas de esas redes y en funcion de su SO le aplique una plantilla u otra. Otra forma de hacerlo, la que los switches pueden ser de varias marcas y modelos, es "identificarlos" por medio de un patrón basado en tener o no un puerto abierto. P.e: que aquellas maquinas con el puerto 23 (telnet) abierto las identifique como maquinas genéricas (switches, routers).

Vamos a la seccion de recon servers para crear uno nuevo:


Quick mon 6.png


Vamos a crear uno para buscar y dar de alta servidores Windows, aplicándole el patron de monitorización de máquinas Windows:


Quick mon 7.png


Aqui se puede ver como en el campo "OS" (tipo de sistema operativo), hemos elegido Windows. Es decir, solo aplicará este perfil de monitorizacion a aquellas máquinas que encuentre que sean de tipo Windows, sino, las ignorará. Dado que la forma de detectar automáticamente el tipo de SO no es 100% fiable, se podría escoger otro método, como especificar un puerto concreto.

De esa forma, todas las máquinas con ese puerto abierto, entrarían en la aplicación de la plantilla. Ese ejemplo lo vemos aqui, donde hemos creado otra tarea, pero usando un filtrado por puerto en vez de por SO, para aplicarle la plantilla de monitorización de dispositivos de red genéricos:


Quick mon 8.png



Es importante fijarse tambien en como para especificar dos redes, las pongo juntas separadas con un espacio: 192.168.50.0/24,192.168.1.0/24

Por último configuraría el de Linux de forma simiular. Al terminar de definir los tres grupos quedaría de la siguiente manera:


Quick mon 9.png


Una vez definidos las tareas de reconocimiento estas pueden empezar solas, pero vamos a ver su estado y a forzarlas si fuera necesario. Para eso, haremos click en el icono del ojo, para ir a la vista de operación del servidor Recon.


Quick mon 10.png


Por defecto el servidor recon tiene un hilo con lo que podrá ejecutar solo una tarea a la vez. El resto esperará a que termine la tarea de exploración activa. Podemos forzar las tareas de exploración pulsando el icono verde redondo a la izquierda de la tarea.

Esto hará que el servidor Recon busque máquinas nuevas que no existan en la monitorización activa. Si las encuentra, las dará de alta automáticamente (intentando resolver el nombre, si hemos activado esa opción) y asignándole todos los módulos que estaban contenidos en el perfil.

Debemos ser conscientes de que muchos de los módulos asignados en un perfil pueden no tener sentido o no estar correctamente configurados para un agente en concreto. En este agente, hemos detectado un sistema Linux correctamente, pero ese servidor no tiene SNMP, luego todos los modulos SNMP no están reportando. Dado que ni siquiera la primera vez pudieron obtener datos, estan en un modo conocido como "estado Non-init" (no inicializado). La próxima vez que pase el script de mantenimiento de la BBDD, se eliminarán automáticamente:

3 Monitorización de dispositivos de red SNMP, usando Recon Script SNMP

Es relativamente similar al caso anterior. En este escenario, nos planteamos la necesidad de monitorizar de forma "automática" a fondo un dispositivo SNMP con muchas interfaces, necesitando obtener el estado de cada interfaz, el tráfico en cada boca, la tasa de errores, etc.

Para ello, usaremos un sistema conocido como Recon Script. Es un sistema modular que permite ejecutar acciones complejas en un script. Pandora FMS dispone de un script ya creado para detectar este tipo de dispositivos SNMP.

Para ello, creamos una tarea de red, con la siguiente forma:


Quick mon 12.png


En el "primer campo", ponemos la red o redes de destino. En el "segundo campo", ponemos la comunidad SNMP que vamos a emplear a la hora de explorar estos dispositivos. En el "tercer campo", ponemos algunos parámetros opciones. En este caso -n es para que dé de alta también las interfaces caídas, ya que por defecto solo da de alta las interfaces activas.

Este script dará de alta las interfaces que antes no estaban y ahora estan activas en cada máquina, en cada ejecución. De forma que si se levantan nuevas interfaces, lo detectará. Podemos dejar las tareas de red para que se ejecuten una vez al día, o una vez a la hora.

Este es el aspecto que tiene la tarea de tipo Task Recon Script una vez creada:


Quick mon 14.png


Y este es el aspecto que tiene la tarea de tipo Task Recon Script en ejecución:


Quick mon 13.png


4 Monitorización de agentes a través de plantillas de monitorización y operaciones masivas

Pendiente de escribir

5 Monitorización de agentes mediante políticas

Pendiente de escribir

6 Monitorización de agentes usando scripts personalizados

Esto es una forma avanzada de monitorizar grandes volúmenes de sistemas, parecidos entre sí, de una forma completamente "ad-hoc". Para ello tiene que disponer de herramientas que ya existen que le dan información de sus sistemas, algunos ejemplos pueden ser:

  • Scripts que ya tenía que reportan información de sistemas remotos.
  • Otros sistemas de monitorización ya funcionando que generan datos que se pueden reutilizar.
  • Pequeños chequeos que son igual para un conjunto de XXX maquinas pero que no devuelven un unico dato sino varios simultáneamente. Si devolvieran datos de uno en uno, podría reutilizarlos como plugins para el servidor remoto.

La filosofía es simple: utiliza un script para generar las cabeceras de los XML de los agentes, poniendo el nombre de agente que quiera, y rellenando los datos de los modulos por un script, externo, que ejecutará como argumento. Este script externo debe generar datos correctos con el formato XML de Pandora (extremadamente sencillo!). El script principal cerrará el XML y lo moverá al path standard para procesar los ficheros de datos XML (/var/spool/pandora/data_in). Programe el script mediante CRON. Tiene más información sobre el formato XML que utiliza Pandora FMS para reportar los datos, consulte nuestros apéndices técnicos.

Script de agente remoto

Tiene un pequeño script en /usr/share/pandora_server/util/pandora_remote_agent.sh que admite dos parámetros

-a <nombre de agente>
-f <fichero script que ejecutará>

De esta forma si tiene un script tal que /tmp/sample_remote.sh que contiene lo siguiente:

#!/bin/bash

PING=`ping 192.168.50.1 -c 1 | grep " 0% packet loss" | wc -l`

echo "<module>"
echo "<name>Status</name>"
echo "<type>generic_proc</type>"
echo "<data>$PING</data>"
echo "</module>"

ALIVE=`snmpget -Ot -v 1 -c artica06 192.168.70.100 DISMAN-EVENT-MIB::sysUpTimeInstance | awk '{ print $3>=8640000 }'`

echo "<module>"
echo "<name>Alive_More_than_24Hr</name>"
echo "<type>generic_proc</type>"
echo "<data>$ALIVE</data>"
echo "</module>"

# Another script with returns XML
EXT_FILE=/tmp/myscript.sh

if [ -e "$EXT_FILE" ]
then
	$EXT_FILE
fi

Podrá generar un XML completo con el nombre de agente "agent_test" ejecutando el script de agente remoto de la siguiente manera:

/usr/share/pandora_server/util/pandora_remote_agent.sh -a agent_test -f /tmp/sample_remote.sh

Supongamos que quiere ejecutar un mismo script contra XX maquinas, tendría que pasarle algunos datos, como usuario, IP, password al mismo script:

/usr/share/pandora_server/util/pandora_remote_agent.sh -a agent_test -f "/tmp/sample_remote.sh 192.168.50.1"

Tendria que parametrizar el script /tmp/sample_remote.sh para coger los parámetros de linea de comandos y usarlos debidamente.

Programar el script mediante cron

Imagine que tiene 10 maquinas monitorizadas de esta manera:


/usr/share/pandora_server/util/pandora_remote_agent.sh -a agent_test1 -f "/tmp/sample_remote.sh 192.168.50.1"
/usr/share/pandora_server/util/pandora_remote_agent.sh -a agent_test2 -f "/tmp/sample_remote.sh 192.168.50.2"
/usr/share/pandora_server/util/pandora_remote_agent.sh -a agent_test3 -f "/tmp/sample_remote.sh 192.168.50.3"
/usr/share/pandora_server/util/pandora_remote_agent.sh -a agent_test4 -f "/tmp/sample_remote.sh 192.168.50.4"
/usr/share/pandora_server/util/pandora_remote_agent.sh -a agent_test5 -f "/tmp/sample_remote.sh 192.168.50.5"
/usr/share/pandora_server/util/pandora_remote_agent.sh -a agent_test6 -f "/tmp/sample_remote.sh 192.168.50.6"
/usr/share/pandora_server/util/pandora_remote_agent.sh -a agent_test7 -f "/tmp/sample_remote.sh 192.168.50.7"
/usr/share/pandora_server/util/pandora_remote_agent.sh -a agent_test8 -f "/tmp/sample_remote.sh 192.168.50.8"
/usr/share/pandora_server/util/pandora_remote_agent.sh -a agent_test9 -f "/tmp/sample_remote.sh 192.168.50.9"
/usr/share/pandora_server/util/pandora_remote_agent.sh -a agent_test10 -f "/tmp/sample_remote.sh 192.168.50.10"


Meta todas estas líneas en un nuevo script, p.e: "/tmp/my_remote_mon.sh" y dele permisos de ejecución, y añada la siguiente linea al crontab de root:

-*/5 * * * *   root /tmp/my_remote_mon.sh

Esto hará que ese script se ejecute en el sistema cada 5 minutos. Puede ir añadiendo máquinas al script.

Volver a Índice de Guías Rápidas de Pandora FMS