![]() |
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. Monitoraggio sintetico con Robot Framework
Checkmk Synthetic Monitoring è disponibile nelle edizioni commerciali di Checkmk, ma richiede un abbonamento aggiuntivo. Puoi comunque testare la funzione con un massimo di tre test gratuiti e senza limiti di tempo.
Con Checkmk puoi monitorare la tua infrastruttura molto da vicino, fino a capire se un particolare servizio, come ad esempio un server web, funziona correttamente. Se il tuo sito web è gestito da un servizio cloud di terze parti, non avrai accesso al servizio stesso, ma potrai utilizzare un controllo HTTP per verificare se il sito web è accessibile. Ma questo ti dirà qualcosa sulla user experience? Il fatto che un negozio online sia accessibile non significa che la navigazione, i processi di ordinazione e simili funzionino senza problemi.
È qui che entra in gioco Checkmk Synthetic Monitoring. Con il plug-in Robotmk, Checkmk offre un vero e proprio monitoraggio end-to-end, ovvero il monitoraggio delle applicazioni in esecuzione dal punto di vista dell'utente. Il test vero e proprio viene effettuato dal software open source Robot Framework, di cui fa parte anche Checkmk GmbH.
Il software di automazione può essere utilizzato per replicare completamente il comportamento di un utente, ad esempio per simulare i processi di ordinazione nei negozi online, "click-by-click". La particolarità di Robot Framework è che i test non vengono scritti in un vero e proprio linguaggio di programmazione, ma vengono definiti utilizzando keyword di facile utilizzo come Open Browser
o Click Button
. Un Open Browser checkmk.com
è sufficiente per richiamare il sito web di Checkmk. Diversi casi di test vengono poi combinati nelle cosiddette test suite (nel modulo di un file .robot
).
Robotmk può ora attivare queste test suite di Robot Framework sull'host e monitorarne l'esecuzione e i risultati come servizi di Checkmk. Nell'interfaccia web di Checkmk troverai quindi lo stato, i grafici delle prestazioni associate e le valutazioni originali di Robot Framework stesso.
1.1. I componenti
Diversi componenti lavorano insieme per creare questo monitoraggio end-to-end: ecco una breve panoramica.
Server Checkmk
Il Checkmk Synthetic Monitoring è realizzato tramite Robotmk, che utilizza un plug-in dell'agente come raccoglitore di dati e lo scheduler Robotmk (sull'host monitorato) per attivare i progetti di Robot Framework. Il monitoraggio sintetico viene attivato e configurato tramite la regola Robotmk Scheduler. Qui specifichi quali suite di test devono essere eseguite e come esattamente Robot Framework deve avviarle - riassunte in un piano.Una volta avviato, lo scheduler Robotmk sull'host di destinazione assicura l'esecuzione programmata delle suite di Robot Framework.
Nel monitoraggio, verranno generati diversi nuovi servizi: RMK Scheduler Status mostra lo stato dello scheduler stesso, cioè se le suite di test sono state avviate con successo. Ci sono anche servizi per tutti i piani di test configurati (come RMK MyApp1 Plan) e per i singoli test delle suite di test (come RMK MyApp1 Test). I servizi dei singoli test includono anche i report originali di Robot Framework.
Infine, ci sono due regole di servizio opzionali: Robotmk plan e Robotmk test permettono di mettere a punto i servizi dei piani e dei test, ad esempio per modificare lo stato in determinati tempi di esecuzione.

