![]() |
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. Monitorización sintética con Robot Framework
La monitorización sintética de Checkmk está disponible en las ediciones comerciales de Checkmk, pero requiere una suscripción adicional. No obstante, puedes probar la función con hasta tres pruebas de forma gratuita y sin límite de tiempo.
Con Checkmk puedes supervisar tu propia infraestructura muy de cerca, hasta la cuestión de si un servicio concreto, como un servidor web, funciona correctamente. Si tu sitio web funciona a través de un servicio cloud de terceros, no tendrás acceso al servicio en sí, pero puedes utilizar un check HTTP para verificar si el sitio web es accesible. Pero, ¿dirá eso algo sobre la experiencia del usuario? El hecho de que una tienda online sea accesible no significa que la navegación, los procesos de pedido y similares funcionen sin problemas.
Aquí es donde entra en juego la Monitorización Sintética de Checkmk. Con el Plugin Robotmk, Checkmk ofrece una auténtica monitorización de extremo a extremo, es decir, la monitorización de las aplicaciones en ejecución desde la perspectiva del usuario. Las pruebas reales las lleva a cabo el software de código abierto Robot Framework, del que también es miembro Checkmk GmbH.
El software de automatización puede utilizarse para reproducir completamente el comportamiento de un usuario, por ejemplo, para simular procesos de pedido en tiendas online, "clic a clic". Lo especial de Robot Framework es que las pruebas no se escriben en un lenguaje de programación completo, sino que se definen utilizando palabras clave fáciles de usar, como Open Browser
o Click Button
. Basta con un Open Browser checkmk.com
para llamar al sitio web de Checkmk. A continuación, se combinan varios casos de prueba en las denominadas suites de prueba (en forma de archivo .robot
).
Robotmk puede ahora activar estos conjuntos de pruebas de Robot Framework en el host y monitorizar su ejecución y resultados como servicios en Checkmk. En la interfaz web de Checkmk encontrarás entonces el estado, los gráficos de rendimiento asociados y las evaluaciones originales del propio Robot Framework.
1.1. Componentes
Múltiples componentes trabajan juntos para crear esta monitorización de extremo a extremo, por lo que a continuación te ofrecemos una breve visión general.
Servidor Checkmk
La monitorización sintética de Checkmk se realiza mediante Robotmk, que utiliza un plugin de agente como recopilador de datos, y el programador de Robotmk (en el host monitorizado) para activar los proyectos de Robot Framework. La monitorización sintética se activa y configura mediante la regla Robotmk Scheduler. Aquí se especifica qué suites de pruebas deben ejecutarse y cómo debe iniciarlas exactamente Robot Framework, resumido en un plan.Una vez desplegado, el programador de Robotmk en el host de destino garantiza la ejecución programada de tus suites de Robot Framework.
En la monitorización, se generarán varios servicios nuevos: RMK Scheduler Status muestra el estado del propio programador, es decir, si los conjuntos de pruebas pudieron iniciarse con éxito. También hay servicios para todos los planes de pruebas configurados (como RMK MyApp1 Plan) y pruebas individuales de los conjuntos de pruebas (como RMK MyApp1 Test). Los servicios de las pruebas individuales también incluyen los informes originales de Robot Framework.
Por último, pero no por ello menos importante, hay dos reglas de servicio opcionales: Robotmk plan y Robotmk test que permiten un ajuste preciso de los servicios del plan y de las pruebas, por ejemplo, para efectuar cambios de estado en determinados tiempos de ejecución.

