Configurando Nagios 3.x (y I)

icono de herramientas Bien, ¿continuamos donde lo dejamos? Tenemos nuestro nagios recien instalado y ahora toca configurarlo, plasmar la topología de nuestra red y monitorizar algunos servicios básicos.

El primer archivo que tenemos que tocar es /usr/local/nagios/etc/nagios.cfg. En el, entre otras cosas, se dicen los archivos de configuración que nagios tendrá en cuenta. En el apartado correspondiente a los objetos, que es lo único que vamos a tocar, localizamos la entrada correspondiente al fichero activo como ejemplo (linux.cfg). Comentamos la línea correspondiente a este fichero e introducimos una nueva con el archivo cfg que usaremos y que se llamará, por ejemplo, mired.cfg. Editamos el archivo nagios.cfg e introducimos los siguientes cambios (en negritas):

# Definitions for monitoring the local (Linux) host
# cfg_file=/usr/local/nagios/etc/objects/linux.cfg

# Definición de nuestra pequeña red local de ejemplo
cfg_file=/usr/local/nagios/etc/objects/mired.cfg

La red que vamos a definir como ejemplo constará de dos servidores windows, dos linux (uno de ellos el propio que alberga a Nagios), un router que nos da salida a Internet y un switch al que están conectados todos ellos. Vamos a crear el archivo mired.cfg en el directorio especificado y en el incluiremos la definición de estos objetos:

define host{
      use linux-server
      host_name nagios
      alias Nagios Server
      address 127.0.0.1
      }

define host{
      use generic-switch
      host_name switch#1
      alias Switch
      address 192.168.0.2
      parents nagios
      }

define host{
      use generic-switch
      host_name router#1
      alias Router ADSL
      address 192.168.0.1
      parents switch#1
      }

define host{
      use linux-server
      host_name intranet
      alias Servidor Linux
      address 192.168.0.3
      parents switch#1
      }

define host{
      use windows-server
      host_name windows#1
      alias Servidor principal del dominio
      address 192.168.0.4
      parents switch#1
      }

define host{
      use windows-server
      host_name windows#2
      alias Servidor secundario del dominio
      address 192.168.0.5
      parents switch#1
      }

Como podeis ver las definiciones son bien sencillas. Esta simpleza deriva de que Nagios usa una estructura jerárquica en la que cada objeto hereda las características definidas previamente en las plantillas que está usando. La declaración de estas plantillas se hace en el archivo templates.cfg. Allí podemos ver, por ejemplo, el contenido del objeto linux-server que, a su vez, se deriva de otro denominado generic-host. Por el momento os digo esto sólo por culturilla porque no nos va a hacer falta. Nos basta con saber que tenemos disponibles las siguientes plantillas para empezar a trabajar con ellas:

  • linux-server
  • windows-server
  • generic-printer
  • generic-switch

Otra cosa interesante es la clausula parents mediante la que especificamos las conexiones entre los diferentes hosts. Como veis la única máquina a la que no le hemos asignado un padre es a la que tiene Nagios instalado. Pensad que esa máquina será el corazón de nuestra red de monitorización porque es desde ella desde donde se ejecutaran todos los comandos.

Aunque aquí no aparece ninguna, una máquina puede tener más de un host como padre (imaginaos una estructura de switches con conexiones redundantes entre ellos). Para ello basta con especificar los nombres de todos los padres que consideremos necesarios separados por comas.

A continuación y en el mismo fichero añadiremos las definiciones necesarias para crear grupos y organizar nuestros objetos y para monitorizar un primer servicio común a todos ellos: el PING

define hostgroup{
      hostgroup_name linux-servers
      alias Servidores Linux
      members nagios, intranet
      }

define hostgroup{
      hostgroup_name windows-servers
      alias Servidores Windows
      members windows#1, windows#2
      }

define hostgroup{
      hostgroup_name switches
      alias Electrónica de red
      members switch#1, router#1
      }

