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. Supervision synthétique avec Robot Framework

CEE La supervision synthétique Checkmk est disponible dans les éditions commerciales de Checkmk, mais elle nécessite un abonnement supplémentaire. Vous pouvez toutefois tester cette fonctionnalité gratuitement et sans limite de temps avec jusqu'à trois tests.

Avec Checkmk, vous pouvez surveiller votre infrastructure de très près, jusqu’à vérifier si un service particulier, tel qu’un serveur web, fonctionne correctement. Si votre site web est hébergé via un service cloud tiers, vous n’aurez pas accès au service lui-même, mais vous pouvez utiliser une check HTTP pour vérifier si le site web est accessible. Mais cela vous renseignera-t-il sur l’expérience de l’utilisateur ? Le fait qu’une boutique en ligne soit accessible ne signifie pas que la navigation, les processus de commande et autres fonctionnent sans heurts.

C’est là qu’intervient la supervision synthétique de Checkmk. Avec le plugin Robotmk, Checkmk offre une véritable supervision de bout en bout, c’est-à-dire la supervision des applications en cours d’exécution du point de vue de l’utilisateur. Les tests proprement dits sont effectués par le logiciel libre Robot Framework — dont Checkmk GmbH est également membre.

Ce logiciel d’automatisation permet de reproduire intégralement le comportement d’un utilisateur, par exemple pour simuler des processus de commande dans des boutiques en ligne, « clic par clic ». La particularité de Robot Framework réside dans le fait que les tests ne sont pas écrits dans un langage de programmation à part entière, mais sont définis à l’aide de mots-clés faciles à utiliser tels que « Open Browser » ou « Click Button ». Une simple requête « Open Browser checkmk.com » suffit pour accéder au site web de Checkmk. Plusieurs cas de test sont ensuite regroupés dans ce que l’on appelle des suites de test (sous la forme d’un fichier « .robot »).

Robotmk peut désormais déployer ces suites de tests Robot Framework sur l’ordinateur hôte et surveiller leur exécution et leurs résultats en tant que services dans Checkmk. Dans l’interface web de Checkmk, vous trouverez alors l’état, les graphiques de performance associés et les évaluations d’origine de Robot Framework lui-même.

1.1. Composants

Plusieurs composants fonctionnent ensemble pour créer cette supervision de bout en bout ; en voici donc un bref aperçu.

serveur Checkmk

La supervision synthétique Checkmk est réalisée via Robotmk, qui utilise un plugin d’agent comme collecteur de données, et le planificateur Robotmk (sur l’ordinateur hôte) pour déclencher les projets Robot Framework. La supervision synthétique est activée et configurée via la règleRobotmk Scheduler . Vous y spécifiez quelles suites de tests doivent être exécutées et comment exactement Robot Framework doit les lancer — le tout résumé dans un plan. Une fois déployé, le planificateur Robotmk sur l’ordinateur hôte cible assure l’exécution planifiée de vos suites Robot Framework.

Dans le cadre de la supervision, plusieurs nouveaux services seront générés : RMK Scheduler Status affiche l’état du planificateur lui-même, c’est-à-dire si les suites de tests ont pu être lancées avec succès. Il existe également des services pour tous les plans de test configurés (tels que RMK MyApp1 Plan) et pour les tests individuels issus des suites de tests (tels que RMK MyApp1 Test). Les services des tests individuels incluent également les rapports Robot Framework d’origine.

Il existe ensuite deux règles de service facultatives : Robotmk plan et Robotmk test permettent de réaliser des réglages fins pour les services de plan et de test — par exemple, pour effectuer des changements de statut à certains moments d’exécution.

Enfin, il existe deux règles pour la supervision des KPI : KPI signifie « Key Performance Indicator » (indicateur clé de performance) et désigne, dans ce contexte, des mots-clés individuels. Grâce à la règle Robotmk KPI discovery, les mots-clés peuvent être intégrés à la supervision en tant que services distincts et évalués en conséquence via Robotmk KPI monitoring. Nous vous montrerons exactement comment fonctionne la supervision des mots-clés dans un chapitre séparé ci-dessous.

Un peu à part des règles habituelles, il existe également la fonctionnalité « Managed robots » dans la section « Setup ». En bref : il s’agit de robots gérés sur le serveur Checkmk et déployés via l’agent Checkmk — là encore, un chapitre distinct est disponible pour plus de détails à ce sujet.

Robotmk rules in the Setup menu.
Les règles Robotmk dans Checkmk

Machine de test

Vous pouvez fournir les suites de tests Robot Framework sur un ordinateur hôte Windows (à partir de Windows 10 ou serveur Windows 2019) ou Linux. Pour l’exécution, Robot Framework nécessite l’accès à ses dépendances (Python, bibliothèques, pilotes pour l’automatisation du navigateur, etc.). Cette configuration est indépendante de Checkmk et peut être stockée de manière déclarative dans un paquet portable. Cette opération s’effectue à l’aide de l’outil en ligne de commande libre RCC. Cet outil utilise vos fichiers de configuration au format YAML pour créer des environnements Python virtuels comprenant les dépendances et le Robot Framework lui-même. Le planificateur Robotmk, s’exécutant en tant que processus d’arrière-plan, déclenche cette création, puis exécute lui-même les tests.

Un tel paquet d'automatisation RCC, comprenant la configuration du paquet (robot.yaml), la définition de l'environnement d'exécution (conda.yaml) et les suites de tests (tests.robot), est également appelé « robot ». RCC et le planificateur sont déployés avec l'agent Checkmk ; le paquet d'automatisation doit être disponible sur l'ordinateur hôte.

Le grand avantage de RCC est que l'ordinateur hôte d'exécution des tests lui-même ne nécessite pas d'environnement Python configuré.

L’agent lui-même n’est nécessaire que pour le transfert des résultats, des journaux et des captures d’écran. Cela permet également de réaliser la supervision de suites de tests très longues ou très gourmandes en ressources au niveau local — à condition que votre ordinateur hôte dispose des capacités correspondantes.

Un mot sur les systèmes d’exploitation utilisés par les ordinateurs hôtes de test : les systèmes Windows et Linux se comportent de manière légèrement différente. Notez en particulier que les chemins d’accès aux fichiers définis diffèrent ; dans les exemples suivants, nous n’utilisons que des chemins d’accès Windows (à moins que des chemins explicites ne soient réellement requis). Dans le cas où RCC doit fonctionner hors ligne, il existe également des différences concernant le contexte utilisateur du planificateur Robotmk et les instructions nécessaires — ici, bien sûr, nous abordons explicitement les deux systèmes.

Et même si cela n’est pas directement lié à Checkmk : La bibliothèque de navigation de Robot Framework utilise Playwright — et Playwright ne fonctionne pas sur tous les systèmes Linux pris en charge par Checkmk. Veuillez noter la configuration système requise correspondante (alors que Node.js est fourni par RCC dans notre cas).

