# Check MK

Checkmk es un software desarrollado en Python y C++ para el monitoreo de infraestructuras de TI. Se utiliza para el monitoreo de servidores, aplicaciones de software, redes, infraestructuras en la nube (públicas, privadas e híbridas), contenedores, almacenamiento de datos, bases de datos y sensores.

## Historia

Checkmk se originó en 2008 como un agente que sustituye al shell script para Inetd, y fue publicado en abril de 2009 bajo la GPL. Inicialmente se basó en Nagios, y lo extendió con una serie de nuevos componentes. La edición de código abierto (Checkmk Raw Edition) continúa basándose en el núcleo de Nagios, y lo agrupa con componentes adicionales de código abierto en un sistema completo.
A lo largo de los años, las ediciones comerciales de Checkmk se han convertido en un sistema de monitoreo contenido en sí mismo. Se han reemplazado todos los componentes esenciales de Nagios por componentes propios, incluyendo su propio núcleo de monitoreo. La mayoría de los desarrollos para las ediciones comerciales, en particular todos los complementos, también están disponibles en la Edición Checkmk Raw.
Mientras que en el pasado Checkmk fue diseñado para monitorear entornos locales grandes y heterogéneos, desde la versión 1.5+ (1.5p12) también admite el monitoreo de los servicios de AWS, Azure, Docker y Kubernetes.
Checkmk está siendo desarrollado por tribe29 GmbH en Múnich Alemania, que operaba bajo el nombre de Mathias Kettner GmbH hasta el 16 de abril de 2019. Junto con el cambio de nombre de la compañía, el nombre del producto "Check_MK" también se cambió a "Checkmk".
tribe29 GmbH sigue un modelo de negocio de Código de Núcleo abierto. La edición de código abierto está disponible bajo diferentes licencias, principalmente GPLv2, mientras que gran parte de las ediciones comerciales se rigen bajo la "Licencia empresarial Checkmk".

## Características

Checkmk se distribuye en tres ediciones: una edición de código abierto ("Checkmk Raw Edition - CRE"), una edición comercial empresarial ("Checkmk Enterprise Edition - CEE") y una edición comercial para proveedores de servicios administrados ("Edición Checkmk Managed Services - CME"). Todas las ediciones Checkmk están disponibles en una variedad de plataformas, en particular para varias versiones de Debian, Ubuntu, SLES y RedHat / CentOS, y también como una imagen Docker. Además, se ofrecen dispositivos físicos de varios tamaños, así como un dispositivo virtual para simplificar la administración del sistema operativo subyacente usando una interfaz gráfica de usuario, para obtener soluciones de alta disponibilidad. Los agentes utilizados por Checkmk para recopilar datos están disponibles para 11 plataformas, incluido Windows.
Checkmk combina tres tipos de monitoreo de TI:
* Monitoreo basado en estado, que (con umbrales de referencia) registra la "salud" de un dispositivo o aplicación.
* Monitoreo basado en métricas que permite el registro y análisis gráfico de series temporales. Para la CEE, están disponibles un sistema gráfico basado en HTML5 y con integración a Grafana.
* Monitoreo basado en registros y eventos, en el que los eventos clave se pueden filtrar y las acciones se pueden activar en función de estos eventos.
Con el fin de garantizar un vasto rango de objetivos monitoreables, Checkmk actualmente tiene más de 1700 complementos en cada edición, todos bajo la licencia GPLv2. Estos complementos se mantienen como parte del producto y se complementan regularmente con otros complementos o extensiones adicionales. También es posible conectar los complementos existentes de Nagios.
Para simplificar la configuración y el funcionamiento, todos los componentes de Checkmk se distribuyen completamente integrados. Una configuración 1: n basada en reglas, así como un alto grado de automatización aceleran significativamente los flujos de trabajo. Esto incluye:
* Descubrimiento automático de hosts (cuando corresponda).
* Descubrimiento automático de servicios
* Configuración automatizada de complementos a través de umbrales y reglas preconfigurados.
* Actualizaciones de agente automatizadas (una característica de CEE).
* Configuración automática y dinámica que permite la supervisión de servicios volátiles con una vida útil de solo unos segundos, como en el entorno de Kubernetes (a partir de CEE v1.6)
* Descubrimiento automatizado de etiquetas y etiquetas de fuentes como Kubernetes, AWS y Azure (a partir de CEE v1.6).
Además, también hay libros de instrucciones para el uso de herramientas de configuración e implementación como Ansible o Salt.
Checkmk se usa a menudo en entornos distribuidos muy grandes donde se monitorea una gran cantidad de sitios (por ejemplo, 300 ubicaciones de Faurecia) y / o más de 100.000 dispositivos (por ejemplo, Edeka). Esto es posible, entre otras cosas, porque el microcore de Checkmk consume muchos menos recursos de CPU que, por ejemplo, Nagios, y por lo tanto ofrece un rendimiento significativamente mayor en el mismo hardware. Además, los datos no persistentes se almacenan en la memoria RAM, lo que mejora significativamente el tiempo de acceso.

