Checkmk
to checkmk.com

1. Synthetisches Monitoring mit Robot Framework

CEE Checkmk Synthetic Monitoring ist in den kommerziellen Checkmk-Editionen verfügbar, benötigt jedoch eine zusätzliche Subskription. Sie können die Funktion allerdings mit bis zu drei Tests kostenlos und ohne Zeitbegrenzung testen.

Mit Checkmk können Sie Ihre eigene Infrastruktur sehr genau überwachen — bis hin zur Frage, ob ein bestimmter Service, beispielsweise ein Webserver, ordentlich läuft. Wird Ihre Website über einen Cloud-Service von Dritten betrieben, werden Sie keinen Zugriff auf den Service selbst haben, können aber über einen HTTP-Check prüfen, ob die Website erreichbar ist. Aber was sagt das über die Nutzererfahrung aus? Dass ein Online-Shop erreichbar ist, heißt ja noch nicht, dass die Navigation, Bestellprozesse und dergleichen reibungslos funktionieren.

An dieser Stelle setzt das Checkmk Synthetic Monitoring an. Mit dem Plugin Robotmk bietet Checkmk echtes End-to-End-Monitoring, also die Überwachung laufender Anwendungen aus Sicht der Nutzer. Das eigentliche Testen übernimmt dabei die Open-Source-Software Robot Framework — in deren Trägerverein auch die Checkmk GmbH Mitglied ist.

Mit der Automationssoftware lässt sich Nutzerverhalten komplett automatisieren, um beispielsweise Bestellprozesse in Online-Shops Klick für Klick nachzustellen. Das Besondere an Robot Framework: Tests werden nicht in einer vollwertigen Programmiersprache geschrieben, sondern über einfach zu verwendende Keywords definiert, wie Open Browser oder Click Button. So genügt ein Open Browser checkmk.com zum Aufrufen der Checkmk-Website. Mehrere Testfälle werden dann in so genannten Test-Suites zusammengefasst (in Form einer .robot-Datei).

Robotmk kann nun diese Robot-Framework-Test-Suites auf dem Host triggern und ihre Ausführung und Resultate als Services in Checkmk überwachen. In der Checkmk-Weboberfläche finden Sie dann Status, zugehörige Performance-Graphen sowie die Original-Auswertungen von Robot Framework selbst.

1.1. Komponenten

Für dieses End-to-End-Monitoring spielen allerhand Komponenten zusammen, daher hier ein kurzer Überblick.

Checkmk-Server

Checkmk Synthetic Monitoring wird über Robotmk realisiert, das ein Agentenplugin als Datensammler nutzt und den Robotmk-Scheduler (auf dem überwachten Host) für das Triggern von Robot-Framework-Projekten. Aktiviert und konfiguriert wird das synthetische Monitoring über die Regel Robotmk Scheduler. Hier legen Sie fest, welche Test-Suites ausgeführt werden sollen und wie exakt Robot Framework diese starten soll — zusammengefasst in einem Plan. Einmal ausgerollt, sorgt der Robotmk-Scheduler auf dem Ziel-Host für die planmäßige Ausführung Ihrer Robot-Framework-Suites.

Im Monitoring bekommen Sie letztlich mehrere neue Services: RMK Scheduler Status zeigt den Status des Schedulers selbst, also ob Test-Suites erfolgreich gestartet werden konnten. Hinzu kommen Services für alle konfigurierten Test-Pläne (etwa RMK MyApp1 Plan) und einzelnen Tests aus Test-Suites (etwa RMK MyApp1 Test). Zu den Services der einzelnen Tests gehören auch die originalen Robot-Framework-Berichte.

Zu guter Letzt gibt es noch zwei optionale Service-Regeln: Robotmk plan und Robotmk test sorgen für die Feineinstellung der Plan- und Test-Services — beispielsweise um Statuswechsel bei bestimmten Laufzeiten zu erwirken.

Robotmk-Regeln im Setup-Menü.
Die Robotmk-Regeln in Checkmk

Testmaschine