Configuration système requise pour la machine de test :

  • Processeur : au moins 4 noyaux du processeur, 8 noyaux du processeur recommandés

  • Mémoire vive : 8 gigaoctets, 16 gigaoctets recommandés

  • Accès à internet (si des paquets doivent être téléchargés)

  • Pour les tests Web (bibliothèque de navigateur Robot Framework, basée sur Playwright) : Debian 12/13, Ubuntu 22.04/24.04

2. Supervision des suites de tests avec Robotmk

Dans ce qui suit, nous allons vous montrer comment inclure une suite de tests dans la supervision. À titre d'exemple, nous utiliserons une suite « Hello World » simple qui affiche uniquement deux chaînes de caractères et qui marque une brève pause entre chacune d'elles. Bien entendu, cet article n'a pas pour objet de présenter Robot Framework, mais un bref aperçu du package d'automatisation et de la suite de tests de démonstration est nécessaire pour que vous puissiez voir quelles données apparaissent où dans la supervision.

L'exemple s'exécute sur la base de RCC, de sorte que l'ordinateur hôte Windows n'a pas besoin d'être configuré séparément. L'rcc.exe est déployée avec l'agent et se trouve à l'adresse C:\ProgramData\checkmk\agent\bin\. Vous pouvez télécharger la suite d'exemple sous forme de fichier ZIP via GitHub. Répertoire de la suite :

C:\robots\mybot\
conda.yaml
robot.yaml
tests.robot
Tip

RCC peut également traiter des suites de tests basées sur plusieurs autres langages de programmation, mais pour une utilisation dans Checkmk, il doit s'agir de la déclaration Robot Framework.

Le répertoire de la suite contient désormais deux fichiers importants : La déclaration de l'environnement requis pour l'exécution dans le fichier conda.yaml et les tests proprement dits dans le fichier tests.robot (la suite). Le fichier robot.yaml n'est pas pertinent pour une utilisation dans Checkmk, mais il est requis par RCC.

Par souci d'exhaustivité, voici un bref aperçu du fichier robot.yaml :

C:\robots\mybot\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
Copier le contenu du fichier dans le presse-papiers
Le contenu du fichier a été copié avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Dans un premier temps, tasks définit quelles tâches, ici les tests, doivent être exécutées. Cependant, bien que cette partie soit formellement requise par RCC, elle n’est pas utilisée par Robotmk.

Tip

Robot Framework fait la distinction entre les tests et les tâches, qui correspondent à des automatisations. Cependant, les deux sont utilisés exactement de la même manière.

Dans la zone « environmentConfigs », seule l’conda.yaml est référencée, celle-ci se chargeant de l’environnement proprement dit.

Dans ce cas, seules les dépendances Python, Pip et Robot Framework sont installées pour l’environnement. L’environnement ainsi créé apparaît ensuite dans la supervision sous le nom « RCC environment build status ». Les tests ne peuvent être traités et, par conséquent, surveillés que si l’environnement a été créé avec succès.

C:\robots\mybot\conda.yaml
channels:
  - conda-forge

dependencies:
  - python=3.10.12
  - pip=23.2.1
  - pip:
     - robotframework==7.1
Copier le contenu du fichier dans le presse-papiers
Contenu du fichier copié avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

La suite de tests actuelle se présente désormais comme suit :

C:\robots\mybot\tests.robot
*** Settings ***
Documentation Template robot main suite.

*** Variables ***
${MYVAR}    Hello Checkmk!

*** Test Cases ***
My Test
    Log ${MYVAR}
    Sleep 3
    Log Done.

Ici, seule la valeur de la variable « MYVAR » est affichée, puis, après un délai de 3 secondes, « Done » s’affichera. Vous pouvez définir la valeur de la variable ultérieurement dans l’interface web de Checkmk ; sinon, la valeur par défaut « Hello Checkmk! » spécifiée ici sera utilisée.

Tip

Vous pouvez exécuter cette suite de tests manuellement. Pour ce faire, l’agent et RCC doivent déjà être installés (ou vous pouvez télécharger vous-même le binaire RCC). Accédez d’abord au répertoire de votre suite de tests, où se trouve également le fichier tests.robot. Lancez ensuite le shell RCC avec la commande C:\ProgramData\checkmk\agent\bin\rcc.exe task shell. L’environnement virtuel défini dans conda.yaml est alors créé. Lancez ensuite la suite avec la commande robot tests.robot.

Et c'est exactement ce que fait le planificateur Robotmk dès que le plugin d'agent a été activé.

2.1. Configurer une règle pour le plugin d'agent

Vous trouverez le planificateur Robotmk sous Setup > Agent rules > Robotmk scheduler (Windows). La règle étant assez complète, voici un aperçu de la configuration vide :

Empty Robotmk scheduler rule.
Configuration du plugin d'agent

Tout d'abord, le planificateur a besoin du répertoire de base dans lequel se trouvent toutes vos suites de tests. Saisissez ce chemin d'accès explicite et arbitraire sous Base directory of suites, par exemple C:\robots.

Path for test suites.
Répertoire de base pour tous les projets Robot Framework

Les « Parallel plan groups » qui s’affichent actuellement constituent un concept propre à Checkmk.

Pour l'expliquer, nous devons d'abord descendre d'un niveau dans la hiérarchie : vous pouvez voir ici l'élément « Sequential plans ». Un tel plan séquentiel définit quelles suites doivent être exécutées avec quels paramètres. Robot Framework traitera ces suites l’une après l’autre. La raison en est simple : dans la pratique, les tests sont parfois exécutés sur le bureau et plusieurs suites de tests pourraient se gêner mutuellement en même temps (imaginez qu’elles se disputent le contrôle du pointeur de la souris).

Les groupes de plans constituent désormais une encapsulation pour les plans exécutés séquentiellement — et sont eux-mêmes exécutés en parallèle. Là encore, le raisonnement est simple : cela permet aux suites de tests qui ne dépendent pas du bureau d’être exécutées dans leurs propres plans sans délai — la suite de tests utilisée dans cet article est un bon exemple d’un tel processus.

Revenons au dialogue : le seul paramètre explicite est l'intervalle d'exécution, que vous définissez sous « Group execution interval ».

Execution interval for execution groups.
Intervalle pour l'exécution (parallèle) des groupes de plans
Important

Les plans du groupe de plans ont naturellement leurs propres durées d’exécution, déterminées par le timeout d’une exécution unique et le nombre maximal d’exécutions répétées lors d’un événement d’échec des tests. L’intervalle d’exécution du groupe de plans doit donc être supérieur à la somme des durées d’exécution maximales de tous les plans du groupe. La durée d’exécution maximale d’un plan est calculée comme suit : Limit per attempt × (1 + Maximum number of re-executions).

