Checkmk
to checkmk.com
Important

This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved.

1. Introducción

Para que un sistema de monitorización reciba más información de un endpoint, aparte de que sea simplemente accesible, se necesita la ayuda del sistema de destino. Por ejemplo, ¿cómo puede saber Checkmk lo lleno que está el volumen de almacenamiento de un servidor sin que ese sistema proporcione la información de alguna manera? El componente que proporciona esta información es siempre una pieza activa de software, es decir, un agente de monitorización, al que normalmente se denomina simplemente agente. Un agente recoge datos relevantes para la monitorización de un host a intervalos especificados y transmite esos datos al servidor de monitorización.

Para servidores y estaciones de trabajo, Checkmk proporciona sus propios agentes, que se conocen como agentes Checkmk. Los agentes Checkmk están disponibles para una amplia variedad de sistemas operativos, desde los más comunes, como Windows y Linux, hasta los más exóticos, como OpenVMS. Los agentes son pasivos en modo pull y escuchan en el puerto TCP 6556. Sólo al recibir una consulta del servidor Checkmk se activarán estos agentes y responderán con los datos requeridos. En cambio, en modo push, el agente Checkmk envía periódicamente los datos de monitorización al servidor Checkmk por sí mismo.

Todos los agentes Checkmk se pueden encontrar a través de la interfaz web en el menú Setup. Desde allí puedes descargar los agentes e instalarlos en el sistema de destino. Puedes aprender a instalar, configurar y ampliar los agentes Checkmk en este artículo.

Sin embargo, hay situaciones en las que no es necesario instalar un agente para la monitorización, puesto que ya existe uno que se puede utilizar. El mejor ejemplo es SNMP: todos los dispositivos de red y appliance gestionables tienen un agente SNMP integrado. Checkmk accede a este agente SNMP y recupera detalles sobre el estado del sistema con consultas activas (GET).

Sin embargo, algunos sistemas no permiten la instalación de un agente ni admiten SNMP de forma utilizable. En su lugar, ofrecen interfaces de programación de aplicaciones para la gestión, las llamadas API, basadas en Telnet, SSH o HTTP/XML. Checkmk consulta estas interfaces mediante los llamados agentes especiales que se ejecutan en el servidor Checkmk.

Por último, la monitorización de servicios de red como HTTP, SMTP o IMAP es un caso en sí mismo. En el caso de un servicio de red, el procedimiento obvio es consultar y monitorizar el servicio a través de la red. Para ello, Checkmk utiliza a veces sus propios plugins, a veces ya existentes, que también se denominan comprobaciones activas. Por ejemplo, check_http es muy popular para consultar sitios web. Pero incluso en este caso suele utilizarse un agente adicional que proporciona datos complementarios del servidor a la monitorización.

La siguiente imagen muestra las distintas formas en que Checkmk puede acceder a los sistemas que se van a monitorizar:

Illustration of the ways Checkmk accesses monitored systems.

Hasta ahora sólo hemos hablado de la monitorización activa, la disciplina estrella de Checkmk. También existe el método inverso: es decir, aquél por el que el propio sistema objetivo envía mensajes a la monitorización, por ejemplo, mediante syslog o traps SNMP. Para estas funciones, Checkmk dispone de su Consola de eventos, que se describe en su propio artículo.

2. El agente Checkmk

Para la monitorización de un servidor o estación de trabajo, necesitas un pequeño programa que debe instalarse en el host: el agente Checkmk.

Este agente es un simple script shell minimalista, seguro y fácilmente ampliable. En la versión de Checkmk 2.1.0, se añadió un nuevo componente, el Controlador del agente, a este script del agente. El Controlador del agente se conecta aguas arriba del script del agente, consulta el script del agente y se comunica con el servidor Checkmk en su lugar. Para ello, el controlador se registra con el Receptor del agente, que se ejecuta en el servidor Checkmk.

Illustration of the communication between an agent and a site.
Interacción de los componentes de software

Esta arquitectura es idéntica en el agente Linux y en el agente Windows, y sólo la implementación técnica es específica de cada sistema operativo.

El script del agente se encarga de recoger los datos de monitorización y ponerlos a disposición del Controlador de agentes. Este script es

  • minimalista, porque utiliza un mínimo de RAM, CPU, espacio en disco y recursos de red.

  • seguro, porque no permite ningún acceso desde la red.

  • fácilmente ampliable, porque puedes escribir Plugin en cualquier lenguaje de programación o scripting y hacer que sean ejecutados por el script del agente.

