NAGIOS2 para el monitoreo de los servicios

1.- Instalar Nagios

apt-get install nagios2 nagios-plugins nagios-images

2.- Al instalar el nagios-plugins nos va pedir que instalemos varios paquetes com el samba pero todo se deja en blanco y el dhcp del samba le decimos que no.

3.- Una vez instalado abrir un navegador e ir a http://localhost/nagios2 de lo contrario hacer un virtual host que apunte a esta direccion /usr/share/nagios2/htdocs debe salir la ventana de seguridad de nagios. Vamos a /etc/nagios2 y creamos el file con usuario que va a administrar el servicio via web.

htpasswd -c /etc/nagios2/htpasswd.users nagiosadmin 

accedemos a la pagina y veremos un ejemplo de los servicios locales …

DE AQUI EN ADELANTE EMPEZAMOS YA LA CONFIGURACION DE NAGIOS2

Estructura de los archivos….

web   		/usr/share/nagios2/htdocs/
configuracion 	/etc/nagios2/conf.d/
plugins		/etc/nagios-plugins/

vamos a poner un ejemplo de un servidor el cual va a tener los siguientes servicios.. mail ftp http

1. Definir los contactos a los cuales vamos a enviar los reportes..de los servicio editamos el file de configuracion contacts_nagios2.cfg y le ponemos esto dentro.

define contact{
        contact_name                                 admin
        alias                                        Administrador Nagios
        contactgroups                                admin
        service_notification_period                  24x7
        host_notification_period                     24x7
        service_notification_options                 w,u,c,r
        host_notification_options                    d,u,r
        service_notification_commands                notify-by-email
        host_notification_commands                   host-notify-by-email
        email                                        lolo@micorreo.cu
    }
   

donde…

define contact{
        contact_name                                 {nombre del contacto}
        alias                                        {descripcion del contacto}
        contactgroups                                {grupo de contactos al cual pertenece}
        service_notification_period                  {priodo de tiempo de notificaciones de servicios}
        host_notification_period                     {priodo de tiempo de notificaciones de hosts}
        service_notification_options                 {opciones de notificacion por servicio}
        host_notification_options                    {opciones de notificacion por host}
        service_notification_commands                {comando de notificacion a utilizar por servicio}
        host_notification_commands                   {comando de notificacion a utilizar por host}
        email                                        {direccion de email del contacto}
    }


define contactgroup{
        contactgroup_name       admins    ; el grupo al que pertenece (lo creamos nosotros)
        alias                   Admins vcl.rimed.cu ; nombre descriptivo del grupo
        members                 admin ; usuario que va a pertenecer a este grupo (si hay mas de uno es separado por coma)
        }

2. Agregamos los host a los cuales vamos a comprobar reportes de servicios (no recomendable para hacer en la maquina localhost) en el file host-gateway_nagios2.cfg

define host{
      use                   generic-host
      host_name             mailserver
      alias                 servidor de correo
      address               10.10.10.1
      check_command         check-host-alive
      max_check_attempts    10
      notification_interval 120
      notification_period   24x7
      notification_options  d,u,r
  }



define host{
  use                   {ver abajo} se recomienda ponerlo en sentido general
  host_name             {nombre-host}
  alias                 {alias-descriptivo}
  address               {ip}
  check_command		{commando para chequear el host} (para esto primero has un ping a ese servidor si no te va a dar como apagado)
  contact_groups        {grupo de contacto};
  max_check_attempts    {maxima cantidad de chequeos}
  notification_interval {intervalo de tiempo entre notificaciones}
  notification_period   {priodo de tiempo de notificaciones}
  notification_options  {cuando enviar notificaciones} ver abajo
}

use			generic-services	#eso es para todos los sistemas operativos
			local-services		# para servicios locales
			linux-services
			windows-services
			storage-services	# lo referente a discos y almacenamientos 


notification_options

Esta directiva indica a Nagios en que momentos debe enviar notificaciones de estado 

      d = DOWN cuando el host esta caido
  ?
      u = UNREACHABLE cuando el host no es visible o es inalcanzable
  ?
      r = RECOVERY (OK) cuando el host se recupero
  ?
      f = FLAPPING cuando el host se inicia o detiene
      n = NONE no enviar notificaciones

