# Icinga

Icinga es una aplicación para ordenador de código abierto con el fin de monitorizar sistemas y monitorizar redes. Originalmente fue creada a partir una bifurcación del software Nagios en el año 2009.
Icinga intenta superar las deficiencias percibidas en el proceso de desarrollo de Nagios, así como la adición de nuevas características tales como una moderna interfaz web estilizada al usuario, métodos de conexión a varias bases de datos (MySQL, Oracle y PostgreSQL), y una REST API que permite a los administradores integrar numerosas extensiones sin complicadas modificaciones del núcleo de Icinga.
Los desarrolladores de Icinga también intentan reflejar más estrechamente las necesidades de la comunidad e integrar los parches más rápidamente. La primera versión estable, la 1.0, se publicó en diciembre de 2009, y el contador de versiones se ha incrementado cada dos meses a partir de enero de 2010.
Icinga fue incluido por Jeffrey Hammond, de la empresa Forrester Research, en una lista de proyectos de código abierto "creciente" (en contraposición a "menguante") basada en su tasa de acometidas en su historial de desarrollo.
El nombre Icinga es una palabra zulú que significa "busca", "navega" o "examina" y se pronuncia con un chasquido consonántico.

## Historia

En mayo de 2009, un grupo de desarrolladores de la comunidad de Nagios anunció Icinga, una nueva bifurcación del código, citando su insatisfacción con el estancamiento del desarrollo del software de Nagios en ese momento, y su deseo de abrir su desarrollo a una base más amplia.
En su primer año, los desarrolladores de Icinga lanzaron versiones separadas del núcleo, API e interfaz Web, y celebraron su descarga número 10 000.
En su segundo año, el proyecto Icinga lanzó un núcleo e interfaz web unificados y estables; añadió soporte para la transición de IPv4 a IPv6, optimizó la conectividad de la base de datos y renovó la interfaz de usuario con su "Icinga Web", integró varios complementos de la comunidad (PNP4Nagios, LConf, Heatmap y Business Process Addon). El proyecto logró más de 70 000 descargas y la cantidad de miembros del equipo creció a 23.
Todavía en su segundo año, Icinga celebró su descarga número 100 000, integró el componente API de Icinga en la Icinga Web; mejoró el reporte de SLA; abrió un grupo oficial de Freenode en IRC y extendió sus dispositivo virtual preconfigurado a los sistemas operativos Debian, OpenSUSE y CentOS.
En octubre de 2012, el proyecto Icinga publicó un avance tecnológico, una rama de reemplazo del núcleo básico, desarrollado en paralelo, Icinga 2. Los desarrolladores expresaron sus intenciones de reescribir el núcleo para corregir deficiencias como la complicada configuración y las limitaciones de escalabilidad en grandes despliegues. El proyecto señaló planes para escribir el núcleo de Icinga 2 principalmente en lenguaje C++, diseñar una nueva arquitectura de cargador de componentes y remodelar el proceso de ejecución las verificaciones de ejecución de monitorización.
En junio de 2014, el proyecto Icinga publicó la primera versión estable de Icinga 2. Nuevas características, como por ejemplo un agente o una característica de la API, fueron programadas para su publicación posterior.

### Cronología de las versiones