Máquina de pruebas
Debes proporcionar los conjuntos de pruebas de Robot Framework en un host Windows. Para su ejecución, Robot Framework necesita acceder a sus dependencias (Python, bibliotecas, controladores para la automatización del navegador, etc.). Esta configuración es independiente de Checkmk y puede almacenarse de forma declarativa en un paquete portátil. Esto se realiza con la herramienta de línea de comandos de código abierto RCC. Esta herramienta utiliza tus archivos de configuración en formato YAML para construir entornos virtuales de Python que incluyen las dependencias y el propio Robot Framework. El programador de Robotmk que se ejecuta como un proceso en segundo plano activa esta construcción y, a continuación, ejecuta las pruebas por sí mismo.
Este paquete de automatización RCC con la configuración del paquete (robot.yaml
), la definición del entorno de ejecución (conda.yaml
) y los conjuntos de pruebas (tests.robot
) también se denomina robot. RCC y el programador se despliegan con el agente Checkmk, el paquete de automatización debe estar disponible en el host.
La gran ventaja de RCC es que el propio host Windows que lo ejecuta no necesita un entorno Python configurado.
El propio agente sólo es necesario para la transferencia de resultados, registros y capturas de pantalla. Esto también permite la monitorización de suites de muy larga duración o que consuman muchos recursos localmente, siempre que tu host Windows disponga de las capacidades correspondientes.
2. Monitorización de suites de pruebas con Robotmk
A continuación, te mostraremos cómo incluir un conjunto de pruebas en la monitorización. Como ejemplo utilizaremos un sencillo conjunto Hola Mundo que sólo emite dos cadenas y que espera brevemente entre cada una de ellas. Por supuesto, una introducción a Robot Framework no es el tema de este artículo, pero es necesario echar un breve vistazo al paquete de automatización y al conjunto de pruebas de demostración para que puedas ver qué datos terminan dónde en la monitorización.
El ejemplo se ejecuta sobre la base de RCC, de modo que el host de Windows no tiene que configurarse por separado. El rcc.exe
se despliega con el agente y puede encontrarse en C:\ProgramData\checkmk\agent\bin\
. Puedes descargar el conjunto de pruebas de muestra como archivo ZIP a través de GitHub. El directorio del conjunto de pruebas:
conda.yaml
robot.yaml
tests.robot
![]() |
RCC también puede procesar suites de pruebas basadas en otros lenguajes de programación, pero para utilizarlas en Checkmk debe tratarse de la declaración Robot Framework. |
El directorio de la suite contiene ahora dos archivos importantes: la declaración del entorno necesario para la ejecución en el archivo conda.yaml
y las pruebas reales en el archivo tests.robot
(la suite). El archivo robot.yaml
no es relevante para su uso en Checkmk, pero es necesario para RCC.
En aras de la exhaustividad, he aquí un breve vistazo al archivo robot.yaml
:
tasks:
task1:
# (task definitions are not required by Robotmk,
but expected by RCC to be compatible with other Robocorp features)
shell: echo "nothing to do"
environmentConfigs:
- conda.yaml
artifactsDir: output
Al principio, tasks
define qué tareas, aquí pruebas, deben ejecutarse en absoluto. Sin embargo, aunque esta parte es formalmente requerida por RCC, Robotmk no la utiliza.
![]() |
Robot Framework distingue entre pruebas y tareas, que representan automatizaciones, pero ambas se utilizan exactamente igual. |
En el área environmentConfigs
, sólo se hace referencia a conda.yaml
, que se ocupa del entorno real.
En este caso, sólo se instalan las dependencias de Python, Pip y Robot Framework para el entorno. La construcción del entorno aparece posteriormente en la monitorización como RCC environment build status. Las pruebas sólo se pueden procesar y, en consecuencia, monitorizar, si el entorno se ha construido correctamente.
channels:
- conda-forge
dependencies:
- python=3.10.12
- pip=23.2.1
- pip:
- robotframework==7.0
El conjunto de pruebas real tiene ahora este aspecto:
*** Settings ***
Documentation Template robot main suite.
*** Variables ***
${MYVAR} Hello Checkmk!
*** Test Cases ***
My Test
Log ${MYVAR}
Sleep 3
Log Done.
Aquí sólo se muestra el valor de la variable MYVAR
y, tras una espera de 3 segundos, se mostrará Done
. Puedes establecer el valor de la variable más adelante en la interfaz web de Checkmk; de lo contrario, se utilizará el valor por defecto Hello Checkmk!
especificado aquí.
![]() |
Puedes ejecutar este conjunto de pruebas manualmente. Para ello, el agente y el RCC deben estar ya instalados (o puedes descargarte tú mismo el binario del RCC). En primer lugar, ve al directorio de tu conjunto de pruebas, donde también se encuentra |
Y esto es exactamente lo que hace el programador Robotmk en cuanto se activa el plugin de agente.
2.1. Configurar una regla para el plugin de agente
Puedes encontrar el programador de Robotmk en Setup > Agent rules > Robotmk scheduler (Windows). Como la regla es bastante extensa, a continuación te mostramos la configuración vacía:

En primer lugar, el programador necesita el directorio base en el que se encuentran todos tus conjuntos de pruebas. Introduce esta ruta de archivo arbitraria y explícita en Base directory of suites, por ejemplo C:\robots
.

El Parallel plan groups que se muestra ahora es un concepto específico de Checkmk.
Para explicarlo, primero debemos descender un nivel jerárquico: aquí puedes ver el item Sequential plans. Un plan secuencial de este tipo define qué suites deben ejecutarse con qué parámetros. Robot Framework procesará estas suites una tras otra. La razón de esto es sencilla: en la práctica, las pruebas se ejecutan a veces en el escritorio y varias suites de pruebas podrían estorbarse entre sí al mismo tiempo (piensa que se roban mutuamente el control del puntero del ratón).
Los grupos de planes son ahora una encapsulación para los planes ejecutados secuencialmente, y ellos mismos se ejecutan en paralelo. De nuevo, el razonamiento es sencillo: esto permite que los conjuntos de pruebas que no dependen del escritorio se ejecuten en sus propios planes sin demora -el conjunto de pruebas utilizado en este artículo es un buen ejemplo de dicho proceso.
Volvamos al diálogo: El único ajuste explícito es el intervalo de ejecución, que estableces en Group execution interval.

![]() |
Los planes del grupo de planes tienen, naturalmente, sus propios tiempos de ejecución, determinados por el timeout de una sola ejecución y el número máximo de ejecuciones repetidas en caso de pruebas fallidas. Por tanto, el intervalo de ejecución del grupo de planes debe ser mayor que la suma de los tiempos de ejecución máximos de todos los planes del grupo. El tiempo de ejecución máximo de un plan se calcula de la siguiente manera: Limit per attempt × (1 + Maximum number of re-executions). |
Ahora es el momento de configurar el primer plan. Puedes introducir cualquier nombre en Application name. ¡Este nombre no tiene por qué ser único! Aquí tiene sentido el nombre de la aplicación que se va a monitorizar, por ejemplo OnlineShop
, o aquí en este ejemplo simplemente MyApplication
. Por supuesto, puede ocurrir que esta tienda online sea probada varias veces, ya sea por otros conjuntos de pruebas o por el mismo conjunto de pruebas con diferentes parámetros.
En tales casos, el campo Variant se utiliza para obtener resultados inequívocos a pesar de que los nombres sean idénticos. Por ejemplo, si la aplicación OnlineShop
se prueba una vez en alemán y otra en inglés (mediante parámetros correspondientes), podrías utilizar aquí las abreviaturas correspondientes. La monitorización devolverá entonces resultados para My OnlineShop_en
y My OnlineShop_de
.
Sin embargo, es necesario especificar Relative path to test suite file or folder. La ruta es relativa al directorio base especificado anteriormente, por ejemplo mybot\test.robot
para C:\robots\
. También se puede especificar aquí un directorio (con varios archivos robot
), en cuyo caso sería simplemente mybot
.

Continúa con Execution configuration.En Limit per attempt defines el tiempo máximo transcurrido -por intento- que puede ejecutarse un conjunto de pruebas. Con Robot Framework re-executions puedes indicar ahora a Robot Framework que repita los conjuntos de pruebas por completo o de forma incremental si las pruebas fallan. Si las pruebas individuales de un conjunto de pruebas son independientes entre sí, la estrategia incremental es la mejor forma de ahorrar tiempo. Si, por el contrario, el conjunto de pruebas comprueba una secuencia lógica, como "Inicio de sesión → Llamar a la página del producto → Producto en la cesta de la compra → Pago", el conjunto de pruebas debe, por supuesto, volver a procesarse por completo. Al final, siempre hay un único resultado.
En caso de reintentos completos, para el resultado final sólo se tienen en cuenta los resultados de las suites autónomas: Si una prueba falla en su último reintento, el conjunto de pruebas se cuenta como un fracaso. En el caso de los reintentos incrementales, el resultado final se compone de los mejores resultados parciales: Si algunas pruebas sólo se ejecutan con éxito en el tercer intento, el resultado final también se cuenta como un éxito. Recordatorio: La combinación de intentos y tiempos máximos de ejecución de todos los planes de un grupo de planes determina su intervalo mínimo de ejecución.

Por defecto, la ejecución a través de RCC se activa en Automated environment setup (via RCC), para lo que debes introducir dos valores. En primer lugar, RCC requiere que se especifique dónde se encuentra el archivo robot.yaml
. Su finalidad principal es hacer referencia al archivo conda.yaml
, que se encarga de configurar el entorno de Python, es decir instalar Python y las dependencias. Esta especificación es relativa al directorio base que has establecido anteriormente en Relative path to test suite file or folder. Los archivos YAML pueden guardarse en subdirectorios, pero la mejor práctica es el directorio superior de la suite. Para el directorio base anterior C:\robot\
y el directorio de la suite C:\robot\mybot
es en consecuencia mybot\robot.yaml
.
Con el siguiente límite de tiempo para construir el entorno Python, debes tener en cuenta que a veces es necesario descargar y configurar grandes volúmenes de datos. Especialmente para los navegadores necesarios, se acumulan rápidamente varios cientos de megabytes, pero sólo para la primera ejecución. RCC sólo reconstruye los entornos si el contenido de conda.yaml
ha cambiado.

En Robot Framework parameters tienes la posibilidad de utilizar algunos de los parámetros de la línea de comandos de Robot Framework (que también se muestran con el comando robot --help
). Si quieres utilizar parámetros adicionales, te ayudará la opción Argument files. Un archivo especificado aquí puede contener cualquier parámetro del robot. Puedes encontrar más información sobre los parámetros individuales en la ayuda en línea.
Para nuestro proyecto de ejemplo, sólo se activa la opción Variables y se establece una variable MYVAR
con el valor My Value
. ¿Recuerdas el comando Log ${MYVAR}
en la parte superior del archivo tests.robot
? Ésta es la referencia correspondiente.

robot
Al final de la configuración de la suite, hay tres opciones que se explican por sí mismas.Execute plan as a specific user permite ejecutar Robotmk en el contexto de una cuenta de usuario específica. Antecedentes: Por defecto, Robotmk se ejecuta en el contexto del agente Checkmk(cuenta LocalSystem), que no tiene autorización para acceder al escritorio. Aquí se puede especificar un usuario que debe estar permanentemente conectado a una sesión de escritorio y que, en consecuencia, tiene acceso a las aplicaciones gráficas del escritorio.
Con Assign plan/test result to piggyback host, los resultados del plan/prueba pueden asignarse a otro host. Por ejemplo, si Robot Framework está probando el proceso de pedido de una tienda online, los resultados pueden asignarse al servidor web correspondiente.
Cada ejecución de prueba produce datos que se almacenan en C:\ProgramData\checkmk\agent\robotmk_output\working\suites\
. Por defecto, se conservan los resultados de los últimos 14 días, pero debes tener en cuenta que aquí pueden acumularse rápidamente grandes volúmenes de datos. Se generan al menos 500 kilobytes de datos por ejecución -con suites de pruebas más complejas y capturas de pantalla incrustadas, por ejemplo, esto puede sumar rápidamente varios megabytes de datos. Dependiendo del intervalo de ejecución, del tamaño del informe y de tus requisitos de documentación, debes intervenir en tal situación.