El Controlador de agentes es el componente del agente responsable de transportar los datos recogidos por el script del agente. En modo pull, escucha en el puerto TCP 6556 las conexiones entrantes del site de Checkmk y consulta al script del agente.

La arquitectura de software del agente con el Controlador de agentes es el requisito previo para ofrecer nuevas funciones, que no se podrían haber conseguido con el diseño minimalista del script del agente, como la encriptación de la comunicación mediante Transport Layer Security (TLS), la compresión de datos y la inversión de la dirección de la comunicación del modo pull al modo push.

En el modo pull, el servidor Checkmk inicia la comunicación y solicita los datos al agente. En el modo push, la iniciativa parte del agente. El modo push es necesario para una configuración basada en la nube y en algunas redes compartimentadas. En ambos casos, el servidor Checkmk no puede acceder a la red donde se encuentran los host que hay que monitorizar. Por tanto, el agente transmite automáticamente los datos al servidor Checkmk de forma periódica.

El Receptor del agente es el componente del servidor Checkmk que sirve como endpoint general para la comunicación del Controlador de agentes, por ejemplo, para registrar la conexión y para recibir los datos enviados por el Controlador de agentes en el modo push. En el modo push, el Receptor del agente almacena los datos recibidos en el sistema de archivos y los pone a disposición de los fetchers del site, que en las ediciones comerciales son los Checkmk Fetcher. En cambio, en el modo pull, el intercambio de datos tiene lugar directamente entre los fetchers del site y el Controlador de agentes, sin necesidad de un Receptor de agentes.

El cifrado TLS y la compresión de datos se realizan a través del Controlador de agentes y el Receptor del agente, es decir, el servidor Checkmk y el agente deben tener al menos la versión 2.1.0. El primer paso tras la instalación es el registro del Controlador de agentes con el Receptor del agente del site Checkmk, que establece una relación de confianza entre estos dos componentes. El cifrado TLS de la comunicación se configurará durante este registro. Para el modo push, el servidor Checkmk y el agente deben tener al menos la versión 2.2.0.

La siguiente tabla resume las distintas funciones del agente Checkmk y muestra en qué ediciones de Checkmk están disponibles estas funciones:

Función Descripción Disponibilidad

Registro

Se establece la relación de confianza entre el Controlador de agentes en el host y el Receptor del agente en el site de Checkmk.

Todas las ediciones a partir de la versión 2.1.0

Encriptación TLS

Tras un registro correcto, los datos se intercambian de forma encriptada mediante TLS.

Todas las ediciones a partir de la versión 2.1.0

Compresión

Los datos se intercambian comprimidos.

Todas las ediciones a partir de la versión 2.1.0

Modo pull

El agente envía los datos cuando lo solicita el site Checkmk.

Todas las ediciones

Modo push

El agente envía los datos al site de Checkmk de forma autónoma.

Checkmk Cloud a partir de la versión 2.2.0, Checkmk MSP a partir de 2.3.0

Configuración individual del agente

En Agent bakery, los agentes pueden configurarse individualmente para un host o para grupos de hosts, y los paquetes de agentes pueden crearse para su instalación.

Ediciones comerciales

Actualizadores automáticos de agentes

El paquete de la Agent bakery se instala primero manualmente o mediante script y se actualiza automáticamente a partir de entonces.

Ediciones comerciales

Creación automática de hosts

El registro del agente en el site de Checkmk y la creación del host se hacen automáticamente.

Checkmk Cloud a partir de la versión 2.2.0, Checkmk MSP a partir de la versión 2.3.0

3. Descarga del agente desde la página de descarga

En el proyecto Checkmk se mantienen actualmente agentes para once familias de sistemas operativos diferentes. Todos estos agentes son componentes de Checkmk y están disponibles para su descarga a través de la interfaz web del servidor Checkmk. A estos agentes se accede a través de Setup > Agents.

En Checkmk Raw, los elementos de menú Linux, Windows y Other operating systems te llevarán directamente a las páginas de descarga donde encontrarás los agentes preconfigurados y los plugins de agente, en el siguiente ejemplo a la página de descarga de Linux, Solaris, AIX:

List of Linux agents for download in Checkmk Raw.

En las ediciones comerciales, el elemento de menú Windows, Linux, Solaris, AIX te lleva a una página que también te da acceso a la Agent bakery. Desde esta página, el elemento de menú Related te llevará a las páginas de los archivos de agente como en Checkmk Raw.