## Componentes
### El núcleo de supervisión ("Checkmk Microcore - CMC")

Las ediciones comerciales de Checkmk usan su propio núcleo de monitoreo, escrito en C ++. Este tiene un rendimiento mucho mayor que el núcleo de Nagios. Además, a partir de la versión 1.6, permite la grabación dinámica de objetos con una vida útil corta, como Contenedores. Esto es posible porque, a diferencia del núcleo de Nagios, el Checkmk Microcore no requiere un reinicio al realizar cambios de configuración. La versión de código abierto "Checkmk Raw Edition" actualmente todavía usa el núcleo de Nagios.

### Configuración y motor de verificación

Checkmk ofrece descubrimiento de servicios autónomos y generación de configuraciones. Checkmk utiliza su propio método al realizar los controles. Durante el período de prueba, se contacta a cada host solo una vez. Los resultados de la prueba se transmiten al núcleo de monitoreo como verificaciones pasivas. Esto mejora significativamente el rendimiento en el servidor de supervisión, así como en los hosts que se supervisan.
Checkmk utiliza diferentes métodos para acceder a los datos en los sistemas de destino. Estos incluyen agentes instalados en el sistema de destino, "agentes especiales" que se ejecutan en el servidor de monitoreo y se comunican con la API del sistema de destino, la API SNMP para monitorear, por ejemplo, dispositivos de red e impresoras, y protocolos HTTP/TCP para comunicarse con servicios web e internet. Por defecto, Checkmk sigue el "principio de extracción", es decir, el sistema de monitoreo consulta explícitamente los datos para identificar rápidamente cuándo un sistema falla repentinamente y no responde a una "extracción". Sin embargo, como alternativa, se puede configurar un "push" con el cual el sistema transfiere sus datos directamente a Checkmk o a un host intermedio.

### Interfaz de datos ("Livestatus")

Livestatus es la interfaz principal en Checkmk. Proporciona acceso en vivo a todos los datos de los hosts y servicios monitoreados. Los datos se obtienen directamente de la RAM, lo que evita el acceso lento al disco duro y brinda acceso rápido a la información sin sobrecargar demasiado el sistema. El acceso se realiza a través de un protocolo simple y es posible desde todos los lenguajes de programación sin requerir una biblioteca especial.

### Web-GUI ("Multisitio")

Multisitio es la GUI web de Checkmk. Además de tener un diseño de página rápido, ofrece vistas y paneles definibles por el usuario, monitoreo distribuido al integrar múltiples instancias de monitoreo a través de Livestatus, integración de NagVis, una conexión LDAP integrada, acceso a datos de estado a través de web services y mucho más. Los paneles y las vistas se pueden configurar independientemente para varios usuarios o grupos de usuarios, por ejemplo, vistas específicas de vSphere para administradores de VMware. La GUI web está actualmente disponible en alemán e inglés.

### Administración web ("WATO")

La herramienta de administración web hace que un sistema basado en Checkmk sea completamente administrable a Navegador web. Esto incluye la administración de usuarios, roles, grupos, períodos de tiempo y más. Los permisos se pueden otorgar de forma granular utilizando un concepto de rol. Para esto se pueden usar los controles de acceso basados en roles existentes (Protocolo ligero de acceso a directorios o LDAP, Active Directory). La WATO funciona basada en reglas, de modo que la configuración sigue siendo intuitiva incluso en entornos complejos, y el esfuerzo necesario para realizarlo es bajo. El descubrimiento y la configuración automáticos, así como la actualización automática del agente aceleran aún más el proceso de configuración. Una API HTTP también se puede utilizar para integrar CMDB para una configuración acelerada.

### Sistema de alerta