Die Robot-Framework-Test-Suites müssen Sie auf einem Windows-Host bereit stellen. Für die Ausführung benötigt Robot Framework Zugriff auf deren Abhängigkeiten (Python, Bibliotheken, Treiber für die Browser-Automation und so weiter). Diese Konfiguration ist unabhängig von Checkmk und kann deklarativ in einem portablen Paket abgelegt werden. Dies übernimmt das Open-Source-Kommandozeilenwerkzeug RCC. Dieses baut anhand Ihrer Konfigurationsdateien im YAML-Format virtuelle Python-Umgebungen samt Abhängigkeiten und Robot Framework selbst. Der als Hintergrundprozess laufende Robotmk-Scheduler stößt diesen Bau an und sorgt anschließend selbst für die Ausführung der Tests.

Ein solches RCC-Automationspaket mit der Paketkonfiguration (robot.yaml), der Definition der Ausführungsumgebung (conda.yaml) und den Test-Suites (tests.robot) wird auch Roboter genannt. RCC und der Scheduler werden mit dem Checkmk-Agenten ausgerollt, das Automationspaket muss auf dem Host bereitstehen.

Der große Vorteil von RCC: Der ausführende Windows-Host selbst benötigt keine konfigurierte Python-Umgebung.

Der Agent selbst wird nur für die Übertragung von Ergebnissen, Protokollen und Screenshots benötigt. Dies ermöglicht auch die Überwachung sehr lange laufender oder lokal sehr ressourcenintensiver Suites – vorausgesetzt, Ihr Windows-Host verfügt über entsprechende Kapazitäten.

2. Test-Suites überwachen mit Robotmk

Im Folgenden zeigen wir, wie Sie eine Test-Suite ins Monitoring aufnehmen. Als Beispiel dient dazu eine simple Hello-World-Suite, die lediglich zwei Strings ausgibt und dazwischen kurz wartet. Eine Einführung in Robot Framework ist hier freilich nicht das Thema, ein kurzer Blick in das Automationspaket und die Demo-Test-Suite muss aber sein, damit Sie sehen, welche Daten wo im Monitoring landen.

Das Beispiel läuft auf Basis von RCC, so dass der Windows-Host nicht extra konfiguriert werden muss. Die rcc.exe wird mit dem Agenten ausgerollt und findet sich unter C:\ProgramData\checkmk\agent\bin\. Die Beispiel-Suite können Sie als ZIP-Datei über GitHub herunterladen. Das Verzeichnis der Suite:

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

RCC kann grundsätzlich auch Test-Suites auf Basis etlicher anderer Programmiersprachen verarbeiten, für den Einsatz in Checkmk muss es aber die Deklaration nach Robot Framework sein.

Das Suite-Dateiverzeichnis beinhaltet nun zwei wichtige Dateien: Die Deklaration der für die Ausführung benötigten Umgebung in der Datei conda.yaml und die eigentlichen Tests in der Datei tests.robot (die Suite). Die Datei robot.yaml ist für den Einsatz in Checkmk nicht relevant, wird aber von RCC benötigt.

Der Vollständigkeit halber, hier ein kurzer Blick in die Datei 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

Zu Beginn legt tasks fest, welche Aufgaben, sprich Tests, überhaupt ausgeführt werden sollen. Allerdings wird dieser Part zwar von RCC formal vorausgesetzt, von Robotmk jedoch nicht benötigt.

Tip

Robot Framework unterscheidet zwischen Tests und Tasks, die für Automatisierungen stehen. Allerdings werden beide exakt gleich verwendet.

Im Bereich environmentConfigs wird dann lediglich auf die conda.yaml verwiesen, die sich um die eigentliche Umgebung kümmert.

Für die Umgebung werden in diesem Fall lediglich die Abhängigkeiten Python, Pip und Robot Framework installiert. Im Monitoring taucht der Umgebungsbau später als RCC environment build status auf. Nur wenn die Umgebung erfolgreich gebaut wird, können auch die Tests abgearbeitet und folglich überwacht werden.

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

dependencies:
  - python=3.10.12
  - pip=23.2.1
  - pip:
     - robotframework==7.0