Los agentes empaquetados para Linux (en formatos de archivo RPM y DEB) y para Windows (en formato de archivo MSI) se encuentran justo en la primera caja de la página de descarga correspondiente. En estos paquetes de software encontrarás el nuevo agente con Controlador de agentes desde la versión 2.1.0. La instalación y configuración se describen detalladamente en los artículos sobre agentes para Linux y agentes para Windows.

En la caja Agents encontrarás los scripts del agente adecuados para los distintos sistemas operativos. Para los sistemas operativos en los que el agente debe configurarse en modo Legacy (es decir, sin Controlador de agentes), están los artículos sobre Monitorización de Linux en modo Legacy y Monitorización de FreeBSD.

4. El Agent bakery

4.1. Introducción

Si utilizas una de las ediciones comerciales, puedes empaquetar agentes personalizados con la Agent bakery. De este modo, además de los agentes existentes, también puedes crear (o "hornear") paquetes de agentes que contengan configuraciones personalizadas y plugins adicionales u opcionales. Puedes instalar estos paquetes con un solo comando. Estos paquetes son ideales para la distribución e instalación automáticas. Incluso puedes crear agentes personalizados para carpetas o grupos específicos de host. Esto permite una gran flexibilidad mediante el uso de las actualizaciones automáticas de agentes.

Si bien es cierto que el agente Checkmk puede funcionar "desnudo" inmediatamente -sin necesidad de configuración, y sin plugins-, en algunos casos es necesario configurar el agente. Algunos ejemplos:

  • Restricción de acceso a determinadas direcciones IP

  • Monitorización de bases de datos Oracle (se necesita un Plugin y configuración)

  • Monitorización de archivos de registro de texto (se necesita un Plugin, nombres de datos y un patrón de texto)

  • Utilización del inventario de hardware/software (se requiere un Plugin)

Tip

Se puede generar una revisión de horneado consecutiva para cada proceso de horneado, para distinguir entre distintos procesos de horneado. Esto sólo es visible en los metadatos del paquete horneado. Desde Checkmk 2.3.0, esta función está desactivada por defecto para evitar que los agentes horneados pierdan su firma válida. Si aún así quieres activar la revisión de horneado, por ejemplo para un proceso único en un administrador de paquetes, activa la opción Setup > Global settings > Setup > Apply bake revision. Y si está activada: Para los agentes bakeados automáticamente más tarde mediante la regla Automatically create monitoring agents, la revisión anterior permanece en cualquier caso y no se incrementa más - de nuevo, para no perder la firma. Si necesitas agentes bakeados automáticamente con revisiones consecutivas, debes utilizar la API-REST en lugar de la regla, por ejemplo.

4.2. Descargar el agente

Puedes acceder al Agent bakery a través de Setup > Agents > Windows, Linux, Solaris, AIX:

Entry page to the Agent Bakery.

Checkmk es compatible con los sistemas operativos Windows, Linux, Solaris y AIX con la Agent bakery. Para Linux puedes elegir entre los formatos de paquete RPM (para sistemas basados en Red Hat Enterprise Linux (RHEL), SLES) y DEB (para Debian, Ubuntu), así como el llamado "tarball" en formato de archivo TGZ que simplemente se descomprime como root en /. Asimismo, para AIX existe un tarball, aunque no incluye la integración automática en inetd. La integración debe realizarse manualmente como acción puntual. Para Solaris existe de nuevo el tarball y un paquete PKG.

En las dos secciones siguientes se explican las distintas configuraciones posibles del agente.

Cada configuración de agente tiene un identificador explícito: su hash. Los ocho primeros caracteres de un hash se muestran en la GUI. Este hash formará parte de la versión del paquete y estará incrustado en el nombre del archivo del paquete. Cada vez que cambies algo en la configuración de un paquete o actualices Checkmk, el hash del paquete también cambiará. De esta forma, el administrador de paquetes del sistema operativo reconocerá que se trata de un paquete diferente y realizará una actualización. El número de versión de Checkmk no bastaría para distinguirlo en este caso.

Los paquetes horneados para Linux y Windows se instalan del mismo modo que los paquetes disponibles en la página de descarga de Checkmk.

4.3. Configuración mediante reglas