?

3. definir los grupos de maquinas (servidores) que van a ser verificados por el nagios que esta en el file hostgroups_nagios2.cfg

define hostgroup {
                hostgroup_name  ISP ; nombre del grupo
                alias           servidores 
                members         mailserver ; los maquinas que va a pertenecer a este grupo.. (mas de una separada por coma)
  
}

4. Este el el file mas trabajoso en el cual se van a definir todos los servicios services_nagios2.cfg

Hay dos formas de definir los servicios.

1 por grupo (ejemplo hacer chequeo a todo el grupo)

2 independiente (ejemplo hacer chequeo a maquinas y sus servicios por independientes)

para esto vamos a trabajar en el segundo ya que es el mas recomendable

editamos el file anterior y comentamos todo lo que esta dentro y agregamos esto:

define service {
        use                   generic-services
        host_name             mailserver
        service_description   salida smtp
        is_volatile           0
        check_period          24x7
        max_check_attempts    3
        normal_check_interval 5
        retry_check_interval  1
        contact_groups        admins
        notification_period   24x7
        notification_options  c,r
        check_command         check_smtp
}
define service {

donde…

define service {
  use                   {template de servicio a utilizar}
  host_name             {hosts que ejecutan dicho servicio}
  service_description   {descripcion del servicio}
  servicegroups         {grupo al cual pertenece} (opcional)
  is_volatile           {si el servicio es volatil}
  check_period          {periodo de tiempo para el chequeo}
  max_check_attempts    {maximo de intentos de chequeo}
  normal_check_interval {intervalo de tiempo a programar los chequeos}
  retry_check_interval  {intervalo de tiempo para un re-chequeo}
  contact_groups        {grupo de contacto};
  max_check_attempts    {maxima cantidad de chequeos}
  notification_period   {priodo de tiempo de notificaciones}
  notification_options  {cuando enviar notificaciones}
  check_command         {comando de chequeo con sus argumentos}
}

check_command es el comando que se le va a asignar a ese servicio desde el plugins… veamos el ejemplo anterior

check_command         check_smtp
<code>

en el directorio de plugins hay uno que se llama //mail.cfg// y dentro tiene el commando asignado para verificar el puerto smtp lo mismo pasa con todos los otros servicios 

<code>

define service {
        use                   generic-services
        host_name             mailserver
        service_description   servicio http
        is_volatile           0
        check_period          24x7
        max_check_attempts    3
        normal_check_interval 5
        retry_check_interval  1
        contact_groups        admins
        notification_period   24x7
        notification_options  c,r
        check_command         check_http
}

5. APARTE DE LO QUE SE EXPLICA AQUI EN LAS CONFIGURACIONES FILES

contacts_nagios2.cfg 		# comentar todo menos lo explicado 
extinfo_nagios2.cfg   		# comentar todo
generic-host_nagios2.cfg	# esto no tocar.. es de forma general lo que se configura en los host
generic-service_nagios2.cfg	# esto no tocar.. es de forma general lo que se configura en los servicios
host-gateway_nagios2.cfg	# Comentar todo menos lo explicado
hostgroups_nagios2.cfg		# comentar todo menos lo explicado
localhost_nagios2.cfg		# comentar todo
services_nagios2.cfg		# comentar todo menos lo explicado
timeperiods_nagios2.cfg		# no tocar (Opcional) es donde se define el tiempo (check_period)

con esto ya estamos casi listo para arrancar el demonio del nagios2.

para comprobar si tenemos algun error en la configuracion ejecutamos

nagios2 -v /etc/nagios2/nagios.cfg

ponerlo publico o no?

se puede poner publico si no habilitas los comandos externos los cuales te permiten parar e iniciar los servicios via web esto se deshabilita y se habilita en nagios.cfg línea 130

para quitar la autenticacion cgi.cfg línea 84

apache2.conf de nagios línea 16 18 19

si no hay errores reiniciamos el nagios

invoke-rc.d nagios2 restart

NOTA: Para que el nagios nos reporte los servicios tenemos que intalar postfix en el servidor que está el nagios y en el main.cf en la linea que dice

relayhost = {ip del servidor SMTP de la red local}