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. Synthetic monitoring con Robot Framework
Il Checkmk Synthetic Monitoring è disponibile nelle edizioni commerciali di Checkmk, ma richiede un abbonamento aggiuntivo.
Puoi comunque provare la funzione con un massimo di tre test gratuitamente e senza limiti di tempo.
Con Checkmk puoi effettuare un monitoraggio molto accurato della tua infrastruttura, fino a verificare se un particolare servizio, come un server web, funziona correttamente. Se il tuo sito web è gestito tramite un servizio cloud di terze parti, non avrai accesso al servizio stesso, ma puoi utilizzare un check HTTP per verificare se il sito web è accessibile. Ma questo dirà qualcosa sull'esperienza dell'utente? Il fatto che un negozio online sia accessibile non significa che la navigazione, i processi di ordinazione e simili funzionino senza intoppi.
È qui che entra in gioco il Checkmk Synthetic Monitoring. Con il plug-in Robotmk, Checkmk offre un vero end-to-end monitoring, ovvero il monitoraggio delle applicazioni in esecuzione dal punto di vista dell’utente. I test effettivi vengono eseguiti dal software open source Robot Framework — di cui anche Checkmk GmbH è membro.
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, "clic per clic".
La particolarità di Robot Framework è che i test non sono scritti in un vero e proprio linguaggio di programmazione, ma sono definiti utilizzando parole chiave facili da usare come Open Browser o Click Button.
È sufficiente un Open Browser checkmk.com per richiamare il sito web di Checkmk.
Diversi casi di test vengono poi combinati in cosiddette test suite (sotto forma di un file .robot).
Robotmk può ora distribuire queste test suite di Robot Framework sull'host e monitorarne l'esecuzione e i risultati come servizi in Checkmk. Nell'interfaccia web di Checkmk troverai quindi lo stato, i grafici delle prestazioni associati e le valutazioni originali di Robot Framework stesso.
1.1. Componenti
Diversi componenti lavorano insieme per creare questo end-to-end monitoring, quindi ecco una breve panoramica.
server Checkmk
Il monitoraggio sintetico di Checkmk viene realizzato tramite Robotmk, che utilizza un plug-in dell'agente come raccoglitore di dati e il Robotmk scheduler (sull'host monitorato) per l'avvio dei progetti di Robot Framework. Il monitoraggio sintetico viene attivato e configurato tramite la regolaRobotmk Scheduler . Qui specifichi quali test suite devono essere eseguite e come esattamente Robot Framework deve avviarle — il tutto riassunto in un piano. Una volta distribuito, il Robotmk scheduler sull'host di destinazione garantisce l'esecuzione programmata delle tue suite di Robot Framework.
Nel monitoraggio verranno generati diversi nuovi servizi: RMK Scheduler Status mostra lo stato dello scheduler stesso, ovvero se le test suite 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 test suite (come RMK MyApp1 Test). I servizi dei singoli test includono anche i rapporti originali di Robot Framework.
Ci sono poi due regole di servizio opzionali: Robotmk plan e Robotmk test consentono di regolare i servizi relativi ai piani e ai test, ad esempio per apportare modifiche allo stato in determinati tempi di esecuzione.
Infine, ma non meno importante, ci sono due regole per il monitoraggio dei KPI: KPI sta per Key Performance Indicator e in questo contesto indica singole parole chiave. Utilizzando la regola Robotmk KPI discovery, le parole chiave possono essere inserite nel monitoraggio come servizi separati e valutate di conseguenza tramite Robotmk KPI monitoring. Ti mostreremo esattamente come funziona il monitoraggio delle parole chiave in un capitolo a parte più avanti.
Un po’ a parte dalle regole normali, c’è anche la funzione “Managed robots” nell’area “Setup”. In breve: i robot gestiti sul server Checkmk e distribuiti tramite l’agente Checkmk — anche in questo caso, è disponibile un capitolo a parte per maggiori dettagli.