La configuración del agente puede modificarse -como suele ocurrir en Checkmk- mediante reglas. Éstas te ofrecen la posibilidad de equipar distintos host con configuraciones o Plugin diferentes. El botón Agent rules te lleva a una página en la que se enumeran todos los conjuntos de reglas que afectan a los agentes:

List of rules for the agents.

Tomemos el siguiente ejemplo: deseas limitar la lista de direcciones IP a las que se permite acceder al agente. Para ello, selecciona el conjunto de reglas Generic Options > Allowed agent access via IP address (Linux, Windows). Introduce una o varias direcciones IP como valor de la regla:

Rule to restrict IP addresses to access the agent.

No modifiques los valores por defecto de la caja Conditions para que esta regla se aplique a todos los host. Guarda la nueva regla.

4.4. Configuraciones del agente

Después de guardar, vuelve a la página Windows, Linux, Solaris, AIX. El botón garantiza que el agente estará recién configurado. El resultado: ahora tienes dos configuraciones individuales:

List with two agent configurations to download.

En la columna Agent type puedes leer a qué host está asignada la configuración respectiva. Por razones de espacio, esta lista puede no estar completa.

Vanilla (factory settings)

Los paquetes de agente sólo contienen la configuración por defecto y, por tanto, ninguna regla de agente.

Folders

Los paquetes de agente contienen todas las reglas de agente en las que no se definen condiciones para los host y que se aplican a las carpetas de la lista.
Los paquetes de agentes se crean específicamente para una carpeta si el atributo Bake agent packages se establece en Bake a generic agent package for this folder en la entrada Folder properties. Este atributo sólo se aplica a la carpeta y no se hereda.
Esta entrada es útil para crear agentes para hosts que aún no existen en Checkmk. La carpeta puede incluso estar vacía para crear allí hosts automáticamente más adelante. Por defecto, los paquetes de agente sólo se crean para la carpeta Main (o root folder).

Hosts

Los paquetes de agente contienen todas las reglas de agente que se aplican a los hosts de la lista.

En el ejemplo anterior, la regla Allowed agent access via IP address (Linux, Windows) se creó sin condiciones para los hosts. Por tanto, la nueva configuración del agente se aplica a la carpeta Main y a localhost, actualmente el único host del site.

Cuantas más reglas específicas para hosts despliegues, más variantes diferentes de agentes se construirán. El Agent bakery tiene cuidado de construir sólo aquellas configuraciones que son utilizadas por al menos una de las carpetas o hosts existentes.

Por cierto, también puedes acceder cómodamente a los paquetes de agentes de un host a través de las propiedades del host, haciendo clic en el host en Setup > Hosts > Hosts y seleccionando Monitoring agent en el menú Hosts:

List of agents for a host to download.

¿Por qué se proporcionan paquetes para todos los sistemas operativos para cada host? La respuesta es muy sencilla: si no hay ningún agente instalado en un sistema, Checkmk no puede, por supuesto, reconocer el sistema operativo. En cualquier caso, una vez activadas las actualizaciones automáticas de los agentes, no necesitas hacer nada más.

4.5. Ampliación mediante Plugins

Muchas reglas tienen que ver con la instalación de varios plugins. Éstos amplían el agente para la monitorización de componentes bastante específicos. La mayoría son aplicaciones especiales, como bases de datos, por ejemplo. Junto a la regla que activa un plugin también encontrarás los ajustes para configurar el plugin. Aquí, por ejemplo, está la regla para monitorizar MySQL:

Rule for the MySQL plug-in of the agent.

4.6. Archivos de configuración

Ten cuidado de no modificar manualmente los archivos de configuración generados por el Agent bakery en el sistema de destino. Aunque los cambios manuales funcionarán por ahora, la próxima vez que actualices el agente, los cambios se perderán de nuevo. Sin embargo, es posible instalar Plugins y archivos de configuración adicionales sin problemas.

4.7. Activar el registro

En la configuración global puedes activar el registro para los procesos de panadería en Agent bakery logging. Los resultados se encuentran en el archivo ~/var/log/agent_bakery.log.

Option to enable bakery logging.

Sin el registro activado, sólo verás esta información si horneas agentes con cmk --bake-agents -v en la línea de comandos.

5. ¿Cuándo se debe actualizar un agente?

Independientemente de que supervises sólo un puñado -o incluso miles de host-, actualizar el agente Checkmk en todos los host es siempre una operación de mayor envergadura. No obstante, la actualización automática del agente en las ediciones comerciales es una gran ayuda. En realidad, sólo deberías actualizar el agente cuando

  • la actualización resuelva un problema que te afecte, o

  • la actualización incluya nuevas funciones necesarias.