Il est maintenant temps de configurer le premier plan. Vous pouvez saisir n’importe quel nom sous « Application name ». Ce nom n’a pas besoin d’être unique ! Le nom de l’application soumise à la supervision est tout à fait approprié ici, par exemple « OnlineShop », ou simplement « MyApplication » dans cet exemple. Bien sûr, il peut arriver que cette boutique en ligne soit testée plusieurs fois, soit par d’autres suites de tests, soit par la même suite de tests avec des paramètres différents. Dans de tels cas, le champ « Variant » (Nom de l’application) est utilisé pour obtenir des résultats sans ambiguïté malgré des noms identiques. Par exemple, si l’application OnlineShop est testée une fois en allemand et une fois en anglais (via les paramètres correspondants), vous pourriez utiliser ici les abréviations correspondantes. La supervision renverra alors des résultats pour My OnlineShop_en et My OnlineShop_de.

Toutefois, la spécification sous Relative path to test suite file or folder est nécessaire. Le chemin d'accès est relatif au répertoire de base spécifié ci-dessus, par exemple mybot\test.robot pour C:\robots\. Il est également possible de spécifier ici un répertoire (contenant plusieurs fichiers robot), auquel cas il s'agirait simplement de mybot.

Name and path of the suite.
Plan d'exécution des suites

Poursuivez avec l’option « Execution configuration. » Sous « Limit per attempt », vous définissez la durée maximale — par tentative — pendant laquelle une suite de tests peut s’exécuter. Avec « Robot Framework re-executions », vous pouvez désormais demander à Robot Framework de répéter les suites de tests dans leur intégralité ou de manière incrémentielle si les tests échouent. Si les tests individuels d’une suite de tests sont indépendants les uns des autres, la stratégie incrémentielle est le meilleur moyen de gagner du temps. Si, en revanche, la suite de tests vérifie une séquence logique, telle que « Login > Affichage de la page produit > Ajout du produit au panier > Paiement », la suite de tests doit bien sûr être entièrement réexécutée. Au final, il n’y a toujours qu’un seul résultat.

Dans le cas de nouvelles tentatives complètes, seuls les résultats des suites autonomes sont pris en compte pour le résultat final : si un test échoue lors de sa dernière nouvelle tentative, la suite de tests est considérée comme un échec. Dans le cas de réessais incrémentiels, le résultat final est constitué des meilleurs résultats partiels : si certains tests ne s’exécutent avec succès qu’à la troisième tentative, le résultat final est également considéré comme un succès. Rappel : la combinaison des tentatives et des durées d’exécution maximales de tous les plans d’un groupe de plans détermine leur intervalle d’exécution minimal.

Configuration of execution runtimes and repetitions.
Les tests/suites ayant échoué peuvent être répétés

Par défaut, l'exécution via RCC est activée sous Automated environment setup (via RCC), pour laquelle vous devez saisir deux valeurs. Tout d'abord, RCC nécessite de spécifier l'emplacement du fichier d'robot.yaml. Son objectif principal est de référencer le fichier conda.yaml, qui est chargé de configurer l'environnement Python, c'est-à-dire d'installer Python et ses dépendances. Cette spécification est relative au répertoire de base que vous avez défini ci-dessus sous Relative path to test suite file or folder. Les fichiers YAML peuvent être enregistrés dans des sous-répertoires, mais la meilleure pratique consiste à les placer dans le répertoire supérieur de la suite. Pour le répertoire de base C:\robot\ et le répertoire de la suite C:\robot\mybot mentionnés ci-dessus, l'emplacement correspondant est donc mybot\robot.yaml.

Compte tenu de la limite de temps suivante pour la création de l'environnement Python, vous devez garder à l'esprit que des volumes importants de données doivent parfois être téléchargés et configurés. En particulier pour les navigateurs requis, plusieurs centaines de mégaoctets s'accumulent rapidement — mais uniquement lors de la première exécution. RCC ne recrée les environnements que si le contenu de conda.yaml a changé.

RCC configuration of the suite.
Délai imparti pour la création d'environnements virtuels

Sous Robot Framework parameters, vous avez la possibilité d’utiliser certains des paramètres de ligne de commande de Robot Framework (qui sont également affichés par l’instruction robot --help). Si vous souhaitez utiliser des paramètres supplémentaires, l’option Argument files vous sera utile. Un fichier spécifié ici peut contenir n’importe quel paramètre de robot. Vous trouverez de plus amples informations sur les différents paramètres dans l’aide en ligne.

Pour notre projet d'exemple, seule l'option Variables est activée et une variable MYVAR est définie avec la valeur My Value. Vous vous souvenez de l'instruction Log ${MYVAR} en haut du fichier tests.robot ? Il s'agit de la référence correspondante.

Command line parameters of Robot Framework.
Quelques options de l'instruction robot

L'option Secret environment variables mérite une attention particulière, car il ne s'agit pas d'une fonction native de Robot Framework. Vous pouvez définir ici des variables d'environnement secrètes, destinées aux mots de passe en association avec la bibliothèque Robot Framework CryptoLibrary. Les variables définies ici n'apparaissent pas dans les journaux, mais sont écrites en texte clair dans les fichiers de configuration Checkmk sur les ordinateurs hôtes respectifs.

Option for secret environment variables in the Robotmk scheduler.
Mot de passe secret pour la CryptoLibrary

À la fin de la configuration de la suite, trois options s’offrent à vous, dont la signification est en grande partie évidente.

Execute plan as a specific user Permet d’exécuter Robotmk dans le contexte d’un compte utilisateur spécifique. Contexte : par défaut, Robotmk est exécuté dans le contexte de l’agent Checkmk (compte LocalSystem), qui ne dispose d’aucune autorisation pour accéder au bureau. Vous pouvez ici spécifier un utilisateur qui doit être connecté en permanence à une session de bureau et qui dispose donc d’un accès aux applications graphiques du bureau.

Cependant, ne vous précipitez pas : les navigateurs constituent ici une exception ! Ils peuvent s’exécuter et afficher des pages web en mode sans interface graphique. Vous ne devriez checker la case pour un utilisateur spécifique que si une application de bureau dédiée est lancée en dehors des navigateurs — notamment pour des raisons de sécurité.

Avec Assign plan/test result to piggyback host, les résultats du plan/test peuvent être attribués à un autre ordinateur hôte. Par exemple, si Robot Framework teste le processus de commande d’une boutique en ligne, les résultats peuvent être attribués au serveur web correspondant.

Chaque exécution de test produit des données qui sont stockées sous C:\ProgramData\checkmk\agent\robotmk_output\working\suites\. Par défaut, les résultats des 14 derniers jours sont conservés, mais vous devez garder à l’esprit que de grands volumes de données peuvent rapidement s’accumuler ici. Au moins 500 kilo-octets de données sont générés par exécution — avec des suites de tests plus complexes et des captures d'écran intégrées, par exemple, cela peut rapidement représenter plusieurs mégaoctets de données. En fonction de l'intervalle d'exécution, de la taille du rapport et de vos exigences en matière de documentation, vous devriez intervenir dans une telle situation.