Macchina per i test
Devi fornire le suite di test di Robot Framework su un host Windows. Per l'esecuzione, Robot Framework richiede l'accesso alle loro dipendenze (Python, librerie, driver per l'automazione del browser e così via). Questa configurazione è indipendente da Checkmk e può essere memorizzata in modo dichiarativo in un pacchetto portatile. Questo strumento viene eseguito con lo strumento open source a riga di comando RCC. Questo strumento utilizza i tuoi file di configurazione in formato YAML per costruire ambienti virtuali Python, comprese le dipendenze e lo stesso Robot Framework. Lo scheduler Robotmk in esecuzione come processo in background attiva questa costruzione e poi esegue i test stessi.
Un pacchetto di automazione RCC con la configurazione del pacchetto (robot.yaml
), la definizione dell'ambiente di esecuzione (conda.yaml
) e le suite di test (tests.robot
) è chiamato anche robot. RCC e lo scheduler vengono distribuiti con l'agente Checkmk, il pacchetto di automazione deve essere disponibile sull'host.
Il grande vantaggio di RCC è che l'host Windows in esecuzione non necessita di un ambiente Python configurato.
L'agente stesso è necessario solo per il trasferimento dei risultati, dei log e degli screenshot. Questo permette anche di monitorare suite molto lunghe o che richiedono risorse a livello locale, a patto che l'host Windows abbia le capacità corrispondenti.
2. Monitorare le test suite con Robotmk
Di seguito ti mostreremo come includere una suite di test nel monitoraggio. Come esempio utilizzeremo una semplice suite Hello World che produce solo due stringhe e che attende brevemente tra l'una e l'altra. Un'introduzione a Robot Framework non è ovviamente l'argomento di questo articolo, ma è necessario dare una breve occhiata al pacchetto di automazione e alla suite di test demo in modo che tu possa vedere quali dati finiscono dove nel monitoraggio.
L'esempio viene eseguito sulla base di RCC, in modo che l'host Windows non debba essere configurato separatamente. rcc.exe
viene distribuito con l'agente e si trova sotto C:\ProgramData\checkmk\agent\bin\
. Puoi scaricare la suite di esempio come file ZIP tramite GitHub. La directory della suite:
conda.yaml
robot.yaml
tests.robot
![]() |
RCC è in grado di processare anche test suite basati su diversi altri linguaggi di programmazione, ma per l'uso in Checkmk deve essere la dichiarazione di Robot Framework. |
La directory della suite contiene ora due file importanti: la dichiarazione dell'ambiente necessario per l'esecuzione nel file conda.yaml
e i test veri e propri nel file tests.robot
(la suite). Il file robot.yaml
non è rilevante per l'uso in Checkmk, ma è richiesto da RCC.
Per completezza, ecco una breve panoramica del file 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
All'inizio, tasks
definisce quali compiti, in questo caso i test, devono essere eseguiti. Tuttavia, sebbene questa parte sia formalmente richiesta da RCC, non viene utilizzata da Robotmk.
![]() |
Robot Framework distingue tra test e task, che rappresentano le automazioni, ma entrambi vengono utilizzati esattamente nello stesso modo. |
Nell'area environmentConfigs
si fa riferimento solo a conda.yaml
, che si occupa dell'ambiente reale.
In questo caso, per l'ambiente vengono installate solo le dipendenze di Python, Pip e Robot Framework. La creazione dell'ambiente appare poi nel monitoraggio come RCC environment build status. I test possono essere processati e di conseguenza monitorati solo se l'ambiente è stato costruito con successo.
channels:
- conda-forge
dependencies:
- python=3.10.12
- pip=23.2.1
- pip:
- robotframework==7.0
La suite di test attuale ha ora il seguente aspetto:
*** Settings ***
Documentation Template robot main suite.
*** Variables ***
${MYVAR} Hello Checkmk!
*** Test Cases ***
My Test
Log ${MYVAR}
Sleep 3
Log Done.
In questo caso, viene emesso solo il valore della variabile MYVAR
e, dopo un'attesa di 3 secondi, viene emesso Done
. Puoi impostare il valore della variabile in un secondo momento nell'interfaccia web di Checkmk, altrimenti verrà utilizzato il valore predefinito Hello Checkmk!
specificato qui.
![]() |
Puoi eseguire questa suite di test manualmente. Per farlo, l'agente e RCC devono essere già installati (oppure puoi scaricare tu stesso il binario di RCC). Per prima cosa naviga nella directory della tua suite di test, dove si trova anche |
Questo è esattamente ciò che fa lo scheduler di Robotmk non appena viene attivato il plug-in dell'agente.
2.1. Configurare una regola per il plug-in dell'agente
Lo scheduler di Robotmk si trova all'indirizzo Setup > Agent rules > Robotmk scheduler (Windows). Dato che la regola è piuttosto estesa, diamo un'occhiata alla configurazione vuota:

Per prima cosa, lo scheduler richiede la directory di base della suite di test: inserisci questo percorso arbitrario ed esplicito in Base directory of suites, ad esempio C:\robots
.

Il sito Parallel plan groups che viene mostrato ora è un concetto specifico di Checkmk.
Per spiegarlo, dobbiamo prima scendere di un livello gerarchico: qui puoi vedere l'elemento Sequential plans. Un piano sequenziale di questo tipo definisce quali suite devono essere eseguite con quali parametri. Robot Framework processerà queste suite una dopo l'altra. Il motivo è semplice: nella pratica, a volte i test vengono eseguiti sul desktop e diverse suite di test potrebbero intralciarsi l'una con l'altra nello stesso momento (pensa se si rubassero il controllo del cursore del mouse).
I gruppi di piani sono ora un incapsulamento per i piani eseguiti in sequenza e vengono a loro volta eseguiti in parallelo. Anche in questo caso, il ragionamento è semplice: ciò consente alle suite di test che non si affidano al desktop di essere eseguite nei propri piani senza ritardi - la suite di test utilizzata in questo articolo è un buon esempio di processo di questo tipo.
Torniamo alla finestra di dialogo: L'unica impostazione esplicita è l'intervallo di esecuzione, che puoi impostare in Group execution interval.

![]() |
I piani del gruppo di piani hanno naturalmente i loro tempi di esecuzione, determinati dal timeout di una singola esecuzione e dal numero massimo di esecuzioni ripetute in caso di test falliti. L'intervallo di esecuzione del gruppo di piani deve quindi essere maggiore della somma dei tempi di esecuzione massimi di tutti i piani del gruppo. Il tempo di esecuzione massimo di un piano viene calcolato come segue: Limit per attempt × (1 + Maximum number of re-executions). |
Ora è il momento di configurare il primo piano. Puoi inserire qualsiasi nome alla voce Application name. Questo nome non deve essere univoco: il nome dell'applicazione da monitorare ha senso in questo caso, ad esempio OnlineShop
, o in questo esempio semplicemente MyApplication
. Naturalmente, può succedere che questo negozio online venga testato più volte, sia da altre suite di test che dalla stessa suite di test con parametri diversi.
In questi casi, il campo Variant viene utilizzato per ottenere risultati non ambigui nonostante i nomi identici. Ad esempio, se l'applicazione OnlineShop
viene testata una volta in tedesco e una volta in inglese (tramite parametri corrispondenti), si possono utilizzare le abbreviazioni corrispondenti. Il monitoraggio restituirà quindi i risultati per My OnlineShop_en
e My OnlineShop_de
.
Tuttavia, è necessario specificare la voce Relative path to test suite file or folder. Il percorso è relativo alla directory di base specificata in precedenza, ad es. mybot\test.robot
per C:\robots\
. In alternativa, è possibile specificare anche una directory (con diversi file robot
), nel qual caso sarebbe semplicemente mybot
.