Una vez aquí, ahora puedes crear más planes en este grupo de planes o en otros grupos de planes.
Al final hay dos opciones más, que a su vez se refieren a la configuración completa del planificador Robotmk.
RCC profile configuration te permite especificar los servidores proxy y hosts que deben excluirse.
Grace period before scheduler starts también puede ser muy útil: El programador se inicia junto con el agente Checkmk antes del inicio de sesión en el escritorio, lo que, por supuesto, significa que cualquier prueba en el escritorio debe fallar. El inicio puede retrasarse manualmente mediante un periodo de gracia.

Esto completa la configuración y puedes crear un nuevo agente con el Plugin y luego desplegarlo, manualmente o mediante las actualizaciones automáticas del agente.
Datos de salida del agente
La salida en el agente es bastante extensa: mensajes de error, estado, configuración y datos de prueba se transmiten en varias secciones. Estos últimos se pueden encontrar en la sección robotmk_suite_execution_report
, aquí tienes un extracto abreviado:
<<<<robotmk_suite_execution_report:sep(0)>>> { "intentos": [ { "índice": 1, "resultado": "TodasLasPruebasPasadas", "tiempo de ejecución": 20 } ], "rebot": { "OK": { "xml": "<?xml version="1.0\" encoding="UTF-8\"?>r\n <robot generator="Rebot 6.1.1 (Python 3.10.12 en win32)\" generated="20240319 16:23:19.944\" rpa="true\" schemaversion="4\">\n<suite id="s1\" name="Mybot\" source="C:\bots\mybot">\r\n<suite id="s1-s1" name="Pruebas\" source="C:\bots\mybot\tests.robot\">\r\n<test id="s1-s1-t1" name="Mytest\" line=\"6\">\r\n<kw name="Sleep\" library="BuiltIn\">\r\n<arg>3 Segundos</arg>\r\n<doc>Pausa la prueba ejecutada durante el tiempo dado.</doc>\r\n<msg timestamp="20240319 16:23:02.936\" level=\"INFO\">Ha durado 3 segundos</msg>\r\n<status status="PASS\" starttime="20240319 16:23:00.934\" endtime="20240319 16:23:02.936\"/>" }, "suite_id": "mybot", "timestamp": 1710861778 } ... "html_base64": "PCFET0NUWVBFIGh0bWw+DQo8aHRtbCBsYW ...
Aquí hay dos áreas de especial interés. En primer lugar, rebot
: La herramienta rebot
ha producido el informe de estado real de Robot Framework a partir de varios resultados parciales (de ahí lo de re-bot). En segundo lugar, la última línea html_base64
: Los informes HTML de Robot Framework se codifican en base64. Las capturas de pantalla tomadas a través de las pruebas también se transfieren de este modo: el volumen de salida/datos en el agente puede ser correspondientemente amplio.
Datos en monitorización
En cuanto se hayan ejecutado el programador Robotmk y el conjunto de pruebas, el descubrimiento de servicios producirá tres nuevos servicios:

El servicio RMK Scheduler Status existe una vez e inmediatamente después de su distribución. Los servicios para planes y pruebas, aquí RMK MyApplication_mybot Plan y RMK MyApplication_mybot Test: /Test: My Test, se añaden a la monitorización en cuanto se ejecutan por primera vez las suites asociadas.
2.2. Configurar reglas de servicio
Crear una regla para el estado del plan
Recordatorio: Los tiempos máximos de ejecución de los planes se definieron en la regla del agente anterior. Estos tiempos de ejecución pueden evaluarse con la regla Robotmk plan. Por ejemplo, puedes establecer el servicio en CRIT cuando se haya alcanzado el 90 por ciento de todos los timeouts calculados.

En la caja Conditions, existe la opción de restringir la regla a determinados planes.

Creación de una regla para el estado de la prueba
También se pueden obtener datos adicionales para pruebas individuales de los conjuntos de pruebas mediante la regla Robotmk test. Aquí encontrarás de nuevo la opción de monitorización de los tiempos de ejecución, tanto de las pruebas como de las palabras clave. La monitorización de las palabras clave es una función específica de Checkmk. Por tanto, el estado interno del conjunto de pruebas en el informe del Robot Framework también podría ser OK
porque el conjunto de pruebas se procesó dentro del tiempo de ejecución máximo permitido; en Checkmk, sin embargo, WARN o CRIT, porque se produce un cambio de estado, por ejemplo, al 80 por ciento de este tiempo de ejecución máximo permitido.
Además, la opción Enable metrics for high-level keywords puede utilizarse para generar métricas para palabras clave de nivel superior, lo que resulta especialmente útil si tus pruebas están organizadas de forma que las palabras clave de nivel superior describen el "qué" y las palabras clave de nivel inferior describen el "cómo": así obtienes evaluaciones más abstractas.
En este ejemplo, los valores umbrales para el tiempo máximo de ejecución de una prueba son 2 y 4 segundos. Verás los efectos más adelante, en el capítulo Robotmk en monitorización.

Una vez más, hay una opción de filtro explícito en la caja Conditions, aquí para pruebas individuales.

2.3. Robotmk en monitorización
En la monitorización, encontrarás servicios para el estado del programador de Robotmk, así como para los planes y pruebas individuales, aunque no hayas creado ninguna regla de servicio por separado.
Estado del planificador
El servicio RMK Scheduler Status está OK si el planificador se está ejecutando y ha construido con éxito los entornos de ejecución.

Aquí en la imagen puedes ver la nota Environment build took 1 second.¿Un segundo para construir un entorno virtual Python con Pip y Robot Framework? Esto es posible porque RCC es inteligente: los archivos que ya se han descargado se reutilizan y sólo se lleva a cabo una nueva construcción después de realizar cambios en conda.yaml
. La primera construcción habría tardado 30 segundos o más.
Estado del plan
El estado de un plan se refleja en un servicio denominado por el nombre de la aplicación y la suite, por ejemplo RMK MyApplication_mybot Plan.

Estado de las pruebas
La evaluación de las pruebas es donde se pone realmente interesante. En la imagen puedes ver ahora el efecto de los valores umbrales establecidos anteriormente para el tiempo de ejecución de las pruebas: aquí los 2 segundos para el estado WARN. Como la instrucción Sleep 3 Seconds
de la propia prueba ya garantiza un tiempo de ejecución más largo, este servicio debe pasar aquí a WARN, aunque la prueba se haya realizado correctamente. El hecho de que la prueba se haya realizado correctamente se muestra en el informe de Robot Framework, al que puedes acceder mediante el icono de registro.

El informe muestra ahora claramente que la prueba y el conjunto de pruebas se han ejecutado con éxito.

En la parte inferior de los datos también puedes ver las palabras clave individuales, aquí por ejemplo Log ${MYVAR}
junto con el valor My value
establecido en Checkmk para MYVAR
.

Dashboards
Por supuesto, puedes crear tus propios dashboards como de costumbre, pero también puedes encontrar dos dashboards integrados en Monitor > Synthetic Monitoring.

3. Solución de problemas
3.1. El programador informa No Data
Si el programador no recibe ningún dato, es probable que la construcción del entorno no haya funcionado. Una razón común para ello son los problemas de red, por ejemplo, debido a los cuales no se pueden cargar determinadas dependencias. En este caso, echa un vistazo al archivo de registro correspondiente en C:\ProgramData\checkmk\agent\robotmk_output\working\environment_building
.
3.2. La construcción del entorno falla: post-install script execution
Este es un error especialmente interesante que puedes encontrar en sistemas Windows nuevos. El conda.yaml
también puede contener instrucciones que deben ejecutarse después de la instalación de las dependencias, por ejemplo, la inicialización del navegador Robot Framework. Por tanto, aquí deben ejecutarse los comandos de Python. Por defecto, Windows 11 tiene alias para python.exe
y python3.exe
que remiten a la Tienda Microsoft. Debes desactivar estos alias en "Configuración/Alias para la ejecución de apps".
4. Archivos y directorios
Ruta del archivo | Descripción |
---|---|
|
Archivos de registro y resultados de las suites |
|
Archivos de registro para construir entornos virtuales |
|
Mensajes de la ejecución del RCC |
|
Archivo de registro del plugin de agente |
|
|
|
Plugin de agente |