Las versiones más recientes encabezan la siguiente lista:
| Fecha | Versión | Notas |
| 19 de marzo de 2019 | Icinga 2 v2.10.4 | Versión de corrección de errores. Arregla los errores de los escritores de Métrica del softwares para InfluxDB y Elasticsearch cuando se conectan a través de TLS. |
| 26 de febrero de 2019 | Icinga 2 v2.10.3 | Versión de corrección de errores. Arregla las conexiones TLS con los maestros y agentes en la recarga. |
| 14 de noviembre de 2018 | Icinga 2 v2.10.2 | Versión de corrección de errores. Se ha corregido un error al colgar las sesiones de solicitud HTTP. Se ha corregido una regresión con el archivo de caché que incluye objetos 1.x heredados. |
Versiones antiguas:
| Fecha | Versión | Notas |
| 18 de octubre de 2018 | Icinga 2 v2.10.1 | Versión de corrección de errores. Arreglado una regresión con el soporte del espacio de nombres. Se ha corregido un error con la recarga de la aplicación y los estados de eventos perdidos. |
| 11 de octubre de 2018 | Icinga 2 v2.10.0 | Lanzamiento de características con soporte para espacios de nombres, manejo mejorado de la conexión TLS, resaltado de sintaxis actualizado y actualizaciones de la documentación de conceptos técnicos. |
| 24 de julio de 2018 | Icinga 2 v2.9.1 | Versión de corrección de errores. Se ha corregido un error al utilizar la opción de servicio o un sistema de inicio diferente a systemd. Se ha corregido un error en la política de SELinux y en el suministro de scripts de inicio en sistemas que no son de posteado. |
| 17 de julio de 2018 | Icinga 2 v2.9.0 | Lanzamiento de características con soporte para Elasticsearch 6, soporte TLS para Icinga Data Output (IDO) para PostgreSQL (IDO PostgreSQL) y mejoras para el asistente de configuración, programación de chequeos, manejo de notificación de tiempo de inactividad y manejo de memoria. |
| 25 de abril de 2018 | Icinga 2 v2.8.4 | Versión de corrección de errores. Arreglado una regresión donde una ejecución de verificación llevaba a un desplome. |
| 24 de abril de 2018 | Icinga 2 v2.8.3 | Versión de corrección de errores. Se ha corregido un error por el que no se tenían en cuenta las configuraciones del archivo Sysconfig. Se ha corregido un fallo al utilizar la función Elasticsearch. Actualizaciones de la documentación. |
| 22 de marzo de 2018 | Icinga 2 v2.8.2 | Versión de corrección de errores. Se arreglaron varios problemas relacionados con la seguridad. |
| 17 de enero de 2018 | Icinga 2 v2.8.1 | Versión de corrección de errores. Se ha corregido un error en la API cuando se creaba un objeto en tiempo de ejecución. Se han corregido los problemas del instalador en Windows con las DLL que faltan. Actualizaciones de la documentación. |
| 17 de noviembre de 2017 | Icinga 2 v2.8.0 | Lanzamiento de características con la nueva función de proxy de CA. Nuevo algoritmo de detección de aleteo. Característica de ElasticsearchWriter con soporte para proxy HTTP. Soporte de CORS para el API de REST. El modo de racimo "de abajo hacia arriba" y la interfaz de usuario clásica se han eliminado. |
| 9 de noviembre de 2017 | Icinga 2 v2.7.2 | Versión de corrección de errores. Arreglado los nombres de atributos inválidos en el archivo de la unidad del sistema y arreglado la restricción única incorrecta para la base de datos IDO-MySQL. Actualizaciones de la documentación. |
| 21 de septiembre de 2017 | Icinga 2 v2.7.1 | Versión de corrección de errores. Arreglar el problema con base de datos IDO-MySQL, Livestatus, notificaciones de reconocimiento. Actualización de los scripts de notificación. Actualización de la documentación. |
| 2 de agosto de 2017 | Icinga 2 v2.7.0 | Lanzamiento de características con nuevos scripts de notificación, colas de trabajo, complemento verificador para la API de NSClient++ y mejoras y correcciones de estabilidad. |
| 13 de diciembre de 2016 | Icinga 2 v2.6.0 | Lanzamiento de características con NSClient++ y mejoras y correcciones de estabilidad. |
| 23 de agosto de 2016 | Icinga 2 v2.5.0 | Lanzamiento de características con InfluxDB, desempeño de base de datos IDO-MySQL, exclusiones de períodos de tiempo y otras correcciones. |
| 16 de noviembre de 2015 | Icinga 2 v2.4.0 | Lanzamiento de características con nueva API (REST API) |
| 9 de marzo de 2015 | Icinga 2 v2.3.0 | Liberación de características con mejoras en la configuración (funciones, bucles, condicionales, accesos a objetos, umbrales dependientes del tiempo, etc.), soporte para OpenTSDB y solución de problemas en la CLI |
| 19 de noviembre de 2014 | 1.12 | Interfaz de usuario clásica: mejoras y correcciones. |
| 17 de noviembre de 2014 | Icinga 2 v2.2.0 | Lanzamiento de características: con clientes remotos, firma automática de CSR, CLI, arreglos/diccionarios en atributos personalizados. |
| 29 de agosto de 2014 | Icinga 2 v2.1.0 | Lanzamiento de características con análisis de configuración mejorada, registro, características de alta disponibilidad de racimo. |
| 16 de junio de 2014 | Icinga 2 v2.0.0 | Primera versión estable. |
| 16 de mayo de 2014 | Icinga 2 v0.0.11 | Característica de racimo rediseñada con zonas de alta disponibilidad y carga balanceada, argumentos de comando y condicionales |
| 29 de abril de 2014 | Icinga 2 v0.0.10 | Avanzadas reglas para las notificaciones, las dependencias, los atributos personalizados, etc. |
| 31 de marzo de 2014 | Icinga 2 v0.0.9 | Lógica de "aplicación" basada en reglas, uso de la configuración, actualización del esquema de la base de datos (MySQL, PostgreSQL) |
| 13 de marzo de 2014 | 1.11 | Interoperabilidad con Solaris, con Oracle, con IE; y mejoras en la interfaz de usuario. |
| 11 de marzo de 2014 | Icinga 2 v0.0.8 | Dependencias como diccionarios en-línea o incrustados, controles de salud en racimos, 'config includes' recursivos |
| 7 de febrero de 2014 | Icinga 2 v0.0.7 | Pruebas atuomatizadas en Vagrant, estabilidad en IDO-MySQL. |
| 19 de diciembre de 2013 | Icinga 2 v0.0.6 | Paradas recurrentes, argumentos de comandos de registro, estadísticas de latencia. |
| 3 de diciembre de 2013 | Icinga 2 v0.0.5 | Mejoras en el rendimiento y corrección de errores. |
| 12 de noviembre de 2013 | Icinga 2 v0.0.4 | IDO-PostgreSQL, historial de estado en vivo. |
| 24 de octubre de 2013 | Icinga 2 v0.0.3 | IDO-MySQL, estado en vivo, Graphite, configuración de racimo, documentación. |
| 24 de octubre de 2013 | 1.10 | Interfaz de usuario clásica con búsqueda en vivo y selección de filtros bajo demanda, mejoras en el rendimiento. |
| 2 de julio de 2013 | Icinga 2 v0.0.2 | Vista previa de la tecnología con la capa de compatibilidad del núcleo 1.x. |
| 7 de mayo de 2013 | 1.9 | Mejoras en el rendimiento y correcciones en la usabilidad. |
| 25 de octubre de 2012 | Icinga 2 v0.0.1 | Vista previa del reemplazo del marco núcleo de la aplicación. |
| 18 de octubre de 2012 | 1.8 | La comunidad solicitó mejoras tanto en las interfaces de usuario opcionales como en la presentación de informes de Icinga. |
| 15 de mayo de 2012 | 1.7 | Sistema de gestión de paquetes simplificado. |
| 30 de noviembre de 2011 | 1.6 | Extensión de reportes SLA (opcional). |
| 24 de agosto de 2011 | 1.5 | Icinga Reporting integrado en Icinga Web interface. |
| 11 de mayo de 2011 | 1.4 | Mejoras en ambas interfaces de usuario opcionales. |
| 16 de febrero de 2011 | 1.3 | Apoyo a mecanismos de transición de IPv4 a IPv6. |
| 13 de octubre de 2010 | Icinga Mobile | Interfaz de usuario para teléfonos inteligentes y tabletas. |
| 6 de octubre de 2010 | 1.2 | Versión estable unificada. |
| 18 de agosto de 2010 | 1.0.3 | Versión unificada, no estable Icinga Web. |
| 30 de julio de 2010 | 1.0.2 Core, 1.0.1 Web | Mejoras en el rendimiento. |
| 3 de marzo de 2010 | 1.0.1 Core, 0.9.1 Web Beta | Aumentos de rendimiento, mejoras Icinga Web. |
| 16 de diciembre de 2009 | 1.0 Core, 0.9.1 Web Alpha | Núcleo estable, conexión con Oracle Database y PostgreSQL. |
| 28 de octubre de 2009 | 1.0 RC Core | Soporte inicial a Oracle Database. |
| 15 de septiembre de 2009 | 0.8.4 | Corrección de errores al módulo de conexión a las bases de datos (IDO, IDOUtils). |
| 2 de septiembre de 2009 | 0.8.3 | Soporte inicial a PostgreSQL. |
| 12 de agosto de 2009 | 0.8.2 | Integración de la API de Icinga. |
| 16 de junio de 2009 | 0.8.1 | Correcciones al núcleo. |
| 15 de mayo de 2009 | 0.8 | Versión inicial |

