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 simplemente sea accesible, se necesita la ayuda del sistema de destino. Por ejemplo: ¿de qué otra forma podría Checkmk saber cuánto espacio queda libre en el disco de un servidor si ese sistema no le proporciona la información de alguna manera? El componente que proporciona esta información es siempre un software activo: es decir, un agente de monitorización , al que normalmente se le llama simplemente «agente». Un agente recopila datos relevantes para la monitorización de un host a intervalos específicos y los envía al servidor de monitorización.
Para servidores y estaciones de trabajo, Checkmk ofrece sus propios agentes, conocidos 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 otros menos habituales, como OpenVMS. Los agentes son pasivos en modo pull y escuchan en el puerto TCP 6556. Solo al recibir una consulta del servidor Checkmk se activarán estos agentes y responderán con los datos necesarios. En modo push, por otro lado, el agente Checkmk envía periódicamente los datos de monitorización al servidor Checkmk por iniciativa propia.
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. En este artículo puedes aprender a instalar, configurar y ampliar los agentes Checkmk.
Sin embargo, hay situaciones en las que no es necesario instalar un agente para la monitorización, ya que ya hay uno disponible que se puede utilizar. El mejor ejemplo es SNMP: Todos los dispositivos de red gestionables tienen un agente SNMP integrado. Checkmk accede a este agente SNMP y recupera detalles sobre el estado del sistema mediante 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 a través de 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 aparte.
En el caso de un servicio de red, el procedimiento obvio es consultar y supervisar el servicio a través de la red.
Para ello, Checkmk utiliza a veces sus propios complementos y, otras veces, complementos ya existentes.
A esto también se le llama comprobaciones activas.
Por ejemplo, check_http es muy popular para consultar sitios web.
Pero incluso en este caso suele haber un agente adicional en uso 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 realizar la monitorización:

Hasta ahora solo hemos hablado de la monitorización activa, la disciplina estrella de Checkmk. También existe el método inverso: es decir, aquel en el que el propio sistema de destino envía mensajes a la monitorización, por ejemplo, a través de syslog o Traps SNMP. Para estas funciones, Checkmk cuenta con su Consola de eventos, que se describe en un artículo aparte.
2. El agente Checkmk
Para supervisar un servidor o una estación de trabajo, necesitas un pequeño programa que hay que instalar en el host: el agente Checkmk.
Este agente es un sencillo script shell, minimalista, seguro y fácilmente ampliable. En la versión de Checkmk 2.1.0, se añadió un nuevo componente a este script del agente: el Controlador de agentes. El Controlador de agentes se conecta antes 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 en el Receptor del agente, que se ejecuta en el servidor Checkmk.

Esta arquitectura es idéntica en el agente de Linux y en el de Windows, y solo la implementación técnica es específica de cada sistema operativo.
El script del agente se encarga de recopilar los datos de monitorización y ponerlos a disposición del Controlador de agentes. Este script es:
minimalista, ya que 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 Plugins en cualquier lenguaje de programación o de scripting y hacer que el script del agente los ejecute.
El controlador de agentes es el componente del agente encargado de transportar los datos recopilados por el script del agente. En modo pull, escucha en el puerto TCP 6556 las conexiones entrantes desde el 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 habrían podido lograr con el diseño minimalista del script del agente, como el cifrado de la comunicación mediante Transport Layer Security (TLS), la compresión de datos y el cambio 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 hosts que se van a supervisar. Por lo 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 actúa 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, de este modo, los pone a disposición de los fetchers del sitio. En las ediciones comerciales, estos son los Checkmk Fetchers. Por el contrario, en el modo pull, el intercambio de datos se produce directamente entre los fetchers del sitio y el Controlador de agentes sin necesidad de un Receptor del agente.
El cifrado TLS y la compresión de datos se realizan a través del Controlador de agentes y el Receptor del agente. Por este motivo, el servidor Checkmk y el agente Checkmk deben tener al menos la versión 2.1.0. El primer paso tras la instalación es registrar el Controlador de agentes en el Receptor del agente del sitio de Checkmk, lo 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 Checkmk 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 |
Cifrado TLS |
Una vez completado el registro, los datos se intercambian de forma cifrada mediante TLS. |
Todas las ediciones |
Compresión |
Los datos se intercambian de forma comprimida. |
|
Modo pull |
El agente envía los datos cuando lo solicita el site de Checkmk. |
|
Modo push |
El agente envía los datos al site de Checkmk de forma autónoma. |
Checkmk Ultimate |
Configuración individual de agentes |
Con Agent bakery, puedes configurar los agentes de forma individual para un solo host o grupos de hosts, y crear los paquetes de agentes para su instalación. |
Ediciones comerciales |
El paquete de Agent bakery se instala primero de forma manual o mediante un script y, a partir de ahí, se actualiza automáticamente. |
||
El registro del agente en el site de Checkmk y la creación del host se realizan automáticamente. |
Checkmk Ultimate |
3. Descargar el agente desde la página de descarga
Actualmente, el proyecto Checkmk mantiene agentes para once familias diferentes de sistemas operativos. Todos estos agentes son componentes de Checkmk y están disponibles para su descarga a través de la interfaz web del servidor Checkmk. Se accede a estos agentes a través de Setup > Agents.
En
Checkmk Community, 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:

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 Agent bakery. Desde esta página, el elemento de menú «Related» te llevará a las páginas de archivos de agentes, igual que en Checkmk Community.
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 agente con el Controlador de agentes a partir de la versión 2.1.0. La instalación y configuración se describen en detalle en los artículos sobre agentes de Linux y agentes de 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 un Controlador de agentes), están los artículos sobre la monitorización de Linux en modo Legacy y la monitorización de FreeBSD.
4. Agent bakery
4.1. Introducción
Si utilizas una de las ediciones comerciales, puedes crear paquetes de agentes personalizados con Agent bakery.
De esta forma, 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 hosts.
Esto permite una gran flexibilidad gracias al uso de las actualizaciones automáticas de agentes.
Si bien es cierto que el agente Checkmk puede funcionar «tal cual» de inmediato —sin necesidad de configuración y sin Plugins—, en algunos casos sí es necesario configurarlo. Algunos ejemplos:
Restricción del acceso a direcciones IP específicas
Monitorización de bases de datos Oracle (se requiere un Plugin y configuración)
Monitorización de archivos de registro de texto (se requiere un Plugin, nombres de datos y patrones de texto)
Uso del inventario de HW/SW (se requiere un Plugin)
Se puede generar una revisión de «bake» consecutiva para cada proceso de «bake» con el fin de distinguir entre los diferentes procesos. Esto solo es visible en los metadatos del paquete «bake». En Checkmk 2.3.0, esta función está desactivada por defecto para evitar que los agentes «bake» pierdan su firma válida. Si aún así quieres activar la revisión de bake, por ejemplo, para un procesamiento ú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 se mantiene 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, deberías usar la API-REST en lugar de la regla, por ejemplo. |
4.2. Descargar el agente
Puedes acceder a Agent bakery a través de Setup > Agents > Windows, Linux, Solaris, AIX:

Checkmk es compatible con los sistemas operativos Windows, Linux, Solaris y AIX con 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 un archivo «tarball» en formato TGZ que simplemente se descomprime como root en /.
Del mismo modo, hay un archivo tarball disponible para AIX, aunque este no incluye la integración automática en el inetd.
La integración debe realizarse manualmente como una acción puntual.
Para Solaris hay de nuevo el archivo tarball y un paquete PKG.
Si aún no has realizado ninguna configuración para hosts específicos, solo hay una configuración de agente por defecto. En las dos secciones siguientes se explicarán las distintas configuraciones de agente posibles.
Cada configuración de agente tiene un ID explícito: su hash. Los primeros ocho caracteres del hash se muestran en la GUI. Este hash formará parte de la versión del paquete y se incluirá 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 reconoce que se trata de un paquete diferente y realiza una actualización. El número de versión de Checkmk no bastaría para distinguirlo en este caso.
Los paquetes precompilados para Linux y Windows se instalan de la misma manera que los paquetes disponibles en la página de descarga de Checkmk.
4.3. Configuración mediante reglas
La configuración del agente se puede modificar —como suele ser habitual en Checkmk— mediante reglas. Estas te ofrecen la posibilidad de equipar diferentes hosts con distintos ajustes o Plugins. El botón «Agent rules» te lleva a una página que muestra la lista de todos los conjuntos de reglas que afectan a los agentes:

Tomemos el siguiente ejemplo: quieres limitar la lista de direcciones IP a las que se les 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:

Deja sin cambiar los valores por defecto de la caja «Conditions» para que esta regla se aplique a todos los hosts. Guarda la nueva regla.
4.4. Las configuraciones del agente
Después de guardar, vuelve a la página «Windows, Linux, Solaris, AIX».
El botón «
» garantiza que el agente se actualice por completo.
El resultado: ahora tienes dos configuraciones individuales:

En la columna «Agent type» puedes ver a qué hosts está asignada cada configuración. Por motivos de espacio, es posible que esta lista no esté completa.
Vanilla (factory settings) |
Los paquetes de agentes contienen solo la configuración por defecto y, por lo tanto, ninguna regla de agente individual. |
Folders |
Los paquetes de agentes contienen todas las reglas de agente en las que no se definen condiciones para los hosts y que se aplican a las carpetas enumeradas. |
Hosts |
Los paquetes de agentes 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 lo tanto, la nueva configuración del agente se aplica a la carpeta Main y a localhost, que actualmente es el único host del site.
Cuantas más reglas específicas para hosts distribuyes, más variantes diferentes de agentes se crearán. Agent bakery se encarga de crear solo aquellas configuraciones que sean 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:

¿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 agentes, no tienes que hacer nada más.
4.5. Ampliación mediante Plugins
Muchas reglas tienen que ver con la instalación de diversos Plugins. Estos amplían el agente para la monitorización de componentes bastante específicos. La mayoría de ellos son aplicaciones especiales, como bases de datos, por ejemplo. Junto a la regla que activa un Plugin, también encontrarás los ajustes para configurarlo. Aquí, por ejemplo, está la regla para la monitorización de MySQL:

4.6. Archivos de configuración
Ten cuidado de no modificar manualmente los archivos de configuración generados por 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 habilitar el registro de los procesos de Bakery en «Agent bakery logging».
Los resultados se pueden encontrar en el archivo «~/var/log/agent_bakery.log».

Si el registro no está habilitado, solo verás esta información si compilas agentes con cmk --bake-agents -v en la línea de comandos.
5. ¿Cuándo hay que actualizar un agente?
Independientemente de si supervisas solo unos pocos —o incluso miles de hosts—, actualizar el agente Checkmk en todos los hosts siempre es una operación de gran envergadura. La actualización automática del agente en las ediciones comerciales es, sin embargo, de gran ayuda. No obstante, solo deberías actualizar el agente cuando:
la actualización resuelva un problema que te afecte, o
la actualización incluye nuevas funciones necesarias.
Para que esto sea posible, en Checkmk se aplica una regla general: Las versiones más recientes de Checkmk pueden, en principio, manejar la salida de 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 plugins de este último no puedan interpretar correctamente la salida del agente. En tal caso, los servicios afectados pasan a un estado UNKNOWN:

Aunque la salida de la imagen anterior sugiera lo contrario, por favor, no envíes un informe de fallos en ese caso.
6. Diagnóstico de errores
6.1. Comprobación del agente desde la línea de comandos
Un agente correctamente instalado se puede consultar 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á realizando la monitorización activa del agente.
De esta manera, puedes estar seguro de que el agente aceptará la dirección IP del servidor.
Algunos comandos adecuados son, por ejemplo, telnet y netcat (o nc).
La salida de 16 indica que la conexión establecida a través del puerto TCP 6556 se ha realizado correctamente y que ahora puede tener lugar el protocolo de enlace 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á cifrada con TLS y no se mostrará ninguna salida del agente.
Para obtener 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 cifrada (como en el modo Legacy Pull) o está y permanece sin cifrar (como en el modo Legacy), este comando te mostrará la salida completa sin cifrar del agente en lugar del 16 (del que solo se muestran las primeras líneas a continuación):
La salida siempre comienza con la línea <<<check_mk>>>.
Las líneas incluidas en <<< y >>> se denominan títulos de sección.
Estos 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 objeto de monitorización, también puedes recuperar los datos con el comando cmk -d.
Este comando utiliza la dirección IP configurada en Setup, tiene en cuenta un posible cambio en el número de puerto y también cualquier agente especial que pueda estar presente:
Con las opciones --debug -v puedes obtener además información de depuración.
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:
Para obtener información sobre más comandos de diagnóstico que se pueden ejecutar 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 Checkmk a través de la interfaz web. Esto tiene en cuenta todos los ajustes y también es compatible con dispositivos SNMP y aquellos consultados mediante agentes especiales. De hecho, Checkmk siempre intenta realizar consultas simultáneamente a través del puerto TCP 6556 y SNMP.
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»:

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