Continua con Execution configuration.In Limit per attempt definisci il tempo massimo trascorso - per ogni tentativo - che una suite di test può essere eseguita. Con Robot Framework re-executions puoi ora indicare a Robot Framework di ripetere le suite di test completamente o in modo incrementale se i test falliscono. Se i singoli test di una suite di test sono indipendenti l'uno dall'altro, la strategia incrementale è il modo migliore per risparmiare tempo. Se invece la suite di test verifica una sequenza logica, come ad esempio "Login → Richiama la pagina del prodotto → Prodotto nel carrello → Checkout", la suite di test deve essere ovviamente rielaborata completamente. Alla fine, il risultato è sempre uno solo.
Nel caso di tentativi completi, solo i risultati delle suite autonome vengono presi in considerazione per il risultato finale: Se un test fallisce all'ultimo tentativo, la suite di test viene considerata un fallimento. Nel caso dei tentativi incrementali, il risultato finale è composto dai migliori risultati parziali: Se alcuni test vengono eseguiti con successo solo al terzo tentativo, anche il risultato finale viene conteggiato come un successo. Ricorda: La combinazione di tentativi e tempi massimi di esecuzione di tutti i piani di un gruppo di piani determina il loro intervallo minimo di esecuzione.

Per impostazione predefinita, l'esecuzione tramite RCC è attivata sotto Automated environment setup (via RCC), per il quale devi inserire due valori. In primo luogo, RCC richiede di specificare dove si trova il file robot.yaml
. Il suo scopo principale è quello di fare riferimento al file conda.yaml
, che è responsabile dell'impostazione dell'ambiente Python, cioè dell'installazione di Python e delle dipendenze. Questa specifica è relativa alla directory di base che hai impostato in precedenza sotto Relative path to test suite file or folder. I file YAML possono essere salvati in sottodirectory, ma la prassi migliore è la directory di base della suite. Per la directory di base C:\robot\
e la directory della suite C:\robot\mybot
è quindi mybot\robot.yaml
.
Con il seguente limite di tempo per la creazione dell'ambiente Python, devi tenere presente che a volte è necessario scaricare e configurare grandi quantità di dati. Soprattutto per i browser richiesti, si accumulano rapidamente diverse centinaia di megabyte, ma solo per la prima esecuzione. RCC ricostruisce gli ambienti solo se il contenuto di conda.yaml
è cambiato.

In Robot Framework parameters hai la possibilità di utilizzare alcuni dei parametri della riga di comando di Robot Framework (che vengono visualizzati anche dal comando robot --help
). Se vuoi utilizzare altri parametri, l'opzione Argument files ti sarà d'aiuto. Un file specificato in questo punto può contenere qualsiasi parametro del robot. Ulteriori informazioni sui singoli parametri possono essere trovate nell'aiuto inline.
Nel nostro progetto di esempio, è stata attivata solo l'opzione Variables ed è stata impostata una variabile MYVAR
con il valore My Value
. Ricordi il comando Log ${MYVAR}
all'inizio del file tests.robot
? Questo è il riferimento corrispondente.

robot
Alla fine della configurazione della suite, ci sono tre opzioni che si spiegano da sole.Execute plan as a specific user permette di eseguire Robotmk nel contesto di un account utente specifico. Sfondo: Per impostazione predefinita, Robotmk viene eseguito nel contesto dell'agente Checkmk(account LocalSystem), che non ha alcuna autorizzazione ad accedere al desktop. In questo caso è possibile specificare un utente che deve essere permanentemente logato in una sessione desktop e che ha accesso alle applicazioni grafiche del desktop.
Con Assign plan/test result to piggyback host i risultati del piano/test possono essere assegnati a un altro host. Ad esempio, se Robot Framework sta testando il processo di ordinazione di un negozio online, i risultati possono essere assegnati al server web corrispondente.
Ogni esecuzione di test produce dati che vengono archiviati in C:\ProgramData\checkmk\agent\robotmk_output\working\suites\
. Per impostazione predefinita, vengono conservati i risultati degli ultimi 14 giorni, ma devi tenere presente che in questo caso si possono accumulare rapidamente grandi volumi di dati. Vengono generati almeno 500 kilobyte di dati per ogni esecuzione; con suite di test più complesse e screenshot incorporati, ad esempio, si possono sommare rapidamente diversi megabyte di dati. A seconda dell'intervallo di esecuzione, delle dimensioni del report e delle tue esigenze di documentazione, dovresti intervenire in questa situazione.