define service{
      use generic-service
      host_name nagios, intranet, switch#1, router#1, windows#1, windows#2
      service_description PING
      check_command check_ping!200.0,20%!600.0,60%
      normal_check_interval 5
      retry_check_interval 1
      }

La definición de los grupos es autoexplicativa ¿verdad? Luego nos serviran para organizar las vistas adecuadamente. Y desde luego que esta clasificación no es obligatoria. Podeis crear grupos en función del entorno donde estén las máquinas (desarrollo, preproducción, producción), la localización geográfica, el color de la carcasa… a vuestro rollo, vamos.

Para los servicios quizás sea necesario contar algunas cosas más. Como podemos ver el servicio que hemos definido también deriva de un objeto denomimado generic-service y que también se encuentra en el archivo templates.cfg. Podemos echarle allí un vistazo a esa definición pero por el momento no conviene que os despisteis y lo más interesante es la linea etiquetada como check_command que es donde realmente invocamos al comando que se va a encargar de monitorizar el servicio con una curiosa estructura de argumentos separados mediante signos de exclamación. Para comprender lo que estamos haciendo realmente tenemos que echar mano del fichero commands.cfg. Alli buscamos la definición del comando check_ping:

# ‘check_ping’ command definition
define command{
      command_name check_ping
      command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
      }

$USER1$ es una variable que apunta al directorio donde se encuentran los plugins (/usr/lib/nagios/plugins/) y $HOSTADDRESS$ es la IP del host que estamos monitorizando. Los argumentos que invocamos separados por signos de exclamación se sustituyen aquí por los $ARG1$ y $ARG2$. Es decir, cuando Nagios lanza esta comprobación para, por ejemplo, la máquina que aloja nuestra intranet está ejecutando lo siguiente:

/usr/lib/nagios/plugins/check_ping -H 192.168.0.3 -w 200.0,20% -c 600.0,60% -p 5

No creo que por el momento merezca la pena meterse en muchas interioridades pero básicamente lo que hacemos (y esto es común para casi todos los scripts que monitorizan servicios en Nagios) es pasar un umbral que consideraremos como warning y otro como critical (-w y -c respectivamente). Si te interesa saber más sobre lo que realmente estás haciendo basta con que ejecutes el comando con un -h.

Conocer como funcionan realmente los comandos de nagios es muy importante porque cuando empecemos a desarrollar nuestros propios scripts o queramos modificar los que vienen por defecto lo mejor es ejecutarlos directamente desde línea de comando y comprobar la salida que dan hasta que estemos satisfechos.

Y, si os parece, lo dejamos aquí por el momento. En la próxima entrega añadiremos algunos servicios más y adornaremos con iconos apropiados el mapa de nuestro sistema.

