# Instalación y Configuración de Nagios

# Introducción

## Metas

- Continuar la configuración de Nagios

## Notas

- Los comandos precedidos por “$” implican que debe ejecutar el comando como usuario genérico - no como root
- Los comandos precedidos por “#” implican que debería estar trabajando como usuario root.
- Los comandos con inicios de línea más específicos como “rtrX>” o “mysql>” indican que debe ejecutar los comandos en un equipo remoto, o dentro de otro programa.

# Ejercicios

# PARTE IV - Definiendo las relaciones de dependencia (padre-hijo)

Si observa la interfaz de Nagios en su servidor y selecciona Mapas de estado, verá los servidores y dispositivos de su campus centrados en su instancia de Nagios. Para que Nagios funcione de manera eficiente, debe incluir relaciones de dependencia para cada dispositivo definido.

Vaya a https://oob-hostX-campusY.p.vtp-us.nsrc.org/nagios4/ y oprima el enlace “Map”.

Ahora agregaremos relaciones de dependencia para enrutadores, conmutadores y servidores.

## Agregando padres en routers.cfg

    $ cd /etc/nagios4/conf.d
    $ sudo editor routers.cfg

Y actualice las entradas de bdr1-campusY y core1-campusY con una nueva línea para la definición de “parents”, como se muestra a continuación:

    define host {
        use         generic-switch
        host_name   transit1-nren
        alias       Campus Y Transit Router
        address     transit1-nren.ws.nsrc.org
    }

    define host {
        use         generic-switch
        host_name   bdr1-campusY
        alias       Border Router 1, Campus Y
        address     bdr1-campusY.ws.nsrc.org
        parents     transit1-nren
    }

    define host {
        use         generic-switch
        host_name   core1-campusY
        alias       Core Router Campus Y
        address     core1-campusY.ws.nsrc.org
        parents     bdr1-campusY
    }

Grabe y salga del editor.

## Configurar padres en switches.cfg

    $ cd /etc/nagios4/conf.d                                (Solo para estar seguro)
    $ sudo editor switches.cfg

    define host {
        use         generic-switch
        host_name   dist1-b1-campusY
        alias       Distribution Switch 1, Building 1, Campus Y
        address     dist1-b1-campusY.ws.nsrc.org
        parents     core1-campusY
    }

    define host {
        use         generic-switch
        host_name   dist1-b2-campusY
        alias       Distribution Switch 1, Building 2, Campus Y
        address     dist1-b2-campusY.ws.nsrc.org
        parents     core1-campusY
    }

¿Entiende por qué ambos switches tienen el mismo padre? Si no, pídale a su instructor o asistente que le explique.

Grabe y salga del archivo.

## Configurar padres en pcs.cfg

Le dejaremos este ejercicio a su elección. Es sumamente sencillo. Todos los nodos de su campus tienen el mismo padre, es core1-campusY

Edite el archivo pcs.cfg:

    $ cd /etc/nagios4/conf.d                                (Solo para estar seguro)
    $ sudo editor pcs.cfg

y al final de cada entrada, agregue la línea:

        parents     core1-campusY

Asegúrese de reemplazar “Y” con su número de campus. También, asegurese de no agregar “core1-campusY” como el padre de su servidor. Si no tentiende por qué, preguntele a su instructor.

Grabe y salga del archivo cuando haya terminado con todas las entradas.

## Reinicie Nagios y vea el mapa de estado actualizado

    $ sudo nagios4 -v /etc/nagios4/nagios.cfg
    $ sudo systemctl restart nagios4

Si tiene errores, corríjalos y trate de reiniciar de nuevo.

En el navegador, vaya a https://oob-hostX-campusY.p.vtp-us.nsrc.org/nagios4/ y vaya al enlace “Map” de la izquierda. Su mapa debería verse bastante diferente. Debería ver un mapa que representa la red desde el punto de vista de Nagios, pero con todos los nodos en la jerarquía adecuada, basado en las configuraciones de “parent” que acaba de agregar.

Si quiere ver una mapa diferente elige el menu con tres lineas en el lado derecha arriba en la pagina de la mapa. Después puede elegir diferente tipos de mapas en la opción de “Layout”. Por ejemplo, prueba como se vea con “Balanced Tree (Horizontal)”.

# PARTE V - Crear Más Grupos de Nodos

## Preparación

En la interfaz web, vaya a los enlaces “Hostgroups”, “Hostgroup Summary”, “Hostgroup Grid”. Esto muestra una forma conveniente de agrupar nodos relacionados (ej. si están en la misma ubicación, o si tienen el mismo propósito).

## 1. Actualice /etc/nagios4/conf.d/hostgroups.cfg

Para los siguientes ejercicios será útil si actualizamos o creamos los siguientes grupos de nodos:

          ubuntu-servers
          routers
          switches