## Características

Debido a la naturaleza de su bifurcación, Icinga ofrece las características de Nagios con algunos añadidos, como el módulo opcional de informes con una mayor precisión SLA, conectores adicionales de bases de datos para PostgreSQL y Oracle Database, y sistemas distribuidos para la supervisión redundante.
Icinga también mantiene la configuración y la compatibilidad de los complementos con Nagios, facilitando la migración entre los dos programas de monitorización.

### Monitorización

* Vigilancia de los servicios de red (SMTP, POP3, HTTP, NNTP, ping, etcétera).
* Supervisión de los recursos del host (carga de la CPU, uso del disco duro, etc.).
* Supervisión de los componentes del servidor (commutadores, enrutadores, sensores de temperatura y humedad, etcétera).
* Complemento de diseño sencillo que permite a los usuarios desarrollar fácilmente sus propias comprobaciones de servicio.
* Comprobaciones de servicio paralelas.
* Capacidad de definir la jerarquía de los anfitriones de la red utilizando anfitriones "padres", lo que permite detectar y distinguir entre los anfitriones que están caídos y los que son inalcanzables.
* Capacidad para definir los manejadores de eventos que se ejecutarán durante el servicio o los eventos de acogida para la resolución proactiva de problemas.

### Notificaciones

* Notificación a las personas de contacto cuando ocurran problemas de servicio o problemas en algún anfitrión, por medio de correo electrónico, buscapersonas, mensaje instantáneo, o algún método definido por el usuario.
* Si es necesario, además de los anteriores contactos, se puede configurar alertas a otros usuarios o canales de comunicación.

