Espansione della funzionalità di WatchMouse 1. Che cos’è? 2. Come funzionano i plug-in? 3. Come posso creare un plug-in personalizzato? 4. Limiti di tempo 5. Esempi 1. Che cos’è? In alcuni pacchetti WatchMouse (ad es. "Platinum") è possibile specificare monitoraggi di tipo 'plugin'. Utilizzando un monitoraggio plug-in è possibile espandere la funzionalità del sistema WatchMouse per verificare qualunque protocollo e qualsiasi server o processo a propria disposizione, anche dietro un firewall. 2. Come funzionano i plug-in? I plug-in sono pagine Web dinamiche posizionate sul proprio server Web, che eseguono la verifica per conto del server WatchMouse. La pagina (plug-in) viene aperta con una serie di parametri (vedere sotto) e restituisce il risultato della verifica. Dato che la pagina dinamica viene eseguita sul proprio server, ed è sotto il proprio controllo, è in grado di accedere ad altri sistemi oltre al sistema WatchMouse esterno. 3. Come posso creare un plug-in personalizzato? È possible creare un plug-in personalizzato realizzando una pagina Web dinamica su un server Web raggiungibile via Internet. Per creare questa pagina dinamica è possible utilizzare qualsiasi linguaggio di programmazione (PHP, ASP, C++, Java, TCL, ...). La pagina viene visitata dai server WatchMouse in base all’intervallo specificato nelle impostazioni dei monitoraggi. I seguenti parametri vengono inviati a tale pagina dinamica utilizzando un comando HTTP POST: - WMhost
- WMport
- WMpath
- WMpar
- WMaccount
- WMpasswd
- WMua [da implementare]
- WMmem [da implementare]
Il valore del parametro viene copiato dalle impostazioni dei monitoraggi utilizzando i campi relativi a host, porta, percorso, parametro, account, e password, rispettivamente. I parametri vengono spediti utilizzando il protocollo HTTP 1.0. Nei registri del proprio server Web è possible riconoscere le verifiche provenienti dai nostri server, poiché sono contrassegnate con l’user-agent WatchMouse/NNN. Attualmente, la versione NNN è 1.20. 3.1. Valori di risposta Dopo l’esecuzione della verifica tramite lo script della propria pagina dinamica, dovrebbe essere restituita una pagina con content-type "text/plain" e con una o più righe che terminano con una nuova riga, possibilmente un carattere di interruzione di riga. Queste righe dovrebbero apparire come segue (nessuna riga vuota, nessuno spazio iniziale): parametro=valore Vengono definiti i seguenti valori di risposta, gli altri nomi di parametro verranno ignorati: | Nome | Tipo | Opzionale | Descrizione | | stato | numero intero positivo | N | Usare 0 per denotare un risultato positive e un valore di 1..9999 in caso di errore. Usare valori diversi per ogni condizione di errore. | | messaggio | caratt.(255) | Y | Un testo breve (senza paragrafi, normalmente 20 caratteri, max 255 caratteri). Possibilmente, utilizzare un testo specifico per ogni valore di stato. | | rtime* | numero intero positivo | N/A | Tempo di risoluzione. Non ancora registrato, ma disponibile online. | | ctime | numero intero positivo | Y | Tempo di connessione. Tempo in millisecondi per stabilire la connessione | | dtime | numero intero positivo | Y | Tempo di download. Tempo in millisecondi per scaricare le informazioni. | | dsize | numero intero positivo | Y | Dimensioni di download. Numero di byte scaricati. | | ptime | numero intero positivo | Y | Tempo di elaborazione. Tempo il millisecondi per l’elaborazione. Normalmente il tempo trascorso dalla connessione al primo byte ricevuto | | user | numero intero positivo | Y | Valore definito dall’utente | | *) Attualmente non registrato | Eccetto i campi 'stato' e 'messaggio', tutti i campi sono in realtà definibili dall’utente. Se vengono utilizzati allo scopo descritto sopra consentiranno una più agevole interpretazione dei registri e dei grafici da parte di altri utenti. 4. Limiti di tempo Il timeout impostato nel monitoraggio (valore predefinito 8 secondi) viene inoltrato al plug-in, ma rappresenta anche il timeout del plug-in stesso. In caso di un timeout, i parametri (ctime, ...) non vengono memorizzati. 5. Esempi Di seguito, è possibile trovare un esempio in PHP (http://www.php.net/), Java, e ASP. 5.1. Esempio PHP 1. <? 2. // Elemento di collegamento WatchMouse per database MySQL 3. // Sono disponibili i seguenti parametri POST 4. // WMhost, WMport, WMpath, WMaccount, WMpasswd, WMpar 5. // L’output dell‘host sarà un’intestazione MIME, 6. // seguita da: 7. // stato=NNN\nmessaggio=XXX\n 8. // NNN è un numero positivo, 0 corrisponde a OK, 1..9999 ad un errore 10. // XXX è un messaggio, max 255 caratteri, solo car. ASCII 32..127 11. 12. $dbhost = 'dbhost.yourdomain.com'; 13. $dbname = 'yourDBname'; 14. $dbuser = $WMaccount; 15. $dbpass = $WMpasswd; 16. 17. $dbh = @mysql_connect($dbhost, $dbuser, $dbpass); 18. 19. $err = mysql_errno()+0; 20. $msg = mysql_error(); 21. if (!$dbh && !$err) { 22. $err=1; 23. $msg = "Impossibile eseguire il collegamento a $dbhost($dbuser))"; 24. } 25. print "status=$err\n"; 26. print "message=$msg\n"; 27. 28. if ($dbh) @mysql_close($dbh); 29. ?> 5.2. Esempio Java [TBI] 5.3. Esempio ASP [TBI] |