Die eigentliche Test-Suite sieht nun wie folgt aus:

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.

Hier wird also lediglich der Wert der Variablen MYVAR ausgegeben, dann 3 Sekunden gewartet und abschließend Done ausgegeben. Den Wert der Variablen können Sie später in der Checkmk-Weboberfläche setzen — ansonsten wird der hier gesetzte Standard Hello Checkmk! genutzt.

Tip

Sie können diese Test-Suite manuell ausführen. Dafür muss der Agent samt RCC bereits installiert sein (oder Sie laden die RCC-Binary selbst herunter). Navigieren Sie zunächst in Ihr Test-Suite-Dateiverzeichnis, in dem auch die tests.robot liegt. Starten Sie dann die RCC-Shell mit C:\ProgramData\checkmk\agent\bin\rcc.exe task shell. Daraufhin wird die in der conda.yaml definierte virtuelle Umgebung gebaut. Anschließend starten Sie die Suite mit robot tests.robot.

Und genau diese Ausführung übernimmt der Robotmk-Scheduler, sobald das Agentenplugin aktiv ist.

2.1. Regel für das Agentenplugin konfigurieren

Den Robotmk-Scheduler finden Sie unter Setup > Agent rules > Robotmk scheduler (Windows). Da die Regel recht umfangreich ist, hier zunächst ein Blick auf die noch leere Konfiguration:

Leere Robotmk-Scheduler-Regel.
Konfiguration des Agentenplugins

Zunächst benötigt der Scheduler die Angabe des Basisverzeichnisses, in dem all Ihre Test-Suites liegen. Tragen Sie diesen beliebigen, absoluten Pfad unter Base directory of suites ein, beispielsweise C:\robots.

Pfad für Test-Suites.
Basisverzeichnis für alle Robot-Framework-Projekte

Mit Parallel plan groups folgt nun ein Checkmk-eigenes Konzept.

Zur Erklärung müssen wir zunächst eine Hierarchieebene tiefer gehen: Hier sehen Sie den Punkt Sequential plans. Ein solcher sequenzieller Plan legt fest, welche Suites mit welchen Parametern ausgeführt werden sollen. Und Robot Framework arbeitet diese Suites dann nacheinander ab. Der Grund ist simpel: In der Praxis geht es manchmal um Tests, die auf dem Desktop ausgeführt werden und da könnten sich mehrere Test-Suites gleichzeitig in die Quere kommen (sich gegenseitig "die Maus klauen").

Die Plangruppen sind nun eine Kapselung für sequenziell ausgeführte Pläne — und werden selbst parallel ausgeführt. Auch hier ist der Grund simpel: So können Test-Suites, die eben nicht auf den Desktop angewiesen sind, ohne Verzögerung in eigenen Plänen ausgeführt werden — wie zum Beispiel die hier im Artikel eingesetzte Test-Suite.

Wieder zurück zum Dialog: Die einzige explizite Einstellung ist das Ausführungsintervall, das Sie unter Group execution interval setzen.

Ausführungsintervall für Ausführungsgruppen.
Intervall für die (parallele) Ausführung von Plangruppen
Important

Die Pläne in der Plangruppe haben natürlich selbst eine gewisse Laufzeit, bestimmt durch den Timeout einer einzelnen Ausführung und die maximale Anzahl wiederholter Ausführungen im Falle fehlgeschlagener Tests. Das Ausführungsintervall der Plangruppe muss folglich größer sein als die Summe der maximalen Laufzeiten aller Pläne in der Gruppe. Die maximale Laufzeit eines Plans berechnet sich wie folgt: Limit per attempt × (1 + Maximum number of re-executions).