Options for user context, host assignment and automatic cleanup
Nettoyage automatique du volume important de données générées

Une fois ici, vous pouvez désormais créer d'autres plans dans ce groupe de plans ou d'autres groupes de plans.

À la fin, deux options supplémentaires s’offrent à vous, qui concernent la configuration complète du planificateur Robotmk.

RCC profile configuration vous permet de spécifier les serveurs proxy et les ordinateurs hôtes à exclure.

Grace period before scheduler starts peut également s’avérer très utile : le planificateur démarre en même temps que l’agent Checkmk avant la connexion au bureau — ce qui, bien sûr, signifie que tout test sur le bureau échouera. Le démarrage peut être retardé manuellement à l’aide d’un délai de grâce.

Options for proxy server and a grace period for the scheduler start.
Un « délai de grâce » évite les échecs

La configuration est maintenant terminée et vous pouvez créer un nouvel agent à l’aide du plugin, puis le déployer, manuellement ou via les mises à jour automatiques des agents.

Données dans la sortie de l'agent

La sortie de l'agent est assez complète : les messages d'erreur, l'état, la configuration et les données de test sont transmis dans plusieurs sections. Ces dernières se trouvent dans la section « robotmk_suite_execution_report » ; en voici un extrait abrégé :

mysite-robot-agent.txt
<<<robotmk_suite_execution_report:sep(0)>>>
{
    "attempts": [
        {
            "index": 1,
            "outcome": "AllTestsPassed",
            "runtime": 20
        }
    ],
    "rebot": {
        "Ok": {
            "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n
			<robot generator=\"Rebot 6.1.1 (Python 3.10.12 on win32)\"
			generated=\"20240319 16:23:19.944\"
			rpa=\"true\"
			schemaversion=\"4\">\r\n<suite id=\"s1\"
			name=\"Mybot\"
			source=\"C:\\robots\\mybot\">\r\n<suite id=\"s1-s1\"
			name=\"Tests\"
			source=\"C:\\robots\\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 Seconds</arg>\r\n<doc>Pauses the test executed for the given time.</doc>\r\n<msg
			timestamp=\"20240319 16:23:02.936\"
			level=\"INFO\">Slept 3 seconds</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 ...

Deux éléments présentent ici un intérêt particulier. Tout d’abord, « rebot » : l’outil rebot a généré le rapport d’état réel pour Robot Framework à partir de plusieurs résultats partiels (d’où « re-bot »). Ensuite, la dernière ligne « html_base64 » : les rapports HTML de Robot Framework sont ensuite encodés en base64. Les captures d’écran réalisées lors des tests sont également transférées de cette manière — le volume de données/sortie dans l’agent peut donc être très important.

Données de supervision

Dès que le planificateur Robotmk et la suite de tests ont été exécutés, la reconnaissance du service génère trois nouveaux services :

Robotmk-Services im Monitoring
Les services Robotmk nouvellement découverts

L'RMK Scheduler Statuse de service existe dès le déploiement. Les services pour les plans et les tests, ici RMK MyApplication_mybot Plan et RMK MyApplication_mybot Test: /Test: My Test, sont ajoutés à la supervision dès que les suites associées ont été exécutées pour la première fois.

2.2. Configuration des règles de service

Création d'une règle pour l'état du plan

Rappel : les durées d'exécution maximales pour les plans ont été définies dans la règle d'agent ci-dessus. Ces durées d'exécution peuvent être évaluées à l'aide de la règle « Robotmk plan ». Par exemple, vous pouvez définir le service sur CRIT lorsque 90 % de tous les timeout calculés ont été atteints.

Configuration dialog for threshold values for runtimes of test suites.
Valeurs seuils pour les changements de statut en fonction des durées d'exécution

Dans la case « Conditions », il est possible de limiter la règle à des plans spécifiques.

Dialog with restriction to the test suite 'mybot'.
Restriction facultative à certains plans

Création d'une règle pour le statut du test

Des données supplémentaires peuvent également être récupérées pour les tests individuels des suites de tests via la règle « Robotmk test ». Vous y trouverez à nouveau la possibilité de réaliser la supervision des durées d'exécution, tant pour les tests que pour les mots-clés. La supervision des mots-clés est une fonction spécifique à Checkmk. Par conséquent, le statut interne à la suite dans le rapport Robot Framework pourrait également être «OK» (test réussi) car la suite de tests a été traitée dans le temps d’exécution maximal autorisé — dans Checkmk, cependant, «WARN» (test en cours) ou «CRIT» (test en attente), car un changement de statut a lieu, par exemple, à 80 % de ce temps d’exécution maximal autorisé.

De plus, l’option « Enable metrics for high-level keywords » peut être utilisée pour générer des métriques pour les mots-clés de niveau supérieur. Ceci est particulièrement utile si vos tests sont organisés de telle sorte que les mots-clés de niveau supérieur décrivent le « quoi » et que les mots-clés de niveau inférieur décrivent le « comment » — cela vous fournit des évaluations plus abstraites.

Dans cet exemple, les valeurs seuils pour la durée d'exécution maximale d'un test sont de 2 et 4 secondes. Vous verrez les effets ci-dessous dans le chapitre Robotmk dans la supervision.

Rule for monitoring keywords with example values.
La supervision peut être étendue à l'aide de métriques de mots-clés

Une fois encore, une option de filtrage explicite est disponible dans la case de dialogue « Conditions », ici pour les tests individuels.

Dialog with option to restrict to tests.
Restriction facultative à certains tests

2.3. Robotmk dans la supervision

Dans la supervision, vous trouverez des services pour l'état du planificateur Robotmk ainsi que pour les plans et tests individuels, même si vous n'avez créé aucune règle de service distincte.

État du planificateur

Le service RMK Scheduler Status est OK si le planificateur est en cours d'exécution et a réussi à créer les environnements d'exécution.

Status of the scheduler in monitoring.
RCC a réussi à créer les environnements — en une seconde seulement

Sur cette image, vous pouvez voir la note « Environment build took 1 second. » Une seconde pour créer un environnement Python virtuel avec Pip et Robot Framework ? C'est possible grâce à l'intelligence de RCC : les fichiers déjà téléchargés sont réutilisés et une nouvelle création n'est effectuée qu'après des modifications dans conda.yaml. La première création aurait pris 30 secondes ou plus.

Statut du plan

Le statut d’un plan est indiqué dans un service nommé d’après le nom de l’application et la suite, par exemple RMK MyApplication_mybot Plan.

Status of the test suite in monitoring.
L'exécution d'un plan — particulièrement pertinent pour les administrateurs

État des tests

C'est lors de l'évaluation des tests que les choses deviennent vraiment intéressantes. Sur l'image, vous pouvez désormais voir l'effet des valeurs seuils définies ci-dessus pour la durée d'exécution des tests — ici, les 2 secondes pour le statut « WARN ». Comme l'instruction « Sleep 3 Seconds » dans le test lui-même garantit déjà une durée d'exécution plus longue, ce service doit passer à « WARN » ici, bien que le test ait réussi. Le fait que le test ait réussi est indiqué par le rapport Robot Framework, auquel vous pouvez accéder via l'icône de journal « icon log ».

Status of the test in monitoring.
Résultats d’une suite spécifique — particulièrement pertinent pour les développeurs

Le rapport indique désormais clairement que le test et la suite de tests se sont déroulés avec succès.

Robot Framework report for 'Mybot' test suite.
Le journal Robot Framework, ici en mode sombre (facultatif)

Au bas des données, vous pouvez également voir les mots-clés individuels, ici par exemple « Log ${MYVAR} », ainsi que la valeur « My value » définie dans Checkmk pour « MYVAR ».

Robot Framework report at keyword level.
Le fichier journal peut être développé jusqu'aux moindres détails

Tableaux de bord

Bien sûr, vous pouvez créer vos propres tableaux de bord comme d’habitude, mais vous trouverez également deux tableaux de bord intégrés sous Monitor > Synthetic Monitoring.

Robotmk dashboard in the web interface.
Aperçu complet de la supervision synthétique Checkmk (version abrégée)

Condition préalable : pour que les tableaux de bord fonctionnent, l'inventaire matériel/logiciel doit être activé sur les ordinateurs hôtes concernés.

3. Robots gérés

Jusqu’à présent, nous avons supposé un scénario dans lequel les suites de tests sont déjà disponibles sur les ordinateurs hôtes de test. Cependant, grâce à la fonctionnalité « managed robots », les robots peuvent également être gérés de manière centralisée sur le serveur Checkmk et distribués via des agents Checkmk.

Grâce à la procédure ci-dessus, vous connaissez déjà l’ensemble de la configuration des robots existants utilisant la règle « Robotmk scheduler (Windows|Linux) ».

De plus, il vous suffit d’importer le fichier d’archive (voir ci-dessous) contenant le robot compressé. Ici, sur la capture d’écran, sous «Plan Settings », vous pouvez voir le champ de téléchargement pour le robot — les mêmes options que dans le planificateur. Faites attention au nom en haut sous «Properties. ». Ce champ est obligatoire, car le robot sera ensuite configuré dans le planificateur à l’aide de ce nom.

Configuration of a managed robot.
Le robot lui-même est simplement transféré sous forme d’archive

Pour utiliser un tel robot géré par Managed robot, la règle Robotmk scheduler (Windows|Linux) est à nouveau utilisée. Mais au lieu de planifier l’exécution du robot ici, il suffit de spécifier le robot préconfiguré souhaité sous Sequence of plans. Si nécessaire, vous pouvez toujours adapter ici la configuration du plan pour le robot préconfiguré destiné à cette application. En pratique, cette fonctionnalité se limite donc généralement à l’externalisation de la configuration connue et à la distribution des fichiers d’archive du robot par l’agent.

Configuration of the scheduler with a managed robot.
Le robot géré par mybot_managed est planifié à l'aide de la configuration de plan par défaut pour la gestion

L'agent transfère ensuite les archives spécifiées vers les ordinateurs hôtes souhaités et les stocke dans le répertoire de l'agent sous robomk_output/managed, où elles sont ensuite décompressées puis exécutées.

3.1. Création d'une archive de robot

En principe, vous pourriez simplement archiver le répertoire complet du robot avec les fichiers standard (robot.yaml, conda.yaml, test.robot).

Cependant, ces tests sont souvent gérés via Git et, par conséquent, il existe régulièrement des fichiers qui ne doivent pas être distribués — ceux-ci sont généralement gérés via un fichier gitignore. Pour vous aider à garantir des archives propres, voici deux petits scripts pour Windows et Linux qui créent des archives sans les fichiers à ignorer. Utilisez ces scripts uniquement à titre d’aide et testez toujours au préalable le fonctionnement sur votre système.

Windows
Linux
Windows
PS C:\robots\myrobot> $FolderName = (Get-Item .).Name
PS C:\robots\myrobot> git archive --format=zip -o "../$FolderName.zip" HEAD
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !
Linux

4. Supervision des indicateurs clés de performance (KPI)

Vous avez déjà vu plus haut que les durées d'exécution des mots-clés de haut niveau peuvent être surveillées dans le cadre d'un test. Cependant, vous pouvez également inclure n'importe quel mot-clé en tant que service individuel dans la supervision. Cela s'avère particulièrement utile pour les mots-clés utilisateurs très abstraits, qui à leur tour appellent plusieurs mots-clés simples (standard) tels que Click ou Log — en d'autres termes, ceux-ci sont essentiellement utilisés comme des fonctions. Deux variantes sont disponibles pour la reconnaissance du service : les modèles dans Checkmk et les marqueurs dans les suites de tests.

Pour l’identification basée sur des modèles, les mots-clés souhaités sont enregistrés sous forme d’expressions régulières à l’aide des règles Checkmk.

Pour l’identification basée sur des marqueurs, ces derniers sont codés directement devant les mots-clés dans les tests eux-mêmes. Ces marqueurs sont traités à l’aide de la bibliothèque propre à Robotmk.

Quelle que soit la manière dont les données des mots-clés sont intégrées à la supervision, elles doivent y être configurées à l’aide de la règle de service « Robotmk KPI monitoring ».

4.1. Variante 1 : identification via un modèle

Pour cette variante, vous n’avez pas besoin d’apporter de modifications à vos tests eux-mêmes. Il vous suffit d’ouvrir la règle « Robotmk KPI discovery » et de saisir les mots-clés à superviser sous forme d’expressions régulières ou de noms très spécifiques.

Configuration of keywords as separate services for Robotmk.
Configuration des mots-clés en tant que services distincts

Attention : si l'expression régulière correspond à plusieurs mots-clés dans le même test, un seul mot-clé sera reconnu et son statut de service sera UNKNOWN (car Checkmk ne sait pas quelle correspondance est réellement souhaitée).

4.2. Variante 2 : Identification via un marqueur

Pour une identification via un marqueur, vous devez suivre les étapes suivantes :

  1. Installez la bibliothèque Robotmk.

  2. Importez la bibliothèque Robotmk dans la suite.

  3. Placez le mot-clé « marker » devant les mots-clés concernés.

Pour l'installation, le fichier « conda.yaml » ci-dessus doit être complété par « robotframework-robotmklibrary ». Les modifications par rapport à la suite ci-dessus sont surlignées en jaune :

C:\robots\mybot\conda.yaml
channels:
  - conda-forge

dependencies:
  - python=3.10.12
  - pip=23.2.1
  - pip:
     - robotframework==7.0
     - robotframework-robotmklibrary
Copier le contenu du fichier dans le presse-papiers
Contenu du fichier copié avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

La suite de tests tests.robot doit être complétée par la bibliothèque (dans la zone Settings) et un marqueur. Les KPI font souvent référence à des mots-clés d'utilisateurs individuels ; c'est pourquoi le mot-clé Foobar est ajouté ici (qui n'appelle que le mot-clé standard Log et est lui-même appelé par le cas de test My Test).

C:\robots\mybot\tests.robot
*** Settings ***
Documentation       Template robot main suite.
Library             RobotmkLibrary

*** Variables ***
${MYVAR}    Hello Checkmk!

*** Test Cases ***
My Test
    Log      ${MYVAR}
    Sleep    3
    Log      Done.
    Monitor Subsequent Keyword Runtime  discover_as=My user keyword
    Foobar

*** Keywords ***
Foobar
    Log    The foo barred!

Le mot-clé Robotmk Monitor Subsequent Keyword Runtime sert de marqueur pour (déclencher Checkmk afin de) surveiller le mot-clé suivant (Foobar) ; plus précisément, son temps d'exécution. L'argument facultatif discover_as permet de spécifier un nom individuel pour le service dans la supervision — le mot-clé Foobar apparaît donc dans la supervision sous la forme d'un service appelé My user keyword.

Le grand avantage ici par rapport à l’identification basée sur des modèles est que le même mot-clé peut également faire l’objet d’une supervision explicite plusieurs fois au sein d’un même test.

Voici l’exemple ci-dessus, complété par deux appels à Foobar :

C:\robots\mybot\tests.robot
*** Settings ***
Documentation       Template robot main suite.
Library             RobotmkLibrary

*** Variables ***
${MYVAR}    Hello Checkmk!

*** Test Cases ***
My Test
    Log      ${MYVAR}
    Sleep    3
    Log      Done.
    Monitor Subsequent Keyword Runtime  discover_as=My user keyword
    Foobar
    Monitor Subsequent Keyword Runtime  discover_as=Foobar_2
    Foobar
    Monitor Subsequent Keyword Runtime  discover_as=Foobar_3
    Foobar

*** Keywords ***
Foobar
    Sleep    3
    Log    The foo barred!

Les trois appels au mot-clé Foobar apparaîtraient donc dans la supervision sous la forme My user keyword, Foobar_2 et Foobar_3.

4.3. Configuration de la règle de service

Quelle que soit la variante utilisée pour la supervision des mots-clés, l'étape suivante consiste toujours à configurer l'évaluation : À quel moment d'exécution les services doivent-ils être redirigés vers WARN ou CRIT ? Pour ce faire, définissez les niveaux correspondants dans la règle Robotmk KPI monitoring.

Service rule for the evaluation of keywords.
Règle de service pour l'évaluation des mots-clés

4.4. Mots-clés dans la supervision

Les services de mots-clés apparaissent dans la supervision selon l'un de ces deux modèles :

  1. Basé sur un modèle : RMK MyApplication_mybot Test: /Test: My Test KPI (cmk): Foobar

  2. Basé sur un marqueur : RMK MyApplication_mybot Test: /Test: My Test KPI (rf): Foobar

La différence réside donc uniquement dans l'indication de l'origine entre parenthèses, juste avant le mot-clé.

Pattern- and marker-based keywords in monitoring.
Mots-clés basés sur des modèles et des marqueurs dans la supervision

Comme le montre la capture d'écran ci-dessus avec deux services de mots-clés Foobar, la suite a dû être légèrement étendue :

C:\robots\mybot\tests.robot
*** Settings ***
Documentation       Template robot main suite.
Library             RobotmkLibrary

*** Variables ***
${MYVAR}    Hello Checkmk!

*** Test Cases ***
My Test
    Log      ${MYVAR}
    Sleep    3
    Log      Done.
    Foobar
    Monitor Subsequent Keyword Runtime  discover_as=Foobar
    Barfoo

*** Keywords ***
Foobar
    Sleep    3
    Log    The foo barred!

Barfoo
    Sleep    11
    Log    The End of Barfoo

Les deux mots-clés Foobar et Barfoo apparaissent tous deux sous le nom Foobar dans la supervision, mais peuvent être distingués par l'indication de l'origine entre parenthèses.

L'exemple avec deux mots-clés différents sur une liste sous le même nom sert principalement à clarifier les informations d'origine.

Comme déjà mentionné ci-dessus, l'objectif réel de « discover_as » est de pouvoir appeler un mot-clé plusieurs fois dans un test tout en nommant chaque occurrence individuellement.

5. Mode hors ligne pour les environnements de test/RCC

Par défaut, RCC se charge de configurer les environnements en lisant la configuration YAML et en téléchargeant les paquets et dépendances correspondants depuis le réseau.

Mais que faire si les ordinateurs hôtes sur lesquels les tests doivent être exécutés n'ont pas d'accès à internet ou disposent d'un accès très limité ?

Checkmk, ou plus précisément le planificateur Robotmk, peut vous aider dans ce cas en permettant de créer des environnements RCC sans nécessiter de connexion internet directe. En bref : les environnements sont créés à l’avance sur n’importe quel ordinateur, puis distribués soit via une archive ZIP, soit à partir d’un serveur distant.

Lisez ce qui suit pour découvrir exactement comment ces deux méthodes fonctionnent. Une petite connaissance de RCC est toutefois nécessaire pour comprendre cela — et nous devons développer un peu le sujet — d’une part pour expliquer les rouages techniques de RCC, et d’autre part pour expliquer pourquoi, dans ce contexte particulier, nous ne suivons pas notre pratique habituelle consistant à nous référer au fabricant.

5.1. RCC — une brève digression

Historique de RCC

D’où vient cet outil ? RCC a été initialement développé par la société Robocorp (aujourd’hui Sema4.ai). Le modèle économique de Sema4.ai repose sur une plateforme basée sur le cloud sur laquelle les clients peuvent exécuter leurs propres scripts afin d’automatiser leurs processus métier. RCC sert de base pour créer des environnements virtuels identiques, tant localement chez le client que dans le cloud.

Chez Checkmk, nous utilisons RCC dans un autre contexte : ici, vos scripts Robot Framework doivent pouvoir s’exécuter aussi bien sur votre ordinateur local (de développement) que sur les ordinateurs hôtes Robotmk (Windows ou Linux).

Dans le cadre de l’acquisition de Robocorp par Sema4.ai en 2024, RCC a fait l’objet d’un nouveau processus d’octroi de licence et est désormais un logiciel propriétaire. Ce processus n’a malheureusement pas été très transparent — d’où cette brève explication.

La variante fournie avec Checkmk est basée sur la dernière version ouverte de RCC et est maintenue par nos soins. La fourche RCC fait donc désormais partie intégrante de Checkmk et est également documentée ici — dans la mesure où cela est pertinent pour son utilisation dans Checkmk.

La situation est un peu plus complexe avec RCC Remote Server, l’outil chargé de la distribution des environnements RCC. Il s’agit simplement d’un composant de RCC qui n’est créé qu’au moment de la compilation ; ce n’est pas un produit à part entière. C’est pourquoi il n’y a jamais eu de véritable documentation de la part de Robocorp, à l’exception d’une application très spécifique pour la plateforme Robocorp.

Fonctionnement interne de RCC

Vous devez vous familiariser avec certains termes et concepts pour les comprendre :

Terme Explication Remarque

Catalogue

Modèle d'environnements

Modèles pour la création d'environnements virtuels

Hololib

Collection de catalogues disponibles

Hololib est un référentiel de plans dans lequel chaque fichier unique n'est stocké qu'une seule fois et peut être utilisé pour créer plusieurs espaces.

Espace

Instance d'un environnement

Plusieurs espaces peuvent être créés à partir d'un seul catalogue

Holotree (partagé)

Collection d'espaces disponibles

Holotree (partagé) est un espace de stockage pour les espaces, dans lequel chaque fichier unique n'est stocké qu'une seule fois — et est disponible pour plusieurs espaces.

ROBOCORP_HOME

Variable d'environnement

Chemin d'accès où RCC stocke Hololib et Holotree ; par défaut, %HOME%/Appdata/Local/robocorp/ sous Windows et ~/.robocorp sous Linux.

ROBOCORP_HOME - dans Checkmk

Variante sécurisée avec accès en écriture limité

Chemin d'accès sous lequel Checkmk-RCC stocke Hololib et Holotree ; sous C:\robotmk\rcc_home ou /opt/robotmk/rcc_home/

Chemin d'accès à Holotree

Chemin d'accès absolu, sous ROBOCORP_HOME

Sous ce chemin d'accès, les blueprints Hololib sont compilés en espaces Holotree ; il doit être identique sur l'ordinateur source et l'ordinateur cible au sein d'un environnement.

RCCRemote

Serveur destiné à la mise à disposition des catalogues.

Il est généralement exploité via le conteneur Docker RCCRemote.

ROBOCORP_HOME

ROBOCORP_HOME mérite une attention particulière. Cette variable d’environnement définit le chemin d’accès sous lequel RCC enregistre Hololib et Holotree. Tous les fichiers binaires de Hololib, c’est-à-dire la collection de modèles, sont compilés sous un chemin absolu — le «holotree path», un sous-dossier de «ROBOCORP_HOME». Cela signifie également que les mêmes chemins d’accès doivent être disponibles sur les ordinateurs hôtes sur lesquels les robots s’exécuteront ultérieurement que sur l’ordinateur sur lequel vous créez les robots.

Autre élément pertinent dans ce processus : le contexte utilisateur. Sous Windows, le planificateur Robotmk est exécuté par défaut en tant que sous-processus de l’agent Checkmk sous le compte LocalSystem (dans le contexte SYSTEM). Sous Linux, le planificateur s’exécute sous le même utilisateur que l’agent, c’est-à-dire root. Si les contextes utilisateur doivent désormais être modifiés, Windows et Linux se comporteront différemment.

Windows : L'utilisateur du planificateur SYSTEM ne peut pas être modifié, mais l'option Execute plan as a specific user peut être utilisée pour configurer un utilisateur pour l'exécution de robots/plans individuels.

Linux : la règle Customize agent package (Unix) et son option Customize user permettent de modifier l'utilisateur de l'agent ; toutefois, il n'est pas possible d'exécuter des robots/plans individuels dans d'autres contextes.

Dans Checkmk, le planificateur Robotmk s'autorise une mesure de sécurité supplémentaire pour RCC : Afin de garantir que seuls les planificateurs et les utilisateurs configurés manuellement disposent réellement d'un accès en écriture à ROBOCORP_HOME, un chemin d'accès très spécifique doit être défini ici — conformément au tableau ci-dessus, plus un niveau hiérarchique supplémentaire pour le contexte utilisateur souhaité (voir ci-dessous pour un exemple concret). Cela empêche les fichiers malveillants de se retrouver dans Hololib/Holotree, c'est-à-dire l'injection de code (en résumé : si ROBOCORP_HOME sur la machine de développement était défini sur quelque chose comme C:\foobar et si ce répertoire existait déjà sur les ordinateurs hôtes de test et contenait un logiciel malveillant, celui-ci pourrait être exécuté).

5.2. Variante 1 : archives ZIP

La pratique est bien plus simple que le contexte technique — en particulier lorsque l’on travaille avec un catalogue sous forme d’archive ZIP (ou d’archive tar.gz sous Linux). En gros, il suffit de créer le catalogue en spécifiant la variable ROBOCORP_HOME, de l’exporter sous forme d’archive, puis de le distribuer manuellement. Vous trouverez ci-dessous le chemin d’accès détaillé. Les chemins d’accès dans les exemples suivants sont limités à Windows — ces instructions ne seront spécifiées explicitement que si Linux nécessite des instructions différentes.

Définir ROBOCORP_HOME

Le catalogue, c'est-à-dire le modèle pour les environnements (espaces) explicitement implémentés, peut être créé sur n'importe quel ordinateur.

Commencez par définir ROBOCORP_HOME dans le terminal.

Sous Windows :

Pour l'exécution sans interface graphique sous le compte LocalSystem :

C:\robots> set ROBOCORP_HOME=C:\robotmk\rcc_home\current_user
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Pour les robots nécessitant un accès au bureau et un utilisateur correspondant :

C:\robots> set ROBOCORP_HOME=C:\robotmk\rcc_home\HarryHirsch
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Sous Linux :

Pour l'exécution sans interface graphique en tant que utilisateur standard :

user@host:~$ export ROBOCORP_HOME=/opt/robotmk/rcc_home/current_user
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Pour les robots nécessitant un accès au bureau et un utilisateur correspondant :

user@host:~$ export ROBOCORP_HOME=/opt/robotmk/rcc_home/HarryHirsch
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Vous pouvez ensuite accéder au répertoire de votre bot et créer l'environnement/le catalogue :

C:\robots> cd myrobot
C:\robots\myrobot> rcc holotree vars
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Création du catalogue ZIP

Le catalogue doit maintenant être exporté au format ZIP. Vérifiez d'abord si un catalogue Hololib avec le chemin d'accès correct au fichier Holotree existe déjà. Pour ce faire, vous avez besoin du hachage de l'conda.yaml :

C:\robots\myrobot> rcc holotree hash conda.yaml

Blueprint hash for [conda.yaml] is 296bd91e514e7d1d
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Affichez ensuite tous les catalogues Hololib disponibles (version abrégée présentée ici) :

C:\robots\myrobot> rcc holotree catalogs

Blueprint         Platform       Dirs    Files    Size     Relocate  Holotree path
---------         --------       ------  -------  -------  --------  -------------
.296bd91e514e7d1d windows_amd64     358     4895     123M        28  c:\ProgramData\robocorp\ht
...
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Lorsque le hachage est trouvé dans la liste, vous pouvez exporter :

C:\robots\myrobot> rcc holotree export -r robot.yaml --zipfile myrobot-env.zip
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Déployer le catalogue ZIP

Déployer le catalogue compressé est simple : Copiez manuellement l'archive sur l'ordinateur hôte de test, par exemple dans C:\robotmk\holotrees\myrobot-env.zip.

Dans la règle Robotmk Scheduler (Windows|Linux) (ou dans Managed robots), définissez l'option Environment dependency handling sur Load from ZIP file , puis saisissez le chemin d'accès souhaité vers le catalogue compressé, dans ce cas C:\robotmk\holotrees\myrobot-env.zip. Ne confondez pas ce chemin d'accès avec l'holotree path ! Celui-ci sert uniquement de référentiel pour les fichiers ZIP du catalogue Hololib à importer.

Information on handling a zipped catalog.
Emplacement de stockage des catalogues Hololib compressés (modèles pour la création d'environnements)

Lorsque le planificateur sera lancé ultérieurement, il importera tous les fichiers ZIP des catalogues Hololib et créera les espaces à partir de ces modèles, c'est-à-dire les environnements qui seront effectivement utilisés. Ainsi, au lieu de télécharger toutes les dépendances via pip et Conda depuis internet, seule une archive est décompressée — ce qui est non seulement hors ligne, mais aussi beaucoup plus rapide.

Et pour éviter tout malentendu — les robots eux-mêmes doivent bien sûr toujours être disponibles sur l’ordinateur hôte de test ou déployés en tant que robots gérés — il s’agit ici uniquement des environnements !

5.3. Variante 2 : serveur RCCRemote

Tout d’abord : RCCRemote n’est pas un outil autonome, vous ne trouverez aucune documentation ni même de page produit chez Robocorp/Sema4. Le serveur distant n’est qu’une partie de RCC et est intégré lors de la compilation de RCC. Le serveur est généralement exploité via un conteneur. Pour l’exploitation en conteneur, il existe désormais un projet sur les pages GitHub d’Elabit, le développeur du plugin Robotmk d’origine, appelé RCCRemote-Docker. Cependant, RCCRemote et RCCRemote-Docker ne font pas partie de Checkmk Synthetic Monitoring et ne sont pas couverts par le support Checkmk !

Les catalogues pour ce chemin d'accès peuvent être créés de deux manières : les catalogues exportés sous forme de fichiers ZIP (voir ci-dessus) peuvent être utilisés aussi bien sous Windows que sous Linux. Sous Linux uniquement, il est également possible de créer les catalogues directement dans le conteneur Docker RCCRemote, ce qui élimine complètement toute intervention manuelle.

Vous trouverez des informations sur la configuration de RCCRemote-Docker, la gestion des certificats et l'importation des catalogues sur les pages du projet.

La configuration côté Checkmk est à nouveau — en général — assez simple : l'option « Environment dependency handling » est cette fois-ci définie sur « Fetch from RCC remote server » et complétée par l'adresse du serveur.

Specification for handling RCCRemote.
Le Docker RCCRemote peut fournir des catalogues via le réseau

Il manque encore un dernier paramètre, selon que votre serveur RCCRemote utilise un certificat auto-signé ou signé par une autorité de certification (CA). Dans les deux cas, vous devez généralement définir l'option « Robotmk scheduler (Windows|Linux) » de RCC profile configuration à Custom profile.

Pour un certificat auto-signé, il suffit de laisser la case « Validate TLS certificates » décochée :

Inactive TLS validation for self-signed certificates.
Les certificats TLS ne doivent pas nécessairement être validés.

S'il s'agit toutefois d'un certificat signé par une autorité de certification, cette option doit être activée et le certificat de l'autorité de signature doit être enregistré sous Root CA (au format PEM) :

”Stored certificate from the CA.
Les certificats TLS signés par une autorité de certification sont validés comme d'habitude en spécifiant l'autorité de certification racine

6. Dépannage

6.1. Le planificateur de rapports signale l'erreur «No Data »

Si le planificateur ne reçoit aucune donnée, la création de l'environnement n'a probablement pas fonctionné. Cela est souvent dû à des problèmes de réseau, qui empêchent par exemple le chargement de certaines dépendances. Dans ce cas, veuillez consulter le fichier journal correspondant à l'adresse C:\ProgramData\checkmk\agent\robotmk_output\working\environment_building.

6.2. Échec de la configuration de l'environnement :post-install script execution

Il s'agit d'une erreur particulièrement intéressante que vous pourriez rencontrer sur des systèmes Windows récents. Le fichier conda.yaml peut également contenir des instructions à exécuter après l'installation des dépendances, par exemple l'initialisation du navigateur Robot Framework. Les instructions Python doivent donc être exécutées ici. Par défaut, Windows 11 dispose d'alias pour python.exe et python3.exe qui renvoient vers le Microsoft Store. Vous devez désactiver ces alias sous « Paramètres/Alias pour l'exécution des applications ».

7. Fichiers et répertoires

7.1. Windows

Chemin d'accès au fichier Description

C:\ProgramData\checkmk\agent\robotmk_output\working\suites\

Fichiers journaux et résultats des suites

C:\ProgramData\checkmk\agent\robotmk_output\working\environment_building

Fichiers journaux relatifs à la création d'environnements virtuels

C:\ProgramData\checkmk\agent\robotmk_output\working\rcc_setup

Messages issus de l'exécution du RCC

C:\ProgramData\checkmk\agent\logs\robotmk_scheduler_rCURRENT.log

Fichier journal du plugin d'agent

C:\ProgramData\checkmk\agent\bin\

rcc.exe et de l'robotmk_scheduler.exe

C:\ProgramData\checkmk\agent\plugins\

robotmk_agent_plugin.exe du plugin d'agent

7.2. Linux

Chemin d'accès au fichier Description

/var/lib/check_mk_agent/robotmk/scheduler/plans

Fichiers journaux et résultats des suites

/var/lib/check_mk_agent/robotmk/scheduler/environment_building

Fichiers journaux relatifs à la création d'environnements virtuels

/var/lib/check_mk_agent/robotmk/scheduler/rcc_setup

Messages issus de l'exécution du RCC

/usr/lib/check_mk_agent/robotmk/

rcc et de l'robotmk_scheduler

/usr/lib/check_mk_agent/plugins/

robotmk_agent_plugin du plugin d'agent

/var/lib/check_mk_agent/robotmk/scheduler/managed/

Emplacement d'exécution des robots gérés par la gestion

/usr/lib/check_mk_agent/managed_robots/

Emplacement de stockage des archives des robots gérés en gestion

Attention : sous Linux, le planificateur Robotmk ne crée pas son propre fichier journal (sous Windows, le fichier « robotmk_scheduler_rCURRENT.log »), mais consigne les informations via l'agent et syslog. L'instruction correspondante :

user@host:~$ journalctl -xu robotmk-scheduler-daemon.service
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Last modified: Mon, 08 Dec 2025 07:00:53 GMT via commit 2ce589efc
Sur cette page