Reliable monitoring made by experts

WatchMouse manual för Plugins

Utöka WatchMouse funktionalitet


1. Vad är det?

2. Hur fungerar plug-ins?

3. Hur kan jag skapa en egen plug-in?

4. Tidsrestriktioner

5. Exempel



1. Vad är det?

I vissa WatchMouse-paket (t.ex. "Platina") kan man specificera regler av typen 'plugin'. Med en plug-in-regel kan du utöka funktionaliteten i WatchMouse-systemet till att testa valfritt protokoll och valfri server eller process hos er, t.o.m. bakom er brandvägg.

2. Hur fungerar plug-ins?

Plug-ins är dynamiska webbsidor som placeras på er egen webbserver och som utför testet åt WatchMouse server. Webbsidan (plug-in) öppnas med ett antal parametrar (se nedan) och returnerar svaret av testet. Eftersom den dynamiska sidan körs på er server, och kontrolleras av er, så har den tillgång till fler system än WatchMouse externa system.

3. Hur kan jag skapa en egen plug-in?

Du kan göra en egen plug-in genom att skapa en dynamisk webbsida på en webbserver som är åtkomlig från Internet. Valfritt programmeringsspråk kan användas för att skapa denna dynamiska sida (PHP, ASP, C++, Java, TCL, ...). Sidan besöks av WatchMouse servrar enligt de intervaller du har satt upp i inställningarna för din regel.

Följande parametrar skickas till denna dynamiska sida via ett HTTP POST komando:

  • WMhost
  • WMport
  • WMpath
  • WMpar
  • WMaccount
  • WMpasswd
  • WMua [kommer att implementeras]
  • WMmem [kommer att implementeras]

Värdet på parametern kopieras från regelinställningarna från respektive fält: host, port, path, parameter, account och password.
Parametrarna postas med hjälp av HTTP 1.0 protokollet. I loggfilerna för din webbserver kan du känna igen anropen från våra servrar då de är taggade med user-agenten "WatchMouse/NNN". För närvarande är versionen NNN 1.20.

3.1. Returvärden

Efter att testet i skriptet på din dynamiska sida är genomfört så ska du skicka tillbaka en sida med content-typ "text/plain" och med en eller flera rader som avslutas med 'newline' (företrädesvis ett linefeed-tecken). Dessa rader ska se ut så här (inga tomma rader, inga inledande mellanslag):

    parameter=value

Följande returvärden finns definierade, övriga parameternamn kommer att ignoreras:

Name Type Optional Description
status unsigned integer N Använd 0 för att indikera ett lyckat resultat och värdet 1..9999 om ett fel uppstod. Vänligen använd olika värden för olika fel.
message char(255) Y En kort text (inga radbrytningar, typiskt 20 tecken, max 255 tecken). Lämpligen används unika texter för varje statusvärde.
rtime* unsigned integer N/A Uppslagstid. Loggas inte än, men finns tillgänglig 'on-line'.
ctime unsigned integer Y Uppkopplingstid. Tid i millisekunder för att skapa uppkopplingen.
dtime unsigned integer Y Hämtningstid. Tid i millisekunder för att ladda ner informationen.
dsize unsigned integer Y Hämtningsstorlek. Antal bytes som hämtats.
ptime unsigned integer Y Beräkningstid. Tid i millisekunder för beräkning. Normalt tiden från uppkoppling tills första byten är mottagen.
user unsigned integer Y Användardefinierat värde
*) Loggas inte för närvarande

Observera att förutom fälten 'status' och 'message', är faktiskt alla fält möjliga för användaren att. Men om man använder dem för det syfte som beskrivs ovan så blir det enklare för andra personer att tolka loggar och grafer.

4. Tidsrestriktioner

Den timeout du sätter i regeln (8 sekunder är standard) skickas till din plugin, en det är också den timeout som gäller för plugin:en själv. Om det blir en timeout så lagras inte parametrarna (ctime, ...).

5. Exempel

Nedan hittar du exempel i PHP (http://www.php.net/), Java och ASP.

5.1. Exempel i PHP

1. <?
2. // WatchMouse connector för MySQL databas
3. // Följande POST parametrar finns tillgängliga
4. // WMhost, WMport, WMpath, WMaccount, WMpasswd, WMpar
5. // Utdata från 'remote host' skall vara en MIME header,
6. // följt av:
7. // status=NNN\nmessage=XXX\n
8. // NNN är ett positivt tal, 0 betyder ok, 1..9999 ett fel
10. // XXX är ett meddelande, max 255 tecken, bara ASCII tecken 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 = "Kunde inte koppla upp mot $dbhost($dbuser))";
24. }
25. print "status=$err\n";
26. print "message=$msg\n";
27.
28. if ($dbh) @mysql_close($dbh);
29. ?>

5.2. Exempel i Java

[TBI]

5.3. Exempel i ASP

[TBI]