Nun geht es an die Konfiguration eines ersten Plans. Unter Application name können Sie einen beliebigen Namen eingeben. Dieser Name muss nicht eindeutig sein! Sinnvoll ist hier der Name der zu überwachenden Anwendung, beispielsweise OnlineShop oder hier im Beispiel schlicht MyApplication. Nun kann es natürlich vorkommen, dass eben dieser Online-Shop mehrfach getestet wird, sei es durch andere Test-Suites oder dieselbe Test-Suite mit unterschiedlichen Parametern. Um in solchen Fällen trotz identischer Namen dennoch eine Eindeutigkeit in den Ergebnissen zu erzielen, gibt es das Feld Variant. Wird die Anwendung OnlineShop etwa einmal auf Deutsch und einmal auf Englisch getestet (über entsprechende Parameter), könnten Sie hier entsprechende Kürzel verwenden. Im Monitoring gibt es dann Ergebnisse für My OnlineShop_de und My OnlineShop_en.

Notwendig ist hingegen die Angabe unter Relative path to test suite file or folder. Die Pfadangabe ist relativ zum oben angegebenen Basisverzeichnis, also beispielsweise mybot\test.robot für C:\robots\. Alternativ kann hier auch ein ein Verzeichnis (mit mehreren robot-Dateien) angegeben werden, dann wäre es schlicht mybot.

Bezeichnung und Pfad der Suite.
Plan für die Ausführung von Suiten

Weiter geht es mit der Execution configuration. Unter Limit per attempt legen Sie fest, wie lange eine Test-Suite maximal laufen darf — pro Versuch. Mit Robot Framework re-executions können Sie nun Robot Framework anweisen, Test-Suites bei fehlgeschlagenen Tests komplett oder inkrementell zu wiederholen. Wenn die einzelnen Tests einer Test-Suite unabhängig voneinander sind, bietet sich die inkrementelle Strategie an, um Zeit zu sparen. Testet die Test-Suite hingegen eine logische Abfolge, etwa "Login → Aufruf Produktseite → Produkt in den Warenkorb → Checkout", muss die Test-Suite natürlich komplett neu abgearbeitet werden. Am Ende gibt es immer nur ein Ergebnis.

Bei kompletten Wiederholungen werden für das Endergebnis nur in sich abgeschlossene Suite-Ergebnisse berücksichtigt: Schlägt ein Test bei der letzten Wiederholung fehl, wird die Test-Suite als Fehlschlag gewertet. Bei inkrementellen Wiederholungen setzt sich das Endergebnis aus den besten Teilergebnissen zusammen: Laufen einige Tests erst im dritten Anlauf erfolgreich durch, wird auch das Endergebnis als Erfolg gewertet. Zur Erinnerung: Die Kombination aus Versuchen und maximalen Laufzeiten aller Pläne einer Plangruppe bestimmt deren minimales Ausführungsintervall.

Konfiguration von Ausfühungslaufzeiten und -wiederholungen.
Fehlgeschlagene Tests/Suiten können wiederholt werden

Standardmäßig ist die Ausführung via RCC unter Automated environment setup (via RCC) aktiviert, für die Sie zwei Werte eintragen müssen. Zum einen benötigt RCC die Angabe, wo die Datei robot.yaml liegt. Deren primärer Zweck ist der Verweis auf die Datei conda.yaml, die für den Aufbau der Python-Umgebung verantwortlich ist, also die Installation von Python und Abhängigkeiten. Diese Angabe ist relativ zum Basisverzeichnis, das Sie oben unter Relative path to test suite file or folder gesetzt haben. Die YAML-Dateien können durchaus in Unterverzeichnissen gespeichert werden, Best-Practice ist aber das oberste Suite-Verzeichnis. Für das obige Basisverzeichnis C:\robot\ und das Suite-Verzeichnis C:\robot\mybot ist es entsprechend mybot\robot.yaml.

Beim folgenden Zeitlimit für den Bau der Python-Umgebung sollten Sie bedenken, dass bisweilen größere Datenmengen heruntergeladen und eingerichtet werden müssen. Insbesondere für die benötigten Browser fallen hier schnell einige Hundert Megabytes an — allerdings nur beim ersten Durchlauf. RCC baut Umgebungen nur dann neu auf, wenn sich der Inhalt der conda.yaml geändert hat

RCC-Konfiguration der Suite.
Zeitlimit für den Aufbau virtueller Umgebungen