Se pueden configurar varios canales de notificación con diferentes reglas para cada usuario. Por ejemplo, los correos electrónicos se pueden activar en cualquier momento del día, pero las notificaciones por SMS se envían solo por problemas importantes durante el horario de servicio. Las notificaciones se pueden configurar para todos o para equipos específicos, por ejemplo, “notifique solo a los administradores de almacenamiento acerca de un disco duro fallido”. Las notificaciones duplicadas se agrupan para que ningún usuario sea notificado dos veces a través de un canal en particular. Además, los usuarios pueden configurar sus propias notificaciones ellos mismos. En entornos distribuidos, las alertas se pueden gestionar de forma centralizada. Para problemas detectados, las acciones se pueden activar automáticamente (control de alarma) a través de scripts.Checkmk incluye integraciones a puertas de enlace de correo electrónico y SMS, así como a soluciones de comunicación y gestión de servicios de TI como Slack , Jira , PagerDuty, OpsGenie , VictorOps y ServiceNow.

### Inteligencia de negocios (BI)

El módulo de BI está integrado en la interfaz gráfica de usuario. Agrega el estado general de los procesos comerciales, su dependencia de aplicaciones complejas y elementos de infraestructura de TI de muchos hosts y servicios individuales de una manera basada en reglas. También se puede usar para representar aplicaciones compuestas por microservicios, que a su vez consisten en módulos e implementaciones de Kubernetes. Además, los peores escenarios pueden simularse en tiempo real y los datos históricos pueden analizarse para comprender las causas de la degradación del rendimiento.

### Consola de eventos

La Consola de Eventos integra el procesamiento de mensajes de registro y SNMP traps en el monitoreo. Se configura a través de un conjunto flexible de reglas y decide si los mensajes entrantes deben descartarse, o cómo deben clasificarse. Puede contar, correlacionar, esperar mensajes, re-escribir mensajes y más. Las entradas similares se pueden agrupar en un solo evento (por ejemplo, múltiples inicios de sesión fallidos) para realizar un seguimiento de los eventos. También tiene un syslog daemon incorporado que recibe mensajes directamente en el puerto 514, y un receptor de SNMP traps que recibe traps en el puerto 162.

### Gráficos de métricas

Las ediciones comerciales de Checkmk utilizan su propio sistema métrico y gráfico. Esto permite que las mediciones de series temporales se analicen durante largos intervalos utilizando gráficos HTML5 interactivos. La resolución máxima es de un segundo. Los datos pueden importarse desde una variedad de fuentes de datos y formatos de métricas (JSON, XML, SNMP, etc.) y almacenarse en el disco de un dispositivo de almacenamiento de datos a largo plazo.
Alternativamente, Graphite o InfluxDB se pueden conectar a través de una interfaz de exportación. Desde la versión 1.5p16 de CEE también hay un complemento disponible para integrar datos directamente desde Checkmk en Grafana para fines de visualización. Checkmk Raw Edition actualmente utiliza PNP4Nagios como su sistema de gráficos.

### Reportes

Los reportes permiten la entrega directa de ficheros en PDF, ad hoc o automáticamente, y a intervalos regulares. Incluye el análisis de disponibilidad durante cualquier periodo, y se puede proporcionar con un solo clic. Los cálculos de disponibilidad pueden excluir tiempos no supervisados, ajustar la resolución o ignorar intervalos cortos. Además de los cálculos de disponibilidad, los informes también incluyen informes de Acuerdo de nivel de servicio (SLA) en los que se pueden monitorear SLA complejos. Los informes solo están disponibles en las versiones comerciales de Checkmk.

### Inventario de hardware / software

El inventario de hardware / software determina el inventario de todo el hardware y software instalado en dispositivos y sistemas. Esto se puede usar, por ejemplo, para monitorear cambios de hardware y software, para verificar la presencia de actualizaciones de seguridad instaladas y para actualizar datos estáticos con parámetros dinámicos (por ejemplo, actualizar las estadísticas actuales de uso del disco en función de los datos de monitoreo). La base de datos de la gestión de configuración (por sus siglas CMDB, específicamente i-doit CMDB) tiene una integración profunda que permite el intercambio de datos CMDB con datos de monitoreo.

## Incidencias

A lo largo de su historia Checkmk, ha presentado una serie de incidencias, de las cuales las más importantes han sido las siguientes:
* Como componente integrado de monitorización en Red Hat Gluster Storage, en julio de 2015 se encontraron las siguientes vulnerabilidades y exposiciones comunes (CVE): CVE-2014-5338, CVE-2014-5339, CVE-2014-5340. Dichas vulnerabilidades permitían por medio de guion de sitios cruzados (XSS) escribir sus propios guiones en formato .mk para futuras ejecuciones arbitrarias de código.