Configurando notificaciones email en Icinga2

Revisando uno de los Icinga2 que tengo configurado me di cuenta de que no llegaban las notificaciones correctamente y no entendía lo que ocurría.

Por lo tanto me puse a revisar cada una de las configuraciones hasta que di con la solución de ello.

Vamos a tener en cuenta 2 supuestos casos:

  1. Configuraciones sin ser un servidor maestro (standalone)
  2. Configuraciones siendo el servidor maestro (clientes de Icinga reportan a este servidor)

Antes de comenzar

Os dejo por aquí un par de comandos que os servirán de mucha ayuda en el proceso de Debug:

Este comando nos muestra la configuración de nuestro Icinga2 cuando queremos configurar las notificaciones. Es importante tenerlo a mano para revisar si vamos por buen camino y a qué objetos afecta.

Por ejemplo cuando lo tenía mal configurado me sacaba esta configuración en vacío.

icinga2 object list --type=Notification

El siguiente comando super útil revisa que la sintaxis y la configuración están de manera correcta. Es bueno saber esto antes de proceder a reiniciar icinga2.

icinga2 daemon -C

Configuración Standalone

Las configuraciones standalone son los servidores que no están configurado como master para recibir peticiones de cliente. Es decir no tiene zonas configuradas etc…

¿Dónde tengo que realizar las configuraciones?

/etc/icinga2/conf.d

Todas las configuraciones se tienen que realizar en dicho directorio, ya que no hay zonas donde se tengan que crear etc. Este punto es importante a tenerlo en cuenta cuando expliquemos el punto 2.

¿Qué ficheros tengo que tocar?

/etc/icinga2/conf.d/users.conf

Esto es un ejemplo de la configuración:

object User "icingaadmin" {
  import "generic-user"

  display_name = "Icinga 2 Admin"
  groups = [ "icingaadmins" ]

  email = "root@localhost"
}

object UserGroup "icingaadmins" {
  display_name = "Icinga 2 Admin Group"
}

object User "usuario1" {
  display_name = "Nombre Usuario 1"
  groups = ["icingaadmins"]
  enable_notifications = true
  states = [ OK, Warning, Critical, Unknown, Up, Down]
  types = [ Problem, Recovery ]
  email = "email-usuario-1"
}

object User "usuario2" {
  display_name = "Nombre Usuario 2"
  groups = ["icingaadmins"]
  enable_notifications = true
  states = [ OK, Warning, Critical, Unknown, Up, Down]
  types = [ Problem, Recovery ]
  email = "email-usuario-1"
}

En este ejemplo se han creado 3 usuarios (icingaadmin, usuario1 y usuario2) los cuales están asociados al grupo icingaadmins. Estos usuarios recibirán alarmas cuando ocurran alguno de los estados, cuando haya un problema o se recupere.

Las alarmas llegarán por email al email asociado.

/etc/icinga2/conf.d/notifications.conf

Esto es un ejemplo de configuración:

apply Notification "mail-icingaadmin" to Host {
  import "mail-host-notification"

  user_groups = [ "icingaadmins" ]
  users = host.vars.notification.mail.users



  assign where host.vars.notification.mail
}

apply Notification "mail-icingaadmin" to Service {
  import "mail-service-notification"

  user_groups = [ "icingaadmins" ]
  users = host.vars.notification.mail.users


  assign where host.vars.notification.mail
}

Enviará una notificación al grupo icingaadmins cuando ocurra algún tipo de problema a nivel de HOST o SERVICE. Estas notificaciones serán asignadas si aparece en los host de la siguiente manera:

vars.notification["mail"] = {
  groups = ["icingaadmins"]
}

Configuración Servidor Maestro

Como dijimos al principio del artículo este sería un Icinga que recibe la monitorización de distintos servidores o clientes.

¿Dónde tengo que realizar las configuraciones?

/etc/icinga2/zones.d/global-templates

Supongo que en mi caso y en el caso de muchos lo tienen resuelto de esta manera, ya que entiendo que todos deben tener la misma configuración.

Esto lo indico porque muchas veces podemos cometer el error de realizar las configuraciones en el directorio de Standalone (antes explicado) y ver que no funciona (error de novato que me enfrenté).

¿Qué ficheros tengo que tocar?

Esto no vamos a cambiar el ejemplo que establecimos en Standalone, por lo tanto podemos usar los mismos ejemplos sin problemas mientras respetemos la ruta.

Deja una respuesta

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