Unter Robot Framework parameters haben Sie die Möglichkeit, einige der Kommandozeilenparameter von Robot Framework zu nutzen (die auch der Befehl robot --help anzeigt). Sollten Sie weitere Parameter nutzen wollen, hilft die Option Argument files. Eine hier angegebene Datei kann beliebige robot-Parameter beinhalten. Weitere Informationen über die einzelnen Parameter bekommen Sie über die Inline-Hilfe.

Für unser Beispielprojekt wird lediglich die Option Variables aktiviert und eine Variable MYVAR mit dem Wert My Value gesetzt. Sie erinnern sich an den Befehl Log ${MYVAR} oben in der Datei tests.robot? Dies ist die zugehörige Referenz.

Kommandozeilenparameter von Robot Framework.
Einige Optionen des robot-Befehls

Am Ende der Suite-Konfiguration gibt es noch drei weitgehend selbsterklärende Optionen. Execute plan as a specific user ermöglicht es, Robotmk im Kontext eines bestimmten Nutzerkontos auszuführen. Hintergrund: Standardmäßig wird Robotmk im Kontext des Checkmk-Agenten ausgeführt (LocalSystem-Konto), der keine Berechtigung für den Zugriff auf den Desktop hat. Hier kann nun ein Nutzer angegeben werden, der permanent an einer Desktop-Sitzung angemeldet sein muss und entsprechend Zugriff auf grafische Desktop-Anwendungen hat.

Mit Assign plan/test result to piggyback host lassen sich die Ergebnisse des Plans/Tests einem anderen Host zuweisen. Testet Robot Framework zum Beispiel den Bestellprozess eines Online-Shops, ließen sich die Ergebnisse so dem zugehörigen Webserver zuweisen.

Jeder Testdurchlauf produziert Daten, die unter C:\ProgramData\checkmk\agent\robotmk_output\working\suites\ abgelegt werden. Standardmäßig werden die Ergebnisse der letzten 14 Tage behalten, allerdings sollten Sie bedenken, dass sich hier schnell große Datenberge auftürmen. Pro Durchlauf fallen mindestens knapp 500 Kilobytes Daten an — mit komplexeren Test-Suites und beispielsweise eingebettete Screenshots können es aber auch schnell einige Megabyte sein. Je nach Ausführungsintervall, Größe des Reports und Anforderungen an Ihre Dokumentation, sollten Sie hier eingreifen.

Optionen für Nutzerkontext, Host-Zuweisung und automatische Aufräumarbeiten.
Automatisches Aufräumen der vielen anfallenden Daten

Hier angelangt, könnten Sie nun weitere Pläne in dieser Plangruppe oder weitere Plangruppen erstellen.

Am Ende warten noch zwei Optionen, die sich wiederum auf die komplette Robotmk-Scheduler-Konfiguration beziehen.

RCC profile configuration erlaubt die Angabe von Proxy-Servern sowie davon auszunehmende Hosts.

Sehr nützlich kann auch Grace period before scheduler starts sein: Der Scheduler startet zusammen mit dem Checkmk-Agenten noch vor der Desktop-Anmeldung — was freilich dazu führt, dass etwaige Tests auf dem Desktop fehlschlagen müssen. Über eine Vorlaufzeit lässt sich der Start manuell verzögern.

Optionen für Proxy-Server und eine Vorlaufszeit für den Scheduler-Start.
Eine Vorlaufzeit verhindert Fehlschläge

Damit ist die Konfiguration abgeschlossen und Sie können einen neuen Agenten mit dem Plugin backen und anschließend ausrollen, manuell oder über die automatischen Agenten-Updates.

Daten in der Agentenausgabe

Die Ausgabe im Agenten ist recht umfangreich: In mehreren Sektionen werden Fehlermeldungen, Status, Konfiguration und Testdaten übermittelt. Letztere finden sich in der Sektion robotmk_suite_execution_report, hier ein stark gekürzter Auszug:

mysite-robot-host-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 ...