42 comentarios

  1. Buenas tardes.

    Any – tu problema se puede basar en 2 cosas:

    1 – Puede que tengas problemas con el servicio de apache, si este servicio no esta arriba ni bien instalado o en cualquier caso «Mal Instalado» falta o daño de alguno de sus plugins, puede presentar esta falla.
    (Me pasaba mucho)

    2- Puede ser falta de PHP(5) mod. Este complemento es igual de requerido que el Apache.

    Dale una miradita, puede que te falte algun complemento.
    Nota:

    Para que no te enredes, puedes usar el Yast y realizar desde alli la descarga e instalación.

  2. auxilio !!!
    Ya instale todo, aparentemente estoy bien, solo que al momento de entrar en la web(localhost/nagios) me marca el error 404 y no accede.

    GRACIAS POR SU AYUDA EN SERIO YA O SE QUE MAS HACER 🙁

  3. una pregunta estoy con una duda ya configure eso y no me sale nada en el mapeo y no encuenta nungun host ni el mio no se q hacer ya configure muchas veses el archivo y no me sale nada en el mapa ni en las estadistica lo unico diferente que hice fue quitar el swtch y poner un router como parent pero no me sale nada uqe puedo hacer

  4. estimado muy bueno tu tutorial mira en mi commands.cfg tengo defino :

    define command{
    command_name check_ping
    command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
    }

    ademas en mi archivo localhost.cfg definí el servicio
    define service{
    use generic-service
    host_name CENTRAL.CISCO,ACC.POINT,anexos
    service_description PING
    check_command check_ping!1500.0,80%!3000.0,90%
    normal_check_interval 5
    retry_check_interval 1

    la pregunta es que si hay redundancia o como se deben plantear
    por tu ayuda anticipo mis agradecimientos

  5. Hola soy totalmente novato en nagios y me da este error los instale en winxp el nagwin puse de prueba una web para monitorear con un ping pero al darle en el host me muestra este error en la pantalla por favor si pudieras ayudarme.

    Whoops!

    Error: Could not read host and service status information!

    The most common cause of this error message (especially for new users), is the fact that Nagios is not actually running. If Nagios is indeed not running, this is a normal error message. It simply indicates that the CGIs could not obtain the current status of hosts and services that are being monitored. If you’ve just installed things, make sure you read the documentation on starting Nagios.

    Some other things you should check in order to resolve this error include:

    Check the Nagios log file for messages relating to startup or status data errors.
    Always verify configuration options using the -v command-line option before starting or restarting Nagios!

    Make sure you read the documentation on installing, configuring and running Nagios thoroughly before continuing. If all else fails, try sending a message to one of the mailing lists. More information can be found at http://www.nagios.org.

  6. hola disculpa pero estoy dando practicas de estadia en un campus y se me a solicitado instalar nagios en centos sin interfaz grafica, nunca e utlizado nagios ni centos solo linux, podrias mandarme un tutorial o decirme claramente como lo instalo y agro las pc y los switches, a y agrgar mi correo electronico, te lo agradeceria mucho

  7. Hola a la hoar de añadir un host en el nagios no me ha quedado muy claro te agradeceria mucho que me digieras paso por paso lo que tengo que hacer ya que me seria de mucha ayuda,
    donde declaro el host y como lo pongo en el grupo es que me dice que el nuevo host no esta definido.
    Muchas gracias.

  8. Hola,
    Estoy monitoreando IPv6, como debería de especificar las direcciones ip? y como se debería de establecer el archivo mired.cfg seria igual que en IPV4?

    Gracias

  9. hola:
    Estoy instalando nagios. Lo instalé en una máquina virtual Debian. Ahora quiero añadir un host, en concreto un XP, la máquina real para probar. En el ficheo windows.cfg añadí lo siguiente:
    define host {
    use windows-server
    hostname nombre_equipo_xp
    alias el Xp real
    address 192.168.6.31
    }

    en el mismo fichero

    define hostgroup{
    hostgroup_name windows-servers
    alias xp real
    members nombre_equipo_xp
    }

    Finalmente define el servicio ping también en el mismo fichero tal como lo indican los comentarios qu aparecen en el fichero.
    Finalmente fuí a nagios.cfg y lo único que hago es descomentar el cfg_line uqe hace referencia a windows.cfg.
    Cuano reinicio nagios me error config.
    ¿a que lo achacas?
    Felicidades por tu blog, muy bueno, y muy variado. Graicas

  10. helson: si no tiene IP nunca podrás comprobar si está caído o no desde nagios. Si sólo quieres añadirlo para que el gráfico que se muestra guarde coherencia con la estructura real de tu red, yo lo que suelo hacer es ponerle por IP la 127.0.0.1 que siempre se va a validar como disponible.

  11. Muy buen tutorial, yo tengo que instalar y configurar el Nagios para la empresa en la que trabajo para nuestro servidor y me ha servido de mucho, enserio. Gracias a ti la empresa tiene Nagios instalada correctamente en su servidor de Ubuntu

Responder a Any Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información

ACEPTAR
Aviso de cookies