Para que esto sea posible, se aplica una regla general en Checkmk: las versiones más recientes de Checkmk pueden manejar básicamente la salida de los agentes más antiguos.

Importante: lo contrario no es necesariamente cierto. Si la versión de Checkmk de un agente es más reciente que la del servidor de monitorización, es posible que los check plugin de éste no puedan interpretar correctamente la salida del agente. En tal caso, los servicios afectados pasan a un estado DESCONOCIDO:

List of services in UNKNOWN status due to a failed check.

Aunque la salida de la imagen anterior sugiera lo contrario, no envíes un informe de fallos en tal caso.

6. Diagnóstico de errores

6.1. Comprobación del agente a través de la línea de comandos

Un agente correctamente instalado puede consultarse muy fácilmente desde la línea de comandos. La mejor forma de hacerlo es directamente desde el site de Checkmk que también está monitorizando activamente al agente. De esta forma puedes estar seguro de que la dirección IP del servidor será aceptada por el agente. Los comandos adecuados son, por ejemplo, telnet y netcat (o nc).

OMD[mysite]:~$ echo | nc 10.1.1.2 6556
16

La salida 16 indica que la conexión establecida a través del puerto TCP 6556 se ha realizado correctamente y que ya puede tener lugar el protocolo TLS. El agente se ha registrado en el site de Checkmk a través del Controlador de agentes, por lo que la comunicación está encriptada mediante TLS y no se mostrará ninguna salida del agente. Para más detalles sobre el registro, consulta los artículos sobre el agente de Linux y el agente de Windows.

Si la comunicación entre el agente y el servidor Checkmk sigue sin estar encriptada (como en el modo Legacy Pull) o está y sigue sin estar encriptada (como en el modo Legacy), este comando te dará la salida completa del agente sin encriptar en lugar de la 16 (de la que a continuación sólo se muestran las primeras líneas):

OMD[mysite]:~$ echo | nc 10.1.1.2 6556
<<<check_mk>>>
Version: 2.1.0p1
AgentOS: linux
Hostname: mycmkserver
AgentDirectory: /etc/check_mk
DataDirectory: /var/lib/check_mk_agent
SpoolDirectory: /var/lib/check_mk_agent/spool
PluginsDirectory: /usr/lib/check_mk_agent/plugins

La salida siempre comienza con la línea <<<check_mk>>>. Las líneas incluidas en <<< y >>> se denominan títulos de la sección. Éstos dividen la salida del agente en secciones. Cada sección contiene información relacionada y suele ser simplemente la salida de un comando de diagnóstico. La sección check_mk desempeña un papel especial. Contiene información general sobre el agente como, por ejemplo, su número de versión.

Si el host ya está siendo monitorizado, también puedes obtener los datos con el comando cmk -d. Éste utiliza la dirección IP configurada en Setup, permite un número de puerto posiblemente reconfigurado, y también cualquier agente especial que pueda estar presente: Con las opciones --debug -v puedes obtener además alguna información de depuración.

OMD[mysite]:~$ cmk -d mycmkserver
<<<check_mk>>>
Version: 2.1.0p1

Si la monitorización ya se está ejecutando regularmente para el host en cuestión, siempre se puede encontrar una copia actual de la salida en el directorio del site ~/tmp/check_mk/cache:

OMD[mysite]:~$ cat tmp/check_mk/cache/mycmkserver
<<<check_mk>>>
Version: 2.1.0p1
Tip

Para obtener información sobre más comandos de diagnóstico que pueden ejecutarse en el host del agente, consulta los artículos sobre el agente de Linux y el agente de Windows.

6.2. Probar el agente a través de la interfaz web

También puedes realizar un diagnóstico del agente a través de la interfaz web. Ésta tiene en cuenta todos los ajustes y también admite dispositivos SNMP y los que se consultan mediante agentes especiales. En efecto, Checkmk siempre intenta realizar la consulta a través del puerto TCP 6556 y SNMP simultáneamente.

Puedes acceder a la prueba de conexión a través de las propiedades del host: En la página Properties of host, selecciona Host > Connection tests en el menú, e inicia la prueba haciendo clic en Run tests:

Result of the connection test to a host.

Puedes probar bastantes de estos ajustes (por ejemplo, la comunidad SNMP) de inmediato, y guardarlos cuando tengas éxito.

En esta página