Interessant sind hier vor allem zwei Bereiche. Zum einen rebot: Das Tool rebot hat den eigentlichen Statusbericht für Robot Framework aus gegebenenfalls mehreren Teilergebnissen (daher auch re-bot) produziert. Zum anderen die letzte Zeile html_base64: Danach folgen die HTML-Berichte von Robot Framework base64-kodiert. Auch Screenshots, die über Tests angefertigt werden, werden auf diese Weise übertragen — entsprechend umfangreich kann die Ausgabe/Datenmenge im Agenten werden.

Daten im Monitoring

Sobald der Robotmk-Scheduler und die Test-Suite durchgelaufen sind, wird die Service-Erkennung drei neue Services hervorbringen:

Die neu erkannten Robotmk-Services

Der Service RMK Scheduler Status existiert einmalig und unmittelbar nach der Verteilung. Die Services für Pläne und Tests, hier RMK MyApplication_mybot Plan und RMK MyApplication_mybot Test: /Test: My Test, kommen ins Monitoring, sobald die zugehörigen Suites ein erstes Mal durchgelaufen sind.

2.2. Service-Regeln konfigurieren

Regel für Plan-Status anlegen

Zur Erinnerung: In der Agentenregel oben wurden maximale Laufzeiten für Pläne festgelegt. Mit der Regel Robotmk plan lassen sich diese Laufzeiten auswerten. So können Sie den Service etwa auf CRIT setzen, wenn 90 Prozent aller zusammengerechneten Timeouts erreicht werden.

Konfigurationsdialog für Grenzwerte für Laufzeiten von Test-Suites.
Schwellwerte für Statuswechsel aufgrund von Laufzeiten

Im Kasten Conditions gibt es die Möglichkeit, die Regel auf bestimmte Pläne zu beschränken.

Dialog mit Beschränkung auf die Test-Suite 'mybot'.
Optionale Beschränkung auf bestimmte Pläne

Regel für Test-Status anlegen

Auch für einzelne Tests in den Test-Suites lassen sich weitere Daten ins Monitoring holen, über die Regel Robotmk test. Hier finden Sie wieder die Möglichkeit, Laufzeiten zu überwachen, sowohl von Tests als auch von Keywords. Die Überwachung von Keywords ist dabei eine Checkmk-eigene Funktion. Daher könnte auch der Suite-interne Status im Robot-Framework-Bericht OK sein, weil die Test-Suite innerhalb der maximal erlaubten Laufzeit verarbeitet wurde — in Checkmk jedoch WARN oder CRIT, weil schon bei zum Beispiel 80 Prozent dieser maximal erlaubten Laufzeit ein Statuswechsel stattfindet.

Zudem können über die Option Enable metrics for high-level keywords Metriken für übergeordnete Keywords erzeugt werden. Nützlich ist dies insbesondere dann, wenn Ihre Test so organisiert sind, dass die übergeordneten Keywords das „Was“ beschreiben und die darunter liegenden Keywords das „Wie“ — so bekommen Sie abstraktere Auswertungen.

Hier im Beispiel liegen die Schwellwerte für die maximale Laufzeit eines Tests bei 2 und 4 Sekunden. Die Auswirkungen werden Sie unten im Kapitel Robotmk im Monitoring sehen.

Regel zum Überwachen von Keywords mit Beispielwerten.
Über Keyword-Metriken lässt sich das Monitoring ausbauen

Abermals gibt es im Kasten Conditions eine explizite Filtermöglichkeit, hier für einzelne Tests.

Dialog mit Option zur Beschränkung auf Tests.
Optionale Beschränkung auf bestimmte Tests

2.3. Robotmk im Monitoring

Im Monitoring finden Sie Services für den Status des Robotmk Schedulers sowie der einzelnen Pläne und Tests — natürlich auch, wenn sie keine separaten Service-Regeln angelegt haben.

Scheduler-Status

Der Service RMK Scheduler Status ist OK, wenn der Scheduler anläuft und erfolgreich die Ausführungsumgebungen bauen konnte.

Status des Schedulers im Monitoring.
RCC konnte die Umgebungen aufbauen — in nur einer Sekunde