### Reportes y visualización

* Dos interfaces de usuario opcionales (Icinga Classic UI e Icinga Web) para la visualización del estado del anfitrión y del servicio, mapas de red, informes, registros, etc.
* Módulo de reportes Icinga basado en el código abierto JasperReports para las interfaces de usuario Icinga Classic e Icinga Web
* Informes basados en plantillas (por ejemplo, los 10 principales anfitriones o servicios problemáticos, sinopsis del entorno de vigilancia completo, informes de disponibilidad, etcétera).
* Depósito de informes con diversos niveles de acceso y generación y distribución automatizada de informes.
* Ampliación opcional para la presentación de informes SLA que distingue entre los eventos críticos de las paradas planificadas y no planificadas y los períodos de reconocimiento.
* Presentación de informes sobre la utilización de la capacidad.
* Gráficos de rendimiento a través de complementos como PNP4Nagios, NagiosGrapher e InGraph.

## Arquitectura

Icinga Core está escrito en lenguaje C y tiene una arquitectura modular con núcleo autónomo, interfaz de usuario y base de datos en la que los usuarios pueden integrar diversos complementos.
Estos últimos se comunican a través de la capa de abstracción de la Doctrina de Icinga, REST y API de complementos que median entre los datos externos y las estructuras internas. Este conjunto de componentes permite a los usuarios distribuir el sistema de Icinga para una supervisión redundante. También ofrece a los usuarios la libertad de personalizar Icinga para satisfacer sus necesidades.

## Funcionalidades ampliadas

Icinga es compatible con todos los complementos y la mayoría de los suplementos escritos para Nagios, especialmente para los usuarios que opten por la interfaz de usuario Icinga Classic. Los complementos más populares para extender la funcionalidad de Icinga incluyen:
* Gráficas de rendimiento (por ejemplo, PNP4Nagios, NagiosGrapher, InGraph).
* Interfaces y herramientas de configuración (por ejemplo, Nconf -herramienta para configurar Nagios-, NagiosQL, LConf).
* Supervisión de los procesos comerciales (por ejemplo, los complementos de los procesos comerciales).
* Visualización en red (por ejemplo, NagVis, Nagmap).
* Monitoreo de Windows (por ejemplo, NSClient++, Cygwin).
* Monitoreo de Traps SNMP (por ejemplo, SNMPTT, NagTrap).

## Grandes entornos empresariales

Icinga se ha desplegado con éxito en entornos grandes y complejos con miles de hosts y servicios, en configuraciones distribuidas y de conmutación por error. La arquitectura modular del software con Core, Web e Icinga Data Output for Data Base (IDODB) independientes facilita la supervisión distribuida y la supervisión de los sistemas distribuidos.
Nagios Remote Plugin Executor (NRPE) es un agente compatible con Icinga que permite la monitorización de sistemas remotos utilizando scripts que están alojados en los sistemas remotos. Permite supervisar recursos como el uso del disco, la carga del sistema o el número de usuarios conectados actualmente. Icinga encuesta periódicamente el agente en el sistema remoto utilizando el complemento check_nrpe.
En las configuraciones que utilizan la interfaz de usuario Web opcional de Icinga, los datos de monitoreo de múltiples instancias de Icinga Core pueden ser mostrados siempre y cuando cada instancia escriba en el mismo IDODB. De esta manera, el monitoreo distribuido es también más simple de administrar.
A nivel estructural, Icinga puede tener sus diversos componentes divididos y dispersos en una configuración distribuida. Esta monitorización de sistemas distribuidos proporciona una mayor seguridad y redundancia; si un componente fallara, otro podría tomar su lugar sin interrumpir todo el sistema de monitorización.
El programa informático también ofrece un sistema de autenticación de grano fino por el que el acceso de los usuarios, las notificaciones y las vistas pueden personalizarse en función de los detalles de los grupos de servidores, los servidores y los servicios por individuo.