A questo punto, puoi creare altri piani in questo gruppo di piani o in altri gruppi di piani.
Alla fine ci sono altre due opzioni, che a loro volta riguardano la configurazione completa dello scheduler Robotmk.
RCC profile configuration ti permette di specificare i server proxy e gli host da escludere.
Grace period before scheduler starts può essere molto utile: Lo scheduler si avvia insieme all'agente Checkmk prima dell'accesso al desktop - il che, ovviamente, significa che qualsiasi test sul desktop deve fallire. L'avvio può essere ritardato manualmente utilizzando un periodo di grazia.

La configurazione è completata e puoi creare un nuovo agente con il plug-in e distribuirlo manualmente o tramite gli aggiornamenti automatici dell'agente.
Dati nell'output dell'agente
L'output dell'agente è piuttosto esteso: i messaggi di errore, lo stato, la configurazione e i dati di test sono trasmessi in diverse sezioni. Questi ultimi si trovano nella sezione robotmk_suite_execution_report
, di cui riportiamo un estratto abbreviato:
<<<robotmk_suite_execution_report:sep(0)>> { "attempts": [ { "index": 1, "esito": "AllTestsPassed", "tempo di esecuzione": 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="Test\" 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 Secondi</arg>\r\n<doc> Mette in pausa il test eseguito per il tempo indicato.</doc>\r\n<msg timestamp=\\\"20240319 16:23:02.936\" level=\"INFO\">Son stato 3 secondi</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 ...
Due aree sono di particolare interesse: la prima è rebot
: Lo strumento rebot
ha prodotto l'attuale report sullo stato di Robot Framework a partire da diversi risultati parziali (da qui re-bot). In secondo luogo, l'ultima riga html_base64
: i report HTML di Robot Framework vengono codificati in base64. Anche le schermate scattate durante i test vengono trasferite in questo modo: il volume di output/dati nell'agente può essere molto ampio.
Dati nel monitoraggio
Non appena lo scheduler di Robotmk e la test suite sono stati eseguiti, la scoperta del servizio produrrà tre nuovi servizi:

Il servizio RMK Scheduler Status esiste una volta sola e subito dopo il deployment. I servizi per i piani e i test, in questo caso RMK MyApplication_mybot Plan e RMK MyApplication_mybot Test: /Test: My Test, vengono aggiunti al monitoraggio non appena le suite associate vengono eseguite per la prima volta.
2.2. Configurazione delle regole dei servizi
Creazione di una regola per lo stato del piano
Ricorda: I tempi massimi di esecuzione dei piani sono stati definiti nella regola agente di cui sopra. Questi tempi di esecuzione possono essere valutati con la regola Robotmk plan. Ad esempio, puoi impostare il servizio su CRIT quando viene raggiunto il 90% di tutti i timeout calcolati.

Nel box Conditions c'è la possibilità di limitare la regola a piani specifici.

Creazione di una regola per lo stato del test
È inoltre possibile recuperare dati aggiuntivi per i singoli test delle suite di test tramite la regola Robotmk test. Anche in questo caso troverai l'opzione per monitorare i tempi di esecuzione, sia per i test che per le keyword. Il monitoraggio delle keyword è una funzione specifica di Checkmk. Pertanto, lo stato interno alla suite nel report di Robot Framework potrebbe anche essere OK
perché la suite di test è stata elaborata entro il tempo di esecuzione massimo consentito - in Checkmk, invece, WARN o CRIT, perché un cambiamento di stato avviene, ad esempio, all'80% di questo tempo di esecuzione massimo consentito.
Inoltre, l'opzione Enable metrics for high-level keywords può essere utilizzata per generare metriche per parole chiave di livello superiore. Questo è particolarmente utile se i tuoi test sono organizzati in modo tale che le keyword di livello superiore descrivano il "cosa" e quelle di limite inferiore il "come": in questo modo si ottengono valutazioni più astratte.
In questo esempio, i valori di soglia per il tempo massimo di esecuzione di un test sono 2 e 4 secondi. Vedrai gli effetti di seguito nel capitolo Robotmk nel monitoraggio.

Ancora una volta, c'è un'opzione di filtro esplicita nel box Conditions, in questo caso per i singoli test.

2.3. Robotmk nel monitoraggio
Nel monitoraggio troverai servizi per lo stato dello scheduler Robotmk e per i singoli piani e test, anche se non hai creato uno stato del servizio separato.
Stato dello scheduler
Il servizio RMK Scheduler Status è OK se lo scheduler è in esecuzione e ha integrato con successo gli ambienti di esecuzione.

Qui nell'immagine puoi vedere la nota Environment build took 1 second.Un secondo per costruire un ambiente Python virtuale con Pip e Robot Framework? Questo è possibile perché RCC è intelligente: i file che sono già stati scaricati vengono riutilizzati e una nuova creazione viene effettuata solo dopo che sono state apportate delle modifiche in conda.yaml
. La prima creazione avrebbe richiesto 30 secondi o più.
Stato del piano
Lo stato del piano si riflette in un servizio chiamato con il nome dell'applicazione e della suite, ad esempio RMK MyApplication_mybot Plan.

Stato dei test
La valutazione dei test è il punto più interessante. Nell'immagine puoi vedere l'effetto dei valori di soglia impostati in precedenza per il tempo di esecuzione dei test - in questo caso i 2 secondi per lo stato WARN. Poiché l'istruzione Sleep 3 Seconds
nel test stesso garantisce già un tempo di esecuzione più lungo, questo servizio deve passare a WARN in questo caso, anche se il test è andato a buon fine. Il fatto che il test sia andato a buon fine è mostrato dal report di Robot Framework, a cui puoi accedere tramite l'icona del log.

Il report mostra chiaramente che il test e la suite di test sono stati eseguiti con successo.

In fondo ai dati puoi anche vedere le singole keyword, ad esempio Log ${MYVAR}
insieme al valore My value
impostato in Checkmk per MYVAR
.

I dashboard
Naturalmente puoi creare le tue dashboard come al solito, ma puoi anche trovare due dashboard integrate sotto Monitor > Synthetic Monitoring.

3. Risoluzione dei problemi
3.1. Report scheduler No Data
Se lo scheduler non riceve alcun dato, è probabile che la creazione dell'ambiente non abbia funzionato. Un motivo comune per questo sono i problemi di rete, ad esempio, a causa dei quali non è possibile caricare alcune dipendenze. In questo caso, dai un'occhiata al file di log corrispondente sotto C:\ProgramData\checkmk\agent\robotmk_output\working\environment_building
.
3.2. La creazione dell'ambiente non riesce: post-install script execution
Si tratta di un errore particolarmente interessante che potresti riscontrare nei sistemi Windows di nuova generazione. conda.yaml
può contenere anche istruzioni che devono essere eseguite dopo l'installazione delle dipendenze - ad esempio, l'inizializzazione del browser Robot Framework. I comandi Python devono quindi essere eseguiti qui. Per impostazione predefinita, Windows 11 ha degli alias per python.exe
e python3.exe
che fanno riferimento al Microsoft Store. Devi disattivare questi alias in "Impostazioni/Alias per l'esecuzione delle app".
4. File e directory
Percorso del file | Descrizione |
---|---|
|
File di log e risultati delle suite |
|
File di log per la creazione di ambienti virtuali |
|
Messaggi dell'esecuzione dell'RCC |
|
File di log del plug-in dell'agente |
|
|
|
Plug-in dell'agente |