Hier im Bild sehen Sie den Hinweis Environment build took 1 second. Eine Sekunde, um eine virtuelle Python-Umgebung mit Pip und Robot Framework aufzubauen? Das geht, weil RCC clever ist: Bereits heruntergeladene Dateien werden wiederverwendet und neu gebaut wird nur nach Änderungen in der conda.yaml. Der erste Bau hätte hier eher 30 oder mehr Sekunden gedauert.

Plan-Status

Der Status eines Plans wird in einem Service wiedergegeben, der nach Applikationsnamen und Suite benannt ist, beispielsweise RMK MyApplication_mybot Plan.

Status der Test-Suite im Monitoring.
Die Ausführung eines Plans — vor allem relevant für Administratoren

Test-Status

Wirklich interessant wird es bei der Auswertung der Tests. Im Bild sehen Sie nun die Auswirkung der oben gesetzten Schwellwerte für die Laufzeit von Tests — hier die 2 Sekunden für den Zustand WARN. Da im Test selbst die Anweisung Sleep 3 Seconds schon für eine längere Laufzeit sorgt, muss dieser Service hier auf WARN gehen, obwohl der Test erfolgreich verlaufen ist. Dass der Test erfolgreich verlaufen ist, zeigt der Bericht von Robot Framework, den Sie über das icon log Log-Symbol bekommen.

Status des Tests im Monitoring.
Ergebnisse einer konkreten Suite — vor allem relevant für Entwickler

Der Bericht zeigt nun klar und deutlich, dass Test und Test-Suite erfolgreich durchgelaufen sind.

Robot-Framework-Bericht für Test-Suite 'Mybot'.
Der Robot-Framework-Log, hier im optionalen Dark-Mode

Ganz unten in den Daten sehen Sie auch die einzelnen Keywords, hier zum Beispiel Log ${MYVAR} samt dem in Checkmk für MYVAR gesetzten Wert My value.

Robot-Framework-Bericht auf Ebene der Keywords.
Die Log-Datei lässt sich bis auf kleinste Details ausklappen

Dashboards

Natürlich können Sie sich wie gewohnt eigene Dashboards bauen — unter Monitor > Synthetic Monitoring finden Sie aber auch zwei eingebaute Dashboards.

Robotmk-Dashboard in der Weboberfläche.
Das komplette Checkmk Synthetic Monitoring im Überblick (gekürzt)

3. Troubleshooting

3.1. Scheduler meldet No Data

Wenn der Scheduler keinerlei Daten bekommt, hat der Bau der Umgebung vermutlich nicht funktioniert. Ein häufiger Grund dafür sind Netzwerkprobleme, aufgrund derer zum Beispiel bestimmte Abhängigkeiten nicht geladen werden können. Schauen Sie in diesem Fall in die zugehörige Log-Datei unter C:\ProgramData\checkmk\agent\robotmk_output\working\environment_building.

3.2. Environment Building schlägt fehl: post-install script execution

Dies ist ein besonders interessanter Fehler, der Ihnen auf frischen Windows-Systemen begegnen könnte. In der conda.yaml können auch Anweisungen hinterlegt werden, die nach der Installation der Abhängigkeiten ausgeführt werden sollen — beispielsweise die Initialisierung des Robot-Framework-Browsers. Hier sollen also Python-Befehle ausgeführt werden. Nun hat Windows 11 standardmäßig Aliasnamen für python.exe und python3.exe vorgegeben, die auf den Microsoft-Store verweisen. Diese Aliasnamen müssen Sie unter Einstellungen/Aliase für App-Ausführung deaktivieren.

4. Dateien und Verzeichnisse

Pfad Bedeutung

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

Log-Dateien und Ergebnisse der Suites

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

Log-Dateien zum Aufbau virtueller Umgebungen

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

Meldungen der RCC-Ausführung

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

Log-Datei des Agentenplugins

C:\ProgramData\checkmk\agent\bin\

rcc.exe und robotmk_scheduler.exe

C:\ProgramData\checkmk\agent\plugins\

Agentenplugin robotmk_agent_plugin.exe

Auf dieser Seite