End2End-Monitoring mit dem Open Source-Tool Sakuli

Lesezeit
3 Minuten
Bis jetzt gelesen

End2End-Monitoring mit dem Open Source-Tool Sakuli

25.02.2015 - 00:00
Veröffentlicht in:
Das Monitoring kritischer Applikationen setzt auf eine Vielzahl von Checks. Aus deren Summe lässt sich jedoch kein qualifizierter Gesamtstatus ableiten. Hier ist End2End-Monitoring gefragt, etwa mit dem Open Source-Tool Sakuli. Es simuliert Maus- und Tastatureingaben des Anwenders in der Applikation, wertet Inhalte aus, misst Laufzeiten und integriert die Ergebnisse in Nagios. Dabei vereint es die Stärken der Test-Werkzeuge Sahi und Sikuli. Wir beschreiben, wie Sie mit Sakuli funktionelle und inhaltliche Störungen frühzeitig erkennen.
Wer die Verfügbarkeit einer Applikation sicherstellen will, überwacht alle Komponenten, von denen sie abhängt. Diese Aufgabe übernimmt gerne an ein Monitoring-Tool wie Nagios oder eines seiner Derivate. Sogenannte "Business Process Addons" wie das Nagios-GUI Thruk helfen, die in allen OSI-Schichten platzierten Checks zueinander in Beziehung zu setzen. So wird aus den Status vieler einzelner technischer Checks der (theoretische) Status der Applikation.

Ende-zu-Ende-Überwachung tut Not
Business-Process-Monitoring zeigt allerdings nur den Gesamtstatus der Voraussetzungen zum Betrieb der Applikation – und offenbart somit nur, dass jedes Glied der Funktionskette für sich gesehen in Ordnung ist (= alle Checks OK) und diese Kette zusammenhängend ist (= resultierender Business-Prozess OK). Geschäftskritisch jedoch ist, ob die Kette ihrer vorgesehenen Belastung standhält (= die einzelnen Komponenten also korrekt miteinander arbeiten) – oder etwa bricht.

Die gute Nachricht: Wenn die Kette nicht hält, gibt es jemanden, der dies sofort merkt und Alarm schlagen kann: der Anwender. Die schlechte Nachricht: Normalerweise sollte der Anwender schlechte Antwortzeiten oder Fehlermeldungen gar nicht erst zu Gesicht bekommen. Deshalb ist es Aufgabe des End2End-Monitorings, den Anwender zu simulieren und die Qualität dieser Kette vom einen bis zum anderen Ende zu prüfen.

Breite Palette an Werkzeugen
Die Auswahl an Tools zur Simulation von Useraktionen ist groß. Wer die Ergebnisse solcher Tests allerdings in Nagios integrieren will, der muss fast ausnahmslos die eigene Kreativität bemühen. Anfang 2014 wurde das Projekt Sakuli [1] gegründet, um die Stärken von zwei Werkzeugen, nämlich Sahi [2] und Sikuli [3] zu kombinieren und gemeinsam nutzbar zu machen. Die Ergebnisse werden über eine standardisierte Schnittstelle (Receiver) an Drittsysteme wie Nagios weitergegeben.

Sahi
Sahi beschränkt sich im Funktionsumfang auf das Testen von Webinhalten, ist in dieser Disziplin aber außerordentlich performant. Der pro Test gestartete Sahi-Prozess lauscht auf Port 9.999 und schiebt dem Browser diesen Port als Proxy unter. Die ausgelieferten Seiten enthalten Sahi-Javascript zur Aufzeichnung und Ausführung von Aktionen.

Die Syntax von Sahi basiert auf Javascript. Browser-Aktionen wie _click erwarten eine Referenz auf das Zielobjekt, die von der Akzessor-Funktion _link geliefert wird. Aktionen wie _setValue erwarten außerdem den zu setzenden Wert:
_click(_link("Login"));
_setValue(_textbox("username"), $usr);
_setValue(_password("password"), $pwd);
_click(_submit("Login")); 
_click(_link(/del/, _rightOf(_cell("User Two"))));
Die letzte Codezeile sucht nach einem Link, der der Regex /del/ entspricht und im Document Object Model (DOM) rechts von der Tabellenzelle "User two" steht. Zur Lokalisierung von Objekten auf dynamisch generierten Seiten sind diese sogenannten "DOM Relations" extrem hilfreich.

An seine natürlichen Grenzen stößt Sahi jedoch außerhalb des DOM, zum Beispiel bei der PIN-Eingabe zur Smartcard-Authentifizierung auf einer Webseite. Solche modalen Dialogfenster sind ebenso wie etwa Flash/Java-Applets für Sahi ein blinder Fleck.

Sikuli
Sikuli lokalisiert mit der Bibliothek "OpenCV" Bildmuster auf der aktuellen Anzeige und führt darauf wie ein echter Benutzer Maus- und Tastaturaktionen aus. Ein Screenshot des OK-Buttons etwa aus einer PIN-Abfrage reicht Sikuli, um diesen auf dem Bildschirm zu suchen und auf die erhaltene Region die User-Aktion "click" auszuführen. Das Region-Objekt "screen" eignet sich gut zur Suche von Objekten auf dem ganzen Bildschirm. Funktionen wie find/waitForImage liefern immer auch die Region zurück, in der das Bild gefunden wurde. Darin kann Sikuli nach weiteren Objekten suchen und per OCR auch Text extrahieren. Die Steuerung von MS Word 2013 beispielsweise könnte so aussehen:
// warte, bis Ribbon-Menüleiste sichtbar ist und speichere diesen Bereich 
 in file_ribbon 
var file_ribbon = screen.waitForImage("file_ribbon", 10);
// suche darin das Bild "font_bold" und klicke darauf
file_ribbon.find("font_bold").click();

Bild 1: Teamplay – Funktionsaufrufe beider Tools in einem Script.

Sahi & Sikuli = Sakuli
Das in Java geschriebene Sakuli verzahnt beide Tools über ihre API nun so miteinander, dass sie im Mischbetrieb eingesetzt werden können. Das Listing zeigt, wie sich der obige Login mit Sakuli testet lässt: nach dem Klick auf "Login" bedient Sikuli den (für Sahi unsichtbaren) PIN-Dialog. Im weiteren Verlauf kommen wieder die mächtigen Web-Funktionen von Sahi zum Einsatz:
// ### Sahi
_click(_link("Login"));
_setValue(_textbox("username"), $usr);
_setValue(_password("password"), $pwd);
_click(_submit("Login")); 
// ### Sikuli 
screen.waitForImage("enter_pin_code", 5);
screen.find("edit_with_asterisks").type("1234");
screen.find("okbutton").click();
// ### go on with Sahi 
_click(_link(/del/, _rightOf(_cell("User Two"))));
...
Die im Weiteren gezeigten Details von Sakuli lassen sich gut anhand einer Demo-Appliance im Web [4] nachvollziehen. Diese beinhaltet sowohl Nagios (in Form von OMD) als auch Sakuli und überwacht sich mit zwei exemplarischen Checks selbst.

    Seite 1: Sahi und Sikuli – best of both worlds
    Seite 2: Integration in Nagios und Visualisierung


Seite 1 von 2 Nächste Seite >>




ln/Simon Meggle, Spezialist für Open Source-Monitoring bei Consol

[1] https://github.com/ConSol/sakuli
[2] http://sahipro.com/sahi-open-source/
[3] www.sikuli.org
[4] http://labs.consol.de/sakuli/demo/

Ähnliche Beiträge

Zero-Touch-Provisionierung von aktiven Netzwerkkomponenten (3)

Zero-Touch-Provisionierungsprozesse sind im Rollout von Client-PCs und Servern bereits lange Zeit Standard. Im Gegensatz dazu kommen diese Prozesse bei aktiven Netzwerkkomponenten wie Routern und Switches nur selten zum Einsatz. Im dritten und letzten Teil gehen wir auf weitere Varianten ein, etwa die ZTP-Provisionierung ohne proprietären Server, die Boot-Loader-Variante iPXE oder das alte Verfahren AutoInstall.

Zero-Touch-Provisionierung von aktiven Netzwerkkomponenten (2)

Zero-Touch-Provisionierungsprozesse sind im Rollout von Client-PCs und Servern bereits lange Zeit Standard. Im Gegensatz dazu kommen diese Prozesse bei aktiven Netzwerkkomponenten wie Routern und Switches nur selten zum Einsatz. Im zweiten Teil der Workshopserie schildern wir den proprietären Cisco-Ansatz "Network-Plug-and-Play", der über eine GUI erfolgt und bei dem sich die ausgerollten Komponenten an die Gegebenheiten im Netzwerk anpassen lassen.

Zero-Touch-Provisionierung von aktiven Netzwerkkomponenten (1)

Zero-Touch-Provisionierungsprozesse sind im Rollout von Client-PCs und Servern bereits lange Zeit Standard. Sowohl die Installation von Betriebssystemen als auch Applikationen erfolgt meist automatisiert. Im Gegensatz dazu kommen diese Prozesse bei Netzwerkkomponenten wie Routern und Switches nur selten zum Einsatz. Im ersten Teil skizzieren wir die möglichen Rollout-Verfahren und beschreiben, welche Ansätze und Möglichkeiten sich Unternehmen hier bieten.