Edite el archivo /etc/nagios4/conf.d/hostgroups.cfg:

    $ cd /etc/nagios4/conf.d                                (Solo para estar seguro)
    $ sudo editor hostgroups.cfg

Crearemos un nuevo grupo de host “ubuntu-servers” que incluya todos los servidores de su campus:

    # A list of your Ubuntu Linux servers
    define hostgroup {
      hostgroup_name  ubuntu-servers
      alias           Ubuntu Linux Servers
      members         host1-campusY, host2-campusY, host3-campusY, host4-campusY, \
                      host5-campusY, host6-campusY, srv1-campusY
    }

Además, asegúrese de poner una "" al final de cada línea. De lo contrario recibirá un error cuando reinicie Nagios.

Una vez que haya hecho esto, agregue un grupo de host más para nuestros switches de clase.

    # A list of our switches
    define hostgroup {
      hostgroup_name  switches
      alias           Classroom Switches
      members         dist1-b1-campusY,dist1-b2-campusY
    }

Después que los ejercicios al principio y este debería tener los ubuntu-servers, routers, switches, ssh-servers y http-servers configurado en /etc/nagios4/conf.d/hostgroups.cfg.

Cuando termine no olvide verificar y reiniciar Nagios.

    $ sudo nagios4 -v /etc/nagios4/nagios.cfg
    $ sudo systemctl restart nagios4

## Vuelva al navegador y compruebe que estén presentes sus nuevos Host Groups.

# PARTE VI - Información Extendida de Nodo (“hacer los gráficos más bonitos”)

## Actualice iconos para cada dispositivo de red (routers, switches, servidores)

Si quiere usar los iconos correspondientes para cada nodo definido en Nagios, aquí es donde puede hacerlo. Tenemos tres tipos de dispositivos:

- Enrutadores Cisco
- Conmutadores Cisco
- Servidores Ubuntu

Hay un repositorio bastante grande con imágenes para iconos que puede ver aquí:

    /usr/share/nagios4/htdocs/images/logos/

Estos iconos se instalan por defecto como paquetes dependientes del nagios4 en Ubuntu. En algunos casos encontrará iconos específicos al modelo de su hardware, pero para hacer las cosas más simples usaremos los siguientes iconos para nuestro hardware:

- /usr/share/nagios4/htdocs/images/logos/debian.*
- /usr/share/nagios4/htdocs/images/logos/router40.*
- /usr/share/nagios4/htdocs/images/logos/switch40.*

El próximo paso es editar los archivos y actualizar cada entrada de los routers, switches y servidores (hosts) para incluir las opciones de icon_image y statusmap_image con imagenes que corresponden a cada tipo de dispositivo.

Abre routers.cfg:

    $ cd /etc/nagios4/conf.d                                (Solo para estar seguro)
    $ sudo editor routers.cfg

agrega a cada dispositivo dos lineas al final de cada uno que contiene:

      icon_image      router40.png
      statusmap_image router40.png

Por ejemplo por transit1-nren la entrada ahora se vea asi:

    define host {
      use           generic-switch
      host_name     transit1-nren
      alias         Transit Router 1
      address       transit1-nren.ws.nsrc.org
      icon_image      router40.png
      statusmap_image router40.png
    }

Cambia cada dispositivo. Después, salga del archivo y, ahora, hacemos algo parecido a los switches (conmutadores):

    $ sudo editor switches.cfg

      icon_image      switch40.png
      statusmap_image switch40.png

Cambia cada dispositivo. Después, salga del archivo y, ahora, hacemos algo parecido a los pcs (servidores):

      icon_image      debian.png
      statusmap_image debian.png

Cambia cada dispositivo. Después, salga del archivo y, ahora, probemas que todo esta bien:

    $ sudo nagios4 -v /etc/nagios4/nagios.cfg
    $ sudo systemctl restart nagios4

Si todo esta bien, puede ver en la pagína web Nagios en la izquierda de la pagina mirando a la opción de “Hosts” - Y, ahora, revisa la opción “Map”, también.

# PARTE VII - Crear Grupos de Servicio

## Cree grupos de servicio para SSH y HTTP para cada grupo de PCs.

La idea es crear grupos de servicio para sus 7 servidores en el campus. Los grupos de servicio consideran que el servicio definido por los servicios combinados, está inactivo, si alguno de los servicios de un grupo está inactivo.

En este caso, agruparemos ssh y http. En la vida real, puede hacerlo para msyql, imap, smtp, http y su mta (postfix, mail, exim) si son servicios necesarios para proveer una interfaz de correo a sus usuarios.

Podemos crear el archivo servicegroups.cfg con referencia a los dos servicios configurados en el archivo services.cfg.

    $ cd /etc/nagios4/conf.d            (por si acaso)
    $ sudo editor servicegroups.cfg

Para el campus 1 este grupo de servicio luciría de esta forma: (Por favor, camia el “1” al numero de su campus)

    define servicegroup {
            servicegroup_name       campus1-ssh-http
            alias                   Campus 1 SSH and Web
            members  host1-campus1,SSH,host1-campus1,HTTP,host2-campus1,SSH,host2-campus1,HTTP, \
                     host3-campus1,SSH,host3-campus1,HTTP,host4-campus1,SSH,host4-campus1,HTTP, \
                     host5-campus1,SSH,host5-campus1,HTTP,host6-campus1,SSH,host6-campus1,HTTP, \
                     srv1-campus1,SSH,srv1-campus1,HTTP
    }

Usamos “\” para indicar una nueva línea. Sin esto, recibirá errores de configuración.

Tenga en cuenta que “SSH” y “HTTP” deben estar en mayúscula, ya que así es como se escribió el service_description en el archivo /etc/nagios4/conf.d/services.cfg

Grabe sus cambios, verifique su trabajo y reinicie Nagios. Ahora, si hace clic en el elemento de menú Service Groups en la interfaz web de Nagios, debería ver esta información agrupada.

El chequeo de HTTP puede demorar algunos minutos antes que su muestra que el servicio de http(s) esta funcionando.

# PARTE VIII - Configure acceso para invitados (guest) en la interfaz web de Nagios

Vamos a editar el archivo /etc/nagios4/cgi.cfg para dar acceso de sólo lectura (read-only) al usuario “guest” en la interfaz web de Nagios.

Nagios está configurado, por defecto, para dar acceso completo (r/w) al usuario “nagiosadmin”
en la interfaz web . En el archivo cgi.cfg puede cambiar el nombre de este usuario, agregar otros usuarios, cambiar cómo se autentifican los usuarios, qué usuarios tienen acceso a qué recursos y mucho más.

Primero, vamos a crear el usuario “guest” y un password en el archivo htpasswd.users.

    $ sudo htpasswd /etc/nagios4/htdigest.users guest

Puede usar cualquier password que quiera (o ninguno). Por ejemplo, el password “guest” sería una buena opción si la cuenta va a ser de sólo lectura.

A continuación, edite el archivo /etc/nagios4/cgi.cfg y busque qué tipo de acceso se le ha asignado al usuario nagiosadmin. Por defecto, verá las siguientes directivas (note que hay comentarios entre cada directiva):

    authorized_for_system_information=nagiosadmin
    authorized_for_configuration_information=nagiosadmin
    authorized_for_system_commands=nagiosadmin
    authorized_for_all_services=nagiosadmin
    authorized_for_all_hosts=nagiosadmin
    authorized_for_all_service_commands=nagiosadmin
    authorized_for_all_host_commands=nagiosadmin

Ahora digámosle a Nagios que permita que el usuario “guest” tenga acceso a algunas de las informaciónes a través de la interfaz web. Puede elegir lo que desee, pero configuración más típica es:

    authorized_for_system_information=nagiosadmin,guest
    authorized_for_configuration_information=nagiosadmin,guest
    authorized_for_system_commands=nagiosadmin
    authorized_for_all_services=nagiosadmin,guest
    authorized_for_all_hosts=nagiosadmin,guest
    authorized_for_all_service_commands=nagiosadmin
    authorized_for_all_host_commands=nagiosadmin

Note que no le dimos acceso a los comandos de sistema, comandos de servicio ni comandos de host.

Al terminar los cambios, grabe el archivo cgi.cfg, verifique y reinicie Nagios.

Para ver si puede ingresar como “guest”, deberá eliminar sus “cookies” del navegador, o abrir un navegador alternativo, si lo tiene. No notará ninguna diferencia en la interfaz web. La diferencia está en que algunas de las opciones disponibles en el menú no funcionarán (por ejemplo, forzar un chequeo de nodo o servicio, programación de chequeos, comentarios, etc).

## Habilitar comandos externos en nagios.cfg

(NOTA: En este momento todo el ejercicio funciona hasta el final. Hay cambios en nagios4 y el permios de comandos externos es muy diferente de Nagios3.)

Este cambio es requerido para permitir que los usuarios confirmen (“Acknowledge”) problemas con los hosts y servicios a través de la interfaz Web.

Edite el archivo “/etc/nagios4/nagios.cfg”, y verifique que tenga esta línea: y cambiar la línea:

    check_external_commands=1

En caso contrario, cámbielo, guarde el archivo y salga.

Una vez que haya hecho esto, vaya a “Problems” > “Services (Unhandled)” y busque un servicio en el estado rojo (crítico/critical) o amarillo (advertencia/warning). Seleccione el nombre del servicio. Y entonces, en “Service commands”, oprima “Acknowledge this service problem” (reconocer este servicio con problema). Ingrese un comentario y haga clic en Confirmar.

El problema deberá desaparecer de la lista de problemas que no han sido atendidos.

(Usuario: nagiosadmin y clave del curso)