Macchina di test
Puoi fornire le test suite di Robot Framework su un host Windows (da Windows 10 o Server 2019) o Linux. Per l'esecuzione, Robot Framework richiede l'accesso alle proprie 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. Ciò viene eseguito con lo strumento a riga di comando open source RCC. Questo strumento utilizza i tuoi file di configurazione in formato YAML per creare ambienti Python virtuali che includono le dipendenze e lo stesso Robot Framework. Il Robotmk scheduler, in esecuzione come processo in background, avvia questa compilazione e poi esegue i test.
Un pacchetto di automazione RCC di questo tipo, contenente la configurazione del pacchetto (robot.yaml), la definizione dell'ambiente di esecuzione (conda.yaml) e le test suite (tests.robot), viene chiamato anch'esso 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 di esecuzione dei test non richiede un ambiente Python configurato.
L'agente stesso è necessario solo per il trasferimento di risultati, log e screenshot. Questo permette anche il monitoraggio di test suite molto lunghe o che richiedono molte risorse a livello locale — a condizione che il tuo host di test abbia le capacità corrispondenti.
Due parole sui sistemi operativi utilizzati dagli host di test: i sistemi Windows e Linux si comportano in modo leggermente diverso. Nota in particolare che i percorsi dei file definiti differiscono; negli esempi seguenti utilizziamo solo percorsi di file Windows (a meno che non siano realmente richiesti percorsi espliciti). Nel caso in cui RCC debba funzionare offline, ci sono anche differenze per quanto riguarda il contesto utente del Robotmk scheduler e i comandi necessari: qui, ovviamente, ci rivolgiamo esplicitamente a entrambi i sistemi.
E anche se non è direttamente correlato a Checkmk: La libreria del browser di Robot Framework utilizza Playwright — e Playwright non funziona su tutti i sistemi Linux supportati da Checkmk. Presta attenzione ai requisiti di sistema corrispondenti (mentre Node.js è fornito da RCC nel nostro caso).
Requisiti di sistema per la macchina di test:
CPU: almeno 4 core, consigliati 8 core
RAM: 8 gigabyte, consigliati 16 gigabyte
Accesso a internet (se devi effettuare lo scaricamento di pacchetti)
Per i test basati sul web (libreria browser di Robot Framework, basata su Playwright) Debian 12/13, Ubuntu 22.04/24.04
2. Monitoraggio delle test suite con Robotmk
Di seguito ti mostreremo come includere una test suite nel monitoraggio. Come esempio useremo una semplice test suite Hello World che genera solo due stringhe e che attende brevemente tra una e l'altra. Un'introduzione a Robot Framework non è ovviamente l'argomento di questo articolo, ma è necessaria una breve panoramica del pacchetto di automazione e della test suite demo affinché tu possa vedere quali dati finiscono dove nel monitoraggio.
L'esempio funziona sulla base di RCC, quindi l'host Windows non deve essere configurato separatamente.
L'rcc.exee viene distribuito con l'agente e si trova all'indirizzo C:\ProgramData\checkmk\agent\bin\.
Puoi effettuare lo scaricamento della suite di esempio come file ZIP tramite GitHub.
La directory della suite:
conda.yaml
robot.yaml
tests.robotRCC può anche elaborare test suite basate su una serie di altri linguaggi di programmazione, ma per l'uso in Checkmk deve trattarsi della dichiarazione Robot Framework. |
La directory della suite ora contiene due file importanti:
La dichiarazione dell'ambiente richiesto per l'esecuzione nel file conda.yaml e i test effettivi 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:
All'inizio, tasks definisce quali attività, in questo caso i test, devono essere eseguite.
Tuttavia, sebbene questa parte sia formalmente richiesta da RCC, non viene utilizzata da Robotmk.
Robot Framework distingue tra test e attività, che stanno per automazioni. Tuttavia, entrambi vengono utilizzati esattamente allo stesso modo. |
Nell'area "environmentConfigs" viene fatto riferimento solo all'conda.yaml, che si occupa dell'ambiente effettivo.
In questo caso, per l'ambiente vengono eseguite solo le operazioni di installazione per le dipendenze Python, Pip e Robot Framework. L'ambiente creato in seguito appare nel monitoraggio come RCC environment build status. I test possono essere elaborati e quindi monitorati solo se l'ambiente è stato creato con successo.
La test suite attuale ora si presenta così:
*** Settings ***
Documentation Template robot main suite.
*** Variables ***
${MYVAR} Hello Checkmk!
*** Test Cases ***
My Test
Log ${MYVAR}
Sleep 3
Log Done.Qui viene visualizzato solo il valore della variabile MYVAR, poi, dopo un'attesa di 3 secondi, verrà visualizzato Done.
Puoi impostare il valore della variabile in un secondo momento nell'interfaccia web di Checkmk; in caso contrario, verrà utilizzato il valore predefinito Hello Checkmk! specificato qui.
Puoi eseguire questa test suite manualmente.
Per farlo, l'agente e l'RCC devono essere già installati (oppure puoi effettuare tu stesso l'scaricamento del RCC binary).
Per prima cosa vai nella directory della tua test suite, dove si trova anche il file |
Ed è esattamente ciò che fa il Robotmk scheduler non appena viene attivato il plug-in dell'agente.
2.1. Configurare una regola per il plug-in dell'agente
Puoi trovare il Robotmk scheduler all'indirizzo Setup > Agent rules > Robotmk scheduler (Windows). Dato che la regola è piuttosto estesa, ecco una panoramica della configurazione vuota:

Innanzitutto, lo scheduler richiede la directory di base in cui si trovano tutte le tue test suite.
Inserisci questo percorso file arbitrario ed esplicito in Base directory of suites, ad esempio C:\robots.

Le Parallel plan groups che vengono mostrate ora sono un concetto specifico di Checkmk.
Per spiegarlo, dobbiamo prima scendere di un livello nella gerarchia: qui puoi vedere l'elemento Sequential plans. Un piano sequenziale di questo tipo definisce quali suite devono essere eseguite con quali parametri. Robot Framework elaborerà queste test suite una dopo l’altra. Il motivo è semplice: in pratica, i test vengono talvolta eseguiti sul desktop e diverse test suite potrebbero interferire tra loro contemporaneamente (pensa al fatto che potrebbero rubarsi a vicenda il controllo del cursore del mouse).
I gruppi di piani sono ora un'incapsulazione per piani eseguiti in sequenza — e vengono essi stessi eseguiti in parallelo. Anche in questo caso, il ragionamento è semplice: ciò consente alle test suite che non si basano sul desktop di essere eseguite nei propri piani senza ritardi — la test suite utilizzata in questo articolo è un buon esempio di tale elaborazione.
Torniamo al dialogo: l'unica impostazione esplicita è l'intervallo di esecuzione, che si imposta in "Group execution interval".

I piani nel gruppo di piani hanno naturalmente i propri tempi di esecuzione, determinati dal timeout di una singola esecuzione e dal numero massimo di esecuzioni ripetute in caso di eventi falliti. L'intervallo di esecuzione del gruppo di piani deve quindi essere maggiore della somma dei tempi di esecuzione massimi di tutti i piani nel 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 in Application name.
Questo nome non deve essere unico!
Qui ha senso inserire il nome dell'applicazione per il monitoraggio, ad esempio OnlineShop, oppure, in questo esempio, semplicemente MyApplication.
Naturalmente, può capitare che questo negozio online venga testato più volte, sia da altre test suite che dalla stessa test suite con parametri diversi.
In questi casi, il campo "Variant" viene utilizzato per ottenere risultati univoci nonostante i nomi identici.
Ad esempio, se l'applicazione OnlineShop viene testata una volta in tedesco e una volta in inglese (tramite i parametri corrispondenti), potresti utilizzare qui le abbreviazioni corrispondenti.
Il monitoraggio restituirà quindi risultati per My OnlineShop_en e My OnlineShop_de.
Tuttavia, è necessaria la specifica in Relative path to test suite file or folder.
Il percorso è relativo alla directory di base specificata sopra, ad esempio mybot\test.robot per C:\robots\.
In alternativa, qui è possibile specificare anche una directory (con diversi file robot), nel qual caso sarebbe semplicemente mybot.

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

Per impostazione predefinita, l'esecuzione tramite RCC è attivata in Automated environment setup (via RCC), per cui devi inserire due valori.
In primo luogo, RCC richiede la specificazione della posizione del file robot.yaml.
Il suo scopo principale è fare riferimento al file conda.yaml, che si occupa di configurare l'ambiente Python, ovvero effettuare l'installazione di Python e delle dipendenze.
Questa specificazione è relativa alla directory di base che hai impostato sopra in Relative path to test suite file or folder.
I file YAML possono essere salvati in sottodirectory, ma la pratica migliore è la directory principale della suite.
Per la directory di base sopra indicata C:\robot\ e la directory della suite C:\robot\mybot, il percorso è quindi mybot\robot.yaml.
Con il seguente limite di tempo per la creazione dell'ambiente Python, tieni presente che a volte è necessario effettuare lo scaricamento e la configurazione di grandi volumi di dati.
Soprattutto per i browser richiesti, si accumulano rapidamente diverse centinaia di megabyte, ma solo al primo avvio.
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 desideri utilizzare parametri aggiuntivi, l'opzione Argument files ti sarà d'aiuto.
Un file specificato qui può contenere qualsiasi parametro del robot.
Ulteriori informazioni sui singoli parametri sono disponibili nell'aiuto in linea.
Per il nostro progetto di esempio, è attivata solo l'opzione Variables ed è 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
L'opzione Secret environment variables merita un'attenzione particolare poiché non è una funzione originale di Robot Framework.
Qui puoi impostare variabili d'ambiente segrete, destinate alle password in combinazione con la libreria CryptoLibrary di Robot Framework.
Le variabili impostate qui non compaiono nei log, ma vengono scritte in chiaro nei file di configurazione di Checkmk sui rispettivi host di test.

Alla fine della configurazione della suite ci sono tre opzioni che si spiegano da sole.
Execute plan as a specific user Consente l'esecuzione di Robotmk nel contesto di un account utente specifico. Contesto: per impostazione predefinita, Robotmk viene eseguito nel contesto dell'agente Checkmk (account LocalSystem), che non dispone dell'autorizzazione per accedere al desktop. Qui è possibile specificare un utente che deve essere permanentemente connesso a una sessione desktop e che ha quindi accesso alle applicazioni grafiche del desktop.
Tuttavia, non essere troppo frettoloso: i browser web sono un'eccezione in questo caso! Possono eseguire e visualizzare pagine web in modalità headless. Dovresti checkare la box per un utente specifico solo se un'applicazione desktop dedicata viene avviata al di fuori dei browser web, non da ultimo per motivi di sicurezza.
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 del test produce dati che vengono memorizzati in C:\ProgramData\checkmk\agent\robotmk_output\working\suites\.
Per impostazione predefinita, vengono conservati i risultati degli ultimi 14 giorni, ma tieni presente che qui possono accumularsi rapidamente grandi volumi di dati.
Per ogni esecuzione vengono generati almeno 500 kilobyte di dati; con test suite più complesse e screenshot incorporati, ad esempio, questo può arrivare rapidamente a diversi megabyte di dati.
A seconda dell'intervallo di esecuzione, delle dimensioni del rapporto e delle tue esigenze di documentazione, dovresti intervenire in una situazione del genere.

Una volta qui, puoi ora creare ulteriori piani in questo gruppo di piani o ulteriori gruppi di piani.
Alla fine ci sono altre due opzioni, che a loro volta riguardano la configurazione completa del Robotmk scheduler.
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 è destinato a fallire. L’avvio può essere ritardato manualmente utilizzando un periodo di tolleranza.

Questo completa la configurazione e puoi creare un nuovo agente con il plug-in dell'agente, per poi distribuirlo, manualmente o tramite gli aggiornamenti automatici degli agenti.
Dati nell'output dell'agente
L'output nell'agente è piuttosto esteso:
messaggi di errore, stato, configurazione e dati di test vengono trasmessi in diverse sezioni.
Questi ultimi si trovano nella sezione robotmk_suite_execution_report, ecco un estratto abbreviato:
<<<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 ...Due aree sono di particolare interesse in questo caso.
In primo luogo, rebot: lo strumento rebot ha generato il rapporto di stato effettivo per Robot Framework da diversi risultati parziali (da qui il nome re-bot).
In secondo luogo, l'ultima riga html_base64: i rapporti HTML di Robot Framework vengono quindi codificati in base64.
Anche gli screenshot acquisiti tramite i test vengono trasferiti in questo modo — il volume di output/dati nell'agente può essere di conseguenza molto ampio.
Dati nel monitoraggio del monitoraggio
Non appena lo Robotmk scheduler e la test suite sono stati eseguiti, l'operazione di scoperta del servizio genererà 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 sono state eseguite per la prima volta.
2.2. Configurazione delle regole di servizio
Creazione di una regola per lo stato del piano
Promemoria: i tempi di esecuzione massimi per i piani sono stati definiti nella regola dell'agente sopra riportata. Questi tempi di esecuzione possono essere valutati con la regola "Robotmk plan". Ad esempio, puoi impostare il servizio su CRIT quando è stato raggiunto il 90% di tutti i timeout calcolati.

Nella box "Conditions" è possibile limitare la regola a piani specifici.

Creazione di una regola per lo stato del test
È possibile recuperare dati aggiuntivi anche per i singoli test nelle test suite tramite la regola "Robotmk test".
Qui troverai nuovamente l'opzione per monitorare i tempi di esecuzione, sia per i test che per le parole chiave.
Il monitoraggio delle parole chiave è una funzione specifica di Checkmk.
Pertanto, lo stato interno alla suite nel rapporto di Robot Framework potrebbe essere "OK" perché la test suite è stata elaborata entro il tempo di esecuzione massimo consentito; in Checkmk, invece, "WARN" o "CRIT", poiché 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 le parole chiave di livello superiore. Ciò è particolarmente utile se i tuoi test sono organizzati in modo tale che le parole chiave di livello superiore descrivono il "cosa" e quelle di livello inferiore descrivono il "come" — questo ti fornisce valutazioni più astratte.
In questo esempio, i valori di threshold per il tempo di esecuzione massimo di un test sono 2 e 4 secondi. Vedrai gli effetti qui sotto nel capitolo Robotmk nel monitoraggio.

Ancora una volta, c'è un'opzione di filtro esplicita nella box "Conditions", qui per i singoli test.

2.3. Robotmk nel monitoraggio
Nel monitoraggio troverai servizi relativi allo stato del Robotmk scheduler, nonché ai singoli piani e test, anche se non hai creato regole di servizio separate.
Stato dello scheduler
Il servizio RMK Scheduler Status è OK se lo scheduler è in esecuzione e ha creato con successo gli ambienti di esecuzione.

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

Stato dei test
La valutazione dei test è dove la cosa si fa davvero interessante.
Nell'immagine puoi ora vedere l'effetto dei valori di threshold impostati sopra per il tempo di esecuzione dei test — qui 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 qui, anche se il test ha avuto esito positivo.
Il fatto che il test abbia avuto esito positivo è mostrato dal rapporto di Robot Framework, a cui puoi accedere tramite il simbolo del log
.

Il rapporto ora mostra chiaramente che il test e la test suite sono stati eseguiti con successo.

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

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

Prerequisito: affinché i dashboard funzionino, l'inventario HW/SW deve essere attivato sugli host interessati.
3. Robot gestiti
Finora abbiamo ipotizzato uno scenario in cui le test suite sono già disponibili sugli host di test. Tuttavia, con la funzione "managed robots", i robot possono anche essere gestiti centralmente sul server Checkmk e distribuiti tramite gli agenti Checkmk.
Dalla procedura sopra descritta conosci già l'intera configurazione per i robot esistenti che utilizzano la regola "Robotmk scheduler (Windows|Linux)".
Inoltre, basta inserire il file di archivio (vedi sotto) con il robot compresso. Qui nello screenshot, sotto "Plan Settings ", puoi vedere il campo di caricamento per il robot — le stesse opzioni presenti nello scheduler. Presta attenzione al nome in alto sotto "Properties. ". Questo è obbligatorio, poiché il robot verrà successivamente configurato nello scheduler utilizzando questo nome.

Per utilizzare un robot gestito (Managed robot), viene nuovamente utilizzata la regola "Robotmk scheduler (Windows|Linux)". Ma invece di pianificare l'esecuzione del robot qui, basta specificare il robot desiderato e preconfigurato sotto "Sequence of plans". Se necessario, puoi comunque adattare qui la configurazione del piano per il robot preconfigurato per questa applicazione. In pratica, la funzione si limita quindi solitamente all'esternalizzazione della configurazione nota e alla distribuzione dei file di archivio del robot da parte dell'agente.

L'agente trasferisce quindi gli archivi specificati agli host desiderati e li memorizza nella directory dell'agente in robomk_output/managed, dove vengono poi decompressi ed eseguiti.
3.1. Creazione di un archivio del robot
In linea di principio, potresti semplicemente archiviare l'intera directory del robot con i file standard (robot.yaml, conda.yaml, test.robot).
Tuttavia, tali test sono spesso gestiti tramite Git e di conseguenza ci sono regolarmente file che non dovrebbero essere distribuiti — questi sono tipicamente gestiti tramite un file gitignore.
Per aiutarti a garantire archivi puliti, ecco due piccoli script per Windows e Linux che creano archivi senza i file da ignorare.
Usa questi script solo come aiuto e verifica sempre in anticipo la funzionalità per il tuo sistema.
- Windows
- Linux
4. Monitoraggio degli indicatori chiave di performance (KPI)
Come hai già visto sopra, i tempi di esecuzione delle parole chiave di alto livello possono essere monitorati nell’ambito di un test.
Tuttavia, puoi anche includere qualsiasi parola chiave come servizio individuale nel monitoraggio.
Ciò è particolarmente utile per le parole chiave utente altamente astratte, che a loro volta richiamano diverse parole chiave semplici (standard) come Click o Log — in altre parole, queste vengono fondamentalmente utilizzate come funzioni.
Per l'oscopera del servizio sono disponibili due varianti: i pattern in Checkmk e i marcatori nelle test suite.
Per la ricerca basata su pattern, le parole chiave desiderate vengono memorizzate come espressioni regolari utilizzando le regole di Checkmk.
Per la ricerca basata su marcatori, i marcatori vengono codificati direttamente davanti alle keyword nei test stessi. Questi marcatori vengono elaborati utilizzando la libreria propria di Robotmk.
Indipendentemente da come i dati delle keyword entrano nel monitoraggio, devono essere configurati lì utilizzando la regola del servizio Robotmk KPI monitoring.
4.1. Variante 1: Ricerca tramite pattern
Per questa variante, non è necessario apportare alcuna modifica ai test stessi. Basta aprire la regola "Robotmk KPI discovery" e inserire le keyword da utilizzare per il monitoraggio come espressioni regolari o nomi molto specifici.

Attenzione: se l'espressione regolare corrisponde a più di una keyword nello stesso test, verrà riconosciuta solo una keyword e il suo stato di servizio sarà SCONOSCIUTO (perché Checkmk non sa quale corrispondenza sia effettivamente prevista).
4.2. Variante 2: Ricerca tramite marker
Per una ricerca tramite marker, devi eseguire i seguenti passaggi:
Esecuzione dell'installazione della libreria Robotmk.
Importa la libreria Robotmk nella suite.
Inserisci la keyword marker davanti alle keyword rilevanti.
Per l'installazione, il file conda.yaml di cui sopra deve essere esteso con robotframework-robotmklibrary.
Le modifiche rispetto alla suite di cui sopra sono evidenziate in giallo:
La test suite tests.robot deve essere estesa dalla libreria (nell'area Settings) e da un marcatore.
I KPI spesso fanno riferimento a parole chiave specifiche dell'utente, quindi qui viene aggiunta la parola chiave Foobar (che chiama solo la parola chiave standard Log ed è a sua volta chiamata dal caso di test My Test).
*** 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!
La parola chiave Robotmk Monitor Subsequent Keyword Runtime è il marcatore per (far attivare a Checkmk il monitoraggio della) seguente parola chiave (Foobar); più precisamente, il suo tempo di esecuzione.
L'argomento opzionale discover_as può essere usato per specificare un nome individuale per il servizio nel monitoraggio — la parola chiave Foobar appare quindi nel monitoraggio come un servizio chiamato My user keyword.
Il grande vantaggio qui rispetto alla ricerca basata su pattern è che la stessa keyword può anche essere sottoposta a monitoraggio esplicito più volte all’interno di un singolo test.
Ecco l'esempio di cui sopra, esteso con due chiamate a Foobar:
*** 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!Le tre chiamate alla keyword Foobar apparirebbero quindi nel monitoraggio come My user keyword, Foobar_2 e Foobar_3.
4.3. Configurazione della regola del servizio
Indipendentemente da quale delle due varianti delle parole chiave venga utilizzata per il monitoraggio, il passo successivo è sempre quello di configurare la valutazione: In quale tempo di esecuzione i servizi devono essere indirizzati a WARN o CRIT? Per farlo, definisci i livelli corrispondenti nella regola Robotmk KPI monitoring.

4.4. Keyword nel monitoraggio
Le parole chiave dei servizi compaiono nel monitoraggio secondo uno di questi due modelli:
Basato su pattern: RMK MyApplication_mybot Test: /Test: My Test KPI (cmk): Foobar
Basato su marcatori: RMK MyApplication_mybot Test: /Test: My Test KPI (rf): Foobar
La differenza sta quindi solo nell'indicazione dell'origine tra parentesi subito prima della keyword.

Come mostrato nella schermata sopra con due servizi di keyword Foobar, la suite doveva essere leggermente estesa:
*** 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
Le due keyword Foobar e Barfoo compaiono entrambe con il nome Foobar nel monitoraggio, ma si distinguono grazie all'indicazione dell'origine tra parentesi.
L'esempio con due keyword diverse presenti nell'elenco sotto lo stesso nome serve principalmente a chiarire le informazioni sull'origine.
Come già menzionato sopra, lo scopo effettivo di discover_as è quello di poter richiamare una keyword più volte in un test, ma di denominare ogni occorrenza individualmente.
5. Modalità offline per gli ambienti di test/RCC
Di default, RCC si occupa di configurare gli ambienti leggendo la configurazione YAML e effettuando lo scaricamento dei pacchetti e delle dipendenze corrispondenti dalla rete.
Ma cosa succede se gli host su cui devono essere eseguiti i test non hanno accesso a internet o ne hanno uno molto limitato?
Checkmk, o più precisamente il Robotmk scheduler, può aiutarti in questo caso, poiché è in grado di creare ambienti RCC senza richiedere una connessione internet diretta. In breve: gli ambienti vengono creati in anticipo su un qualsiasi computer e poi distribuiti tramite un archivio ZIP o da un server remoto.
Continua a leggere per scoprire esattamente come funzionano i due metodi. Per capirlo, però, serve un po' di conoscenza di RCC — e dobbiamo approfondire un po' — da un lato per spiegare i meccanismi tecnici interni di RCC, e dall'altro per spiegare perché in questo contesto particolare non seguiamo la nostra solita pratica di fare riferimento al produttore.
5.1. RCC — una breve digressione
Cronologia di RCC
Da dove viene questo strumento? RCC è stato originariamente sviluppato dalla società Robocorp (oggi Sema4.ai). Il modello di business di Sema4.ai è una piattaforma basata sul cloud in cui i clienti possono eseguire i propri script per automatizzare i processi aziendali. RCC costituisce la base per creare ambienti virtuali identici sia localmente presso la sede del cliente che nel cloud.
Noi di Checkmk utilizziamo RCC per un caso d’uso diverso: in questo caso, i tuoi script Robot Framework dovrebbero poter essere eseguiti sia sul tuo computer locale (di sviluppo) che sugli host di test di Robotmk (Windows o Linux).
Nel corso dell’acquisizione di Robocorp da parte di Sema4.ai nel 2024, RCC è stato sottoposto a una nuova licenza ed è ora software proprietario. Questo processo purtroppo non è stato molto trasparente — ecco perché questa breve spiegazione.
La variante fornita con Checkmk si basa sull'ultima versione open source di RCC ed è gestita da noi. Il fork di RCC è quindi ora parte integrante di Checkmk ed è documentato anche qui — per quanto riguarda il suo utilizzo in Checkmk.
La situazione è un po’ più complessa per quanto riguarda RCC Remote Server, lo strumento responsabile della distribuzione degli ambienti RCC. Si tratta semplicemente di un componente di RCC che viene creato solo durante la compilazione, non è un prodotto a sé stante. Ecco perché non è mai esistita una vera e propria documentazione da parte di Robocorp, a parte un’applicazione molto specifica per la piattaforma Robocorp.
Funzionamento interno di RCC
Per capirli, dovresti avere familiarità con alcuni termini e concetti:
| Termine | Spiegazione | Nota |
|---|---|---|
Catalogo |
Modello per gli ambienti |
Modelli per la creazione di ambienti virtuali |
Hololib |
Raccolta dei cataloghi disponibili |
Hololib è un archivio di modelli in cui ogni singolo file viene salvato una sola volta e può essere utilizzato per creare più Spaces. |
Spazio |
Istanza di un ambiente |
Da un unico catalogo è possibile creare più Spazi |
Holotree (condiviso) |
Raccolta di spazi disponibili |
Holotree (condiviso) è un archivio per gli spazi, in cui ogni singolo file viene memorizzato una sola volta ed è disponibile per più spazi. |
|
Variabile d'ambiente |
Percorso in cui RCC memorizza Hololib e Holotree; per impostazione predefinita |
|
Variante protetta con accesso in scrittura limitato |
Percorso in cui Checkmk-RCC memorizza Hololib e Holotree; sotto |
Percorso di Holotree |
Percorso assoluto, sotto |
In questo percorso i blueprint Hololib vengono compilati negli spazi Holotree; deve essere identico sul computer di origine e su quello di destinazione in un ambiente. |
RCCRemote |
Server per la fornitura di cataloghi. |
Di solito viene gestito tramite il Docker container RCCRemote. |
ROBOCORP_HOME
ROBOCORP_HOME richiede un'analisi più approfondita.
Questa variabile d'ambiente definisce il percorso in cui RCC salva Hololib e Holotree.
Tutti i file binari all'interno di Hololib, ovvero la raccolta di modelli, vengono compilati in un percorso assoluto — il cosiddetto holotree path, una sottocartella di ROBOCORP_HOME.
Ciò significa anche che gli stessi percorsi dei file devono essere disponibili sugli host di prova su cui i robot verranno successivamente eseguiti, così come sul computer su cui crei i robot.
Altrettanto rilevante in questo processo: il contesto utente.
Su Windows, il Robotmk scheduler viene eseguito per impostazione predefinita come sottoprocesso dell’agente Checkmk con l’account LocalSystem (nel contesto SYSTEM).
Su Linux, il Robotmk scheduler viene eseguito con lo stesso utente dell’agente Checkmk, ovvero root.
Se ora si desidera modificare i contesti utente, Windows e Linux si comporteranno in modo diverso.
Windows: l'utente dello scheduler SYSTEM non può essere modificato, ma è possibile utilizzare l'opzione Execute plan as a specific user per configurare un utente per l'esecuzione di singoli robot/piani.
Linux: la regola Customize agent package (Unix) e la sua opzione Customize user possono essere utilizzate per cambiare l'utente dell'agente; tuttavia, non è possibile eseguire singoli robot/piani in altri contesti.
In Checkmk, il Robotmk scheduler si concede una misura di sicurezza aggiuntiva per RCC:
Per garantire che solo gli scheduler e gli utenti configurati manualmente abbiano effettivamente accesso in scrittura a ROBOCORP_HOME, qui deve essere definito un percorso di file molto specifico — secondo la tabella sopra riportata più un livello gerarchico aggiuntivo per il contesto utente desiderato (vedi sotto per capire come funziona in pratica).
Questo impedisce che file dannosi entrino in Hololib/Holotree, cioè l'iniezione di codice (in poche parole: se ROBOCORP_HOME sulla macchina di sviluppo fosse impostato su qualcosa come C:\foobar e se questa directory esistesse già sugli host di test e contenesse malware, questo potrebbe essere eseguito).
5.2. Variante 1: archivi ZIP
La pratica è molto più semplice del contesto tecnico, specialmente quando si lavora con un catalogo come archivio ZIP (o archivio tar.gz su Linux).
In sostanza, basta creare il catalogo specificando la variabile ROBOCORP_HOME, esportarlo come archivio e poi distribuirlo manualmente.
Di seguito trovi il percorso in dettaglio.
I percorsi negli esempi seguenti sono limitati a Windows: solo se Linux richiede comandi diversi, questi saranno specificati esplicitamente.
Imposta ROBOCORP_HOME
Il catalogo, ovvero il modello per gli ambienti (spazi) implementati esplicitamente, può essere creato su qualsiasi computer.
Per prima cosa imposta ROBOCORP_HOME nel terminale.
Su Windows:
Per l'esecuzione headless con l'account LocalSystem:
Per i robot che richiedono l'accesso al desktop e un utente corrispondente:
Su Linux:
Per l'esecuzione headless come utente standard:
Per i robot che richiedono l'accesso al desktop e un utente corrispondente:
Puoi quindi accedere alla directory del tuo bot e creare l'ambiente/catalogo:
Creazione del catalogo ZIP
Ora il catalogo deve essere esportato come ZIP.
Per prima cosa check se esiste già un catalogo Hololib con il percorso corretto del file Holotree.
Per farlo, ti serve l'hash dell'conda.yaml:
Quindi visualizza tutti i cataloghi Hololib disponibili (qui viene mostrata una versione abbreviata):
Quando l'hash viene trovato nell'elenco, puoi esportare:
Distribuire il catalogo ZIP
Il catalogo compresso è semplice da distribuire:
Copia manualmente l'archivio sull'host di prova, ad esempio in C:\robotmk\holotrees\myrobot-env.zip.
Nella regola Robotmk Scheduler (Windows|Linux) (o in Managed robots), imposta l'opzione Environment dependency handling su Load from ZIP file e inserisci il percorso del file desiderato per il catalogo zippato, in questo caso C:\robotmk\holotrees\myrobot-env.zip.
Non confondere questo percorso con l'holotree path!
Questo serve solo come repository per i file ZIP del catalogo Hololib da importare.

Quando lo scheduler verrà avviato in seguito, importerà tutti i file ZIP dei cataloghi Hololib e creerà gli spazi da questi modelli, ovvero gli ambienti che verranno effettivamente utilizzati. Quindi, invece di effettuare lo scaricamento di tutte le dipendenze tramite pip e Conda da internet, viene decompresso solo un archivio — il che non solo è offline, ma è anche molto più veloce.
E giusto per evitare qualsiasi malinteso — i robot stessi devono ovviamente essere ancora disponibili sull'host di test o distribuiti come robot gestiti — qui si tratta esclusivamente degli ambienti!
5.3. Variante 2: server RCCRemote
Prima di tutto: RCCRemote non è uno strumento autonomo, non troverai alcuna documentazione né tantomeno una pagina del prodotto su Robocorp/Sema4. Il server remoto è semplicemente una parte di RCC e viene creato quando RCC viene compilato. Il server viene solitamente gestito tramite un container. Per il funzionamento in container, ora c'è un progetto sulle pagine GitHub di Elabit, lo sviluppatore del plug-in Robotmk originale, chiamato RCCRemote-Docker. Tuttavia, RCCRemote e RCCRemote-Docker non fanno parte di Checkmk Synthetic Monitoring e non sono coperti dal supporto Checkmk!
I cataloghi per questo percorso di distribuzione possono essere creati in due modi: I cataloghi esportati come file ZIP (vedi sopra) possono essere utilizzati sia per Windows che per Linux. Solo per Linux, è anche possibile creare i cataloghi direttamente nel Docker container RCCRemote, il che elimina completamente la necessità di un intervento manuale.
Puoi scoprire come configurare RCCRemote-Docker, handle i certificati e importare i cataloghi nelle pagine del progetto.
La configurazione sul lato Checkmk è ora di nuovo — in genere — piuttosto semplice: l'opzione "Environment dependency handling" questa volta è impostata su "Fetch from RCC remote server" e deve essere fornita con l'indirizzo del server.

Manca ancora un'ultima impostazione, a seconda che il tuo server RCCRemote utilizzi un certificato self-signed o firmato da una CA. In entrambi i casi, di solito devi impostare l'opzione Robotmk scheduler (Windows|Linux) da RCC profile configuration a Custom profile.
Per un certificato self-signed, è sufficiente lasciare deselezionata la box "Validate TLS certificates":

Se invece si tratta di un certificato firmato da una CA, questa opzione deve essere attivata e il certificato dell'autorità di firma deve essere salvato in Root CA (in formato PEM):

6. Risoluzione dei problemi
6.1. Lo scheduler effettua la segnalazione "No Data
"
Se lo scheduler non riceve alcun dato, probabilmente la creazione dell'ambiente non è andata a buon fine.
Una causa comune di questo problema sono i problemi di rete, ad esempio, a causa dei quali alcune dipendenze non possono essere caricate.
In questo caso, dai un'occhiata al file di log corrispondente in C:\ProgramData\checkmk\agent\robotmk_output\working\environment_building.
6.2. Errore nella creazione dell'ambiente:post-install script execution
Si tratta di un errore particolarmente interessante che potresti riscontrare su sistemi Windows appena installati.
Il file conda.yaml può contenere anche istruzioni da eseguire dopo l'installazione delle dipendenze, ad esempio l'inizializzazione del browser di Robot Framework.
Qui dovrebbero quindi essere eseguiti comandi Python.
Per impostazione predefinita, Windows 11 dispone di alias per python.exe e python3.exe che rimandano al Microsoft Store.
Devi disattivare questi alias in "Impostazioni/Alias per l'esecuzione delle app".
7. File e directory
7.1. Windows
| Percorso del file | Descrizione |
|---|---|
|
File di log e risultati delle suite |
|
File di log per la creazione di ambienti virtuali |
|
Messaggi dall'esecuzione di RCC |
|
File di log del plug-in dell'agente |
|
|
|
Plug-in dell'agente |
7.2. Linux
| Percorso del file | Descrizione |
|---|---|
|
File di log e risultati delle suite |
|
File di log per la creazione di ambienti virtuali |
|
Messaggi dall'esecuzione di RCC |
|
|
|
Plug-in dell'agente |
|
Percorso di esecuzione per i robot gestiti |
|
Percorso di archiviazione per gli archivi dei robot gestiti |
Attenzione: su Linux, il Robotmk scheduler non crea un proprio file di log (su Windows è l'robotmk_scheduler_rCURRENT.log), ma registra i log tramite l'agente e syslog.
Il comando corrispondente:
