![]() |
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
El mecanismo piggyback existe desde los primeros días de Checkmk, como parte de la monitorización de VMware. Se trata de una situación en la que es necesario consultar datos de un host concreto porque los datos sólo se encuentran en ese host (por ejemplo, de un sistema host ESX o del vCenter), pero en la monitorización los datos se refieren a un host completamente distinto (una máquina virtual, por ejemplo).
Esto no puede realizarse con el mecanismo normal de Checkmk, porque éste asigna automáticamente los datos y servicios que obtiene de un host. También sería muy poco práctico para una monitorización que toda la información de todas las máquinas virtuales apareciera siempre directamente en el host ESX o incluso en el vCenter.
El término "piggyback" describe el proceso por el que los datos de monitorización del host B se piggyback (por así decirlo) con los datos consultados del host A.
Hoy en día, el piggyback se utiliza en muchos otros Plugins de monitorización, por ejemplo cuando se monitoriza
Además de para entornos de virtualización, el mecanismo piggyback también puede utilizarse para la monitorización de dispositivos móviles o la monitorización del clima en el centro de datos (MQTT). Como las interfaces de consulta son muy sencillas, es muy fácil utilizar el mecanismo piggyback por ti mismo. Puedes utilizarlo, por ejemplo, al implementar tus propios check plugin para mapear datos de una fuente a cualquier otro host.
2. El principio piggyback
El principio básico del piggyback funciona como se muestra en el siguiente diagrama: el host A no sólo tiene sus propios datos de monitorización, sino también los de otros hosts -o, más en general, los de otros objetos-. Por ejemplo, un host ESX registra el estado y muchas métricas actuales de cada una de sus máquinas virtuales (VM). En este contexto, a veces se denomina host origen a este host A.
Si Checkmk recupera ahora los datos de monitorización de A en sus intervalos regulares de un minuto -ya sea del agente Checkmk normal o de un agente especial a través de la API de un fabricante-, en la respuesta también recibe datos de informes especialmente marcados de los otros host/objetos B, C, etc. Estos datos piggyback se colocan en archivos del servidor Checkmk para su posterior procesamiento. Los host B, C, etc. se denominan host piggyback.
Si Checkmk necesita más tarde los datos de monitorización de B o C, ya están en los archivos locales y se pueden procesar directamente sin tener que consultar a un agente:

También es posible y útil combinar la monitorización normal y la piggyback. Tomemos de nuevo el ejemplo de VMware: puede que hayas instalado un agente Checkmk en tu VM B que evalúa información local de la VM que no conoce el host ESX (por ejemplo, procesos que se ejecutan en la VM). En este caso, no sólo se consultará al agente , sino que sus datos se combinarán con los datos piggyback recibidos del host A:

3. Piggyback en la práctica
3.1. Configuración del piggyback
Primero las buenas noticias: el mecanismo piggyback suele funcionar de forma totalmente automática:
Si se detectan datos piggyback de otros host al consultar A, se guardan automáticamente para su posterior evaluación.
Si se encuentran datos piggyback de otro host al consultar B, se utilizarán automáticamente.
Sin embargo, como es habitual en Checkmk, todo es configurable. En concreto, en las propiedades de un host (como el host B), en la caja Monitoring agents, puedes establecer cómo debe reaccionar ante los datos piggyback existentes o ausentes:

El valor por defecto es Use piggyback data from other hosts if present. Si están disponibles, se utilizan los datos piggyback, y si no hay ninguno, el host sólo utiliza sus "propios" datos de monitorización.
Con el ajuste Always use and expect piggyback data fuerzas el proceso de los datos piggyback. Si faltan datos o no están actualizados, el servicio Check_MK emitirá una advertencia.
Y con Never use piggyback data cualquier dato piggyback encontrado simplemente se ignora - una configuración que sólo necesitarás en casos excepcionales.
3.2. Los host deben estar presentes
Por supuesto, para que un host procese datos piggyback, el propio host debe estar presente en la monitorización. En el ejemplo de ESX, esto significa que también debes tener tus máquinas virtuales como hosts en Checkmk, para que se monitoricen realmente.
En las ediciones comerciales, puedes automatizar esto utilizando la configuración dinámica y crear automáticamente hosts para los que haya datos piggyback disponibles.
3.3. Nombres del host y sus asignaciones
En los esquemas anteriores era de algún modo lógico que los datos del objeto B se asignaran al host B en la monitorización, pero ¿cómo funciona exactamente?
Con el mecanismo piggyback la asignación siempre utiliza un nombre. El agente (especial) escribe un nombre de objeto para cada conjunto de datos piggyback. En el caso de ESX, por ejemplo, el nombre de la máquina virtual. Algunos plugins -como Docker-también tienen varias opciones para lo que debe utilizarse como nombre.
Nota: Los datos piggyback de hosts cuyos nombres empiezan por un punto no se procesan en Checkmk. Esto se aplica, por ejemplo, a nombres como .
, .hostname
o .hostname.domain.com
. Para incluir estos hosts en la monitorización, los nombres del host deben cambiarse como se describe.
Para que el mapeo funcione correctamente, el nombre del host que coincida en Checkmk debe ser, por supuesto, idéntico, incluyendo mayúsculas y minúsculas.
Pero, ¿qué ocurre si los nombres de los objetos de los datos piggyback son inadecuados o indeseables para la monitorización? Son inadecuados, por ejemplo, los nombres de host piggyback que constan sólo de un punto o empiezan por un punto, como .myhostname
, ya que no se procesan en Checkmk. Existe un conjunto de reglas especial Hostname translation for piggybacked hosts, que encontrarás en el Menú de configuración, en Setup > Agents > Agent access rules.
Para configurar un cambio de nombre tendrás que hacer dos cosas:
Crear una regla y establecer la condición para acceder al host de origen, es decir, al host A.
Crea un valor de asignación de nombre adecuado en la regla.
Aquí tienes un ejemplo del valor en una regla. Se configuran dos cosas: en primer lugar, todos los nombres del host de los datos piggyback se convierten a minúsculas. A continuación, los dos host vm0815
o vm0816
también se convierten a mylnxserver07
o mylnxserver08
del host Checkmk:

Más flexible es el método que utiliza expresiones regulares, que se encuentra en Multiple regular expressions. Es útil si es necesario renombrar muchos host y se hace según un esquema específico. Procede como sigue:
Activa la opción Multiple regular expressions.
Añade una entrada de traducción con el botón Add expression - aparecerán dos campos.
En el primer campo -Regular expression- introduce una expresión regular que coincida con el nombre del objeto original y que contenga al menos un subgrupo - es decir, una subexpresión encerrada entre paréntesis. Para una buena explicación de estos grupos , consulta el artículo sobre expresiones regulares.
En Replacement especifica un esquema para el nombre del host de destino deseado en el que los valores que quedaron "atrapados" con los subgrupos se sustituirán por
\1
,\2
, etc.
Un ejemplo de expresión regular sería, por ejemplo vm(.*)-local
. El valor sustitutivo myvm\1
traduciría entonces el nombre vmharri-local
en myvmharri
.
3.4. Datos piggyback obsoletos
Si tu red cambia, los datos piggyback también pueden cambiar. Esto plantea nuevas preguntas. ¿Cómo reacciona la monitorización si no se puede acceder a un host? ¿Qué ocurre si los datos piggyback quedan obsoletos, por ejemplo porque el objeto deja de estar disponible temporalmente -o incluso permanentemente-? ¿Todos los datos piggyback se tratan de la misma manera o hay diferencias? Como ocurre con muchos otros temas en Checkmk, el comportamiento aquí también es cuestión de configuración y, por tanto, de reglas. Con la regla Processing of piggybacked host data, que encontrarás en Setup > Agents > Agent access rules, puedes establecer varias opciones.
En la sección Processing of piggybacked host data introduces los detalles realmente interesantes para procesar los datos piggyback.

Checkmk te facilita el trabajo a la hora de gestionar los datos piggyback. Entre otras cosas, elimina automáticamente todos los host/objetos para los que no hay (o ya no hay) datos piggyback suministrados por un host de origen. Con la opción Keep hosts while piggyback source sends piggyback data only for other hosts especificas el periodo de tiempo tras el cual se eliminan los archivos afectados con datos piggyback. Asegúrate de que este periodo es al menos tan largo como el intervalo de check de los host piggyback.
Utiliza las dos opciones de Set period how long outdated piggyback data is treated as valid para definir durante cuánto tiempo deben seguir considerándose válidos los datos piggyback existentes si el host ya no suministra datos nuevos. Una vez transcurrido el periodo definido, los servicios basados en los datos piggyback se muestran como obsoletos. Define también el estado del servicio Check_MK durante este periodo. Puedes utilizarlo para evitar avisos innecesarios, sobre todo si se producen repetidas interrupciones de la conexión a corto plazo.
Una vez que hayas definido el tratamiento de los datos piggyback en general, puedes definir un tratamiento separado (según el mismo esquema) para host individuales en Exceptions for piggybacked hosts utilizando las opciones descritas.
Por último, debes especificar siempre el nombre del host de origen en la opción Explicit hosts de Conditions.
4. La tecnología de este proceso
4.1. Transporte de los datos piggyback
Como se ha descrito anteriormente, los datos piggyback también se transportan a otros hosts con la salida del agente del host de origen. La salida del agente Checkmk es un formato simple basado en texto, que se muestra en el artículo sobre agentes de monitorización.
La novedad es que se permite una línea en la salida que empiece por <<<<
y termine por >>>>
. En medio hay un nombre del host. Todos los datos de monitorización posteriores que empiecen por esta línea se asignan entonces a este host. He aquí un extracto de ejemplo que asigna la sección <<<esx_vsphere_vm>>>
al host 316-VM-MGM
:
<<<<316-VM-MGM>>>>
<<<esx_vsphere_vm>>>
config.datastoreUrl url /vmfs/volumes/55b643e1-3f344a10-68eb-90b11c00ff94|uncommitted 12472944334|name EQLSAS-DS-04|type VMFS|accessible true|capacity 1099243192320|freeSpace 620699320320
config.hardware.memoryMB 4096
config.hardware.numCPU 2
config.hardware.numCoresPerSocket 2
guest.toolsVersion 9537
guest.toolsVersionStatus guestToolsCurrent
guestHeartbeatStatus green
name 316-VM-MGM
Se puede utilizar una línea con el contenido <<<<>>>>
para finalizar esta asignación. Cualquier salida posterior pertenece de nuevo al host de origen.
Al procesar la salida del agente, Checkmk extrae las partes destinadas a otros hosts y las coloca en archivos bajo ~/tmp/check_mk/piggyback
. Debajo de éste hay un subdirectorio para cada host de destino (por ejemplo, para cada VM) -es decir, si nos ceñimos a nuestro ejemplo con el nombre B
. En este subdirectorio habrá entonces un archivo separado con los datos reales de cada host de origen. Sus nombres serían A
en nuestro ejemplo. ¿Por qué es esto tan complicado? Bueno -un host puede de hecho obtener datos piggyback de múltiples hosts, por lo que un único archivo no sería suficiente.
Consejo: Si tienes curiosidad por saber qué aspecto tienen los datos piggyback, busca la salida del agente de los hosts de tu sitio de monitorización en el directorio ~/tmp/check_mk/cache
. A continuación encontrarás un resumen de todos los archivos y directorios implicados.
4.2. Datos piggyback huérfanos
Si trabajas en un entorno en el que los hosts cambian automáticamente el host de origen, te recomendamos que utilices la configuración dinámica de host. Si no puedes o no quieres utilizar la configuración dinámica de host, por ejemplo, porque las máquinas virtuales se mueven manualmente, es posible que recibas datos piggyback de un host que ni siquiera has creado en Checkmk. Esto puede ser intencionado, pero también puede tratarse de un error, por ejemplo, porque un nombre no coincide exactamente.
En los "Tesoros" encontrarás un script llamado find_piggy_orphans
con el que tu Checkmk puede buscar datos piggyback para los que no haya ningún host en monitorización. Simplemente llama a este script sin argumentos. El script emitirá una lista con una línea -ordenada por nombre- para cada host piggyback no monitorizado que se encuentre:
OMD[mysite]:~$ share/doc/check_mk/treasures/find_piggy_orphans
fooVM01
barVM02
Esta salida es "limpia" y puede, por ejemplo, procesarse en un script.
4.3. Piggyback en entornos distribuidos
Ten en cuenta que, actualmente, en entornos distribuidos, el host de origen y los host piggyback deben monitorizarse en el mismo site. Esto se debe simplemente a que -por razones de eficiencia- la transmisión de datos entre los hosts se realiza mediante el intercambio local de archivos que se ejecuta a través del directorio ~/tmp/check_mk
.
5. Ficheros y directorios
5.1. Rutas de archivos en el servidor Checkmk
Ruta | Descripción |
---|---|
|
Ubicación de almacenamiento de los datos piggyback |
|
Directorio de datos piggyback para el host B |
|
Archivo con datos piggyback del host A para el host B |
|
Metainformación de los host que crean datos piggyback |
|
Salida del agente del host A- incluyendo cualquier dato piggyback existente en formato raw |