13.07.2015 Aufrufe

End2End-Monitoring mit Sahi und OMD - Nagios-Wiki

End2End-Monitoring mit Sahi und OMD - Nagios-Wiki

End2End-Monitoring mit Sahi und OMD - Nagios-Wiki

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>End2End</strong>-<strong>Monitoring</strong><strong>mit</strong> <strong>Sahi</strong> <strong>und</strong> <strong>OMD</strong><strong>Monitoring</strong>-Workshop 2012, MünchenSimon Meggle, Network <strong>Monitoring</strong> Consultant14.06.2012


<strong>End2End</strong>-<strong>Monitoring</strong><strong>mit</strong> <strong>Sahi</strong> <strong>und</strong> <strong>OMD</strong>• Einführung• Wozu das ganze?• Eigenschaften <strong>und</strong> Voraussetzungen von <strong>Sahi</strong>• Funktionsweise• <strong>Sahi</strong>-Proxy• <strong>Sahi</strong>-APIs• Live-Demo: „Login <strong>und</strong> Logout“ – ein erster <strong>Sahi</strong>-Testcase• Erklärung der aufgezeichneten Kommandos• Step-by-Step-Wiedergabe im <strong>Sahi</strong>-Controller• <strong>Sahi</strong>2<strong>OMD</strong>• Ablauf eines sahi2<strong>OMD</strong>-Testcases• Innere Werte: das Gr<strong>und</strong>gerüst für <strong>Sahi</strong>-Scripts• Einrichtung als <strong>Monitoring</strong>-Check• Live-Demo: „LoginAndBuy“• Bestellen <strong>und</strong> Prüfen des Warenkorb-Inhaltes• Performancedaten14.06.2012 w w w.consol.de2


Wozu das ganze?Service aBP AService bService cwww.superwichtig.deBP BService fService gService hService kService lBP CService mService nService o14.06.2012 w w w.consol.de3


<strong>Sahi</strong>: Eigenschaften <strong>und</strong> Voraussetzungen• Was ist/kann <strong>Sahi</strong>?• entwickelt von Narayan Raman• “Build a browser automation tool or library“-> „Verify web application functionality“• Web Automation and Testing Tool“-> Tool zur Simulation von User-Aktion im Webbrowser• AJAX, Frames, iFrames, Up/Downloads, Browser alerts, NTLM Auth, HTTPS• leistungsfähige API• intelligente Objekt-Adressierung auch über Frames/iFrames hinweg (kein XPath)• vorbereitete Funktionen (z.b. Datenzugriff aus Files/Datenbanken)• Batch Mode & Multi-Threaded Playback• <strong>Sahi</strong> erkennt fertiggeladene Seiten/AJAX-Requests: no need for ‚waits‘• <strong>Sahi</strong> läuft auf jedem OS <strong>mit</strong> Java (z.b. auch iOS, Android) in jedem Browser• <strong>Sahi</strong> abstrahiert• Open Source• Was ist/kann <strong>Sahi</strong> nicht?• alles, was nicht über DOM angesprochen werden kann (z.b. Flash, Applets)• Tests außerhalb des Browserinhaltes ( AutoIt)14.06.2012 w w w.consol.de4


Funktionsweise: <strong>Sahi</strong>-Proxy• „normaler“ Webtraffic: HTTP Request/ResponseBrowserHTTP Request/ResponseWebserverWorkstation14.06.2012 w w w.consol.de5


Funktionsweise: <strong>Sahi</strong>-Proxy• „normaler“ Webtraffic: HTTP Request/Response• <strong>Sahi</strong> wird als Proxy zwischengeschaltetBrowser<strong>Sahi</strong>-Prozesslocalhost:9999Webserver<strong>Sahi</strong> Test-Host14.06.2012 6w w w.consol.de


Funktionsweise: <strong>Sahi</strong>-Proxy• „normaler“ Webtraffic: HTTP Request/Response• <strong>Sahi</strong> wird als Proxy zwischengeschaltet• Aufzeichnung aller weitergeleiteten Requests in <strong>Sahi</strong>ScriptBrowser<strong>Sahi</strong>-Prozesslocalhost:9999HTTP Request/ResponseWebserverTestcase<strong>Sahi</strong> Test-Host14.06.2012 w w w.consol.de7


Funktionsweise: <strong>Sahi</strong>-Proxy• „normaler“ Webtraffic: HTTP Request/Response• <strong>Sahi</strong> wird als Proxy zwischengeschaltet• Aufzeichnung aller weitergeleiteten Requests in <strong>Sahi</strong>ScriptBrowser<strong>Sahi</strong>-Prozesslocalhost:9999HTTP Request/ResponseWebserverTestcase<strong>Sahi</strong> Test-Host14.06.2012 w w w.consol.de8


Funktionsweise: <strong>Sahi</strong>-Proxy• „normaler“ Webtraffic: HTTP Request/Response• <strong>Sahi</strong> wird als Proxy zwischengeschaltet• Aufzeichnung aller weitergeleiteten Requests in <strong>Sahi</strong>ScriptBrowser<strong>Sahi</strong>-Prozesslocalhost:9999HTTP Request/ResponseWebserverTestcase<strong>Sahi</strong> Test-Host14.06.2012 9w w w.consol.de


Funktionsweise: <strong>Sahi</strong>-Proxy• „normaler“ Webtraffic: HTTP Request/Response• <strong>Sahi</strong> wird als Proxy zwischengeschaltet• Aufzeichnung aller weitergeleiteten Requests in <strong>Sahi</strong>Script• Wiedergabe durch Injizieren der <strong>Sahi</strong>ScriptsBrowser<strong>Sahi</strong>-Prozesslocalhost:9999WebserverTestcase<strong>Sahi</strong> Test-Host14.06.2012 w w w.consol.de10


Funktionsweise: <strong>Sahi</strong>-Proxy• „normaler“ Webtraffic: HTTP Request/Response• <strong>Sahi</strong> wird als Proxy zwischengeschaltet• Aufzeichnung aller weitergeleiteten Requests in <strong>Sahi</strong>Script• Wiedergabe durch Injizieren der <strong>Sahi</strong>ScriptsBrowser<strong>Sahi</strong>-Prozesslocalhost:9999HTTP Request/ResponseWebserverTestcase<strong>Sahi</strong> Test-Host14.06.2012 w w w.consol.de11


Funktionsweise: <strong>Sahi</strong>-Proxy• „normaler“ Webtraffic: HTTP Request/Response• <strong>Sahi</strong> wird als Proxy zwischengeschaltet• Aufzeichnung aller weitergeleiteten Requests in <strong>Sahi</strong>Script• Wiedergabe durch Injizieren der <strong>Sahi</strong>ScriptsBrowser<strong>Sahi</strong>-Prozesslocalhost:9999HTTP Request/ResponseWebserverTestcase<strong>Sahi</strong> Test-Host14.06.2012 w w w.consol.de12


Funktionsweise: <strong>Sahi</strong>-Proxy• „normaler“ Webtraffic: HTTP Request/Response• <strong>Sahi</strong> wird als Proxy zwischengeschaltet• Aufzeichnung aller weitergeleiteten Requests in <strong>Sahi</strong>Script• Wiedergabe durch Injizieren der <strong>Sahi</strong>Scripts• Auch externe Proxies werden unterstütztBrowser<strong>Sahi</strong>-Prozesslocalhost:9999ProxyWebserverTestcase<strong>Sahi</strong> Test-Host14.06.2012 13w w w.consol.de


Funktionsweise: <strong>Sahi</strong>-APIs(Jetzt wird’s kurz trocken.)14.06.2012 w w w.consol.de14


Funktionsweise: DOM• DOM = Document Object Model• Norm, die den Zugriff auf Objekte in einem Markup-Dokument (z.b. HTML) bietet• Markup-Dokumente bestehen aus Knoten in einer BaumstrukturVornameNameDonaldDuckhttp://www.wiki pedia.org/14.06.2012 w w w.consol.de15


Funktionsweise: <strong>Sahi</strong>-APIsBrowser Accessor API Browser Action API Miscellaneous API14.06.2012 w w w.consol.de16


Funktionsweise: <strong>Sahi</strong>-APIs• Browser Accessor APIs• Funktionen, die den Zugriff auf DOM-Objekte im Browser ermöglichen• erwarten einen Identifier• Identifier = Indizes, IDs, Namen, CSS-Klassennamen, etc (auch als Regex)• Beispiel:


Funktionsweise: <strong>Sahi</strong>-APIs• Browser Accessor APIs – Lokalisierung <strong>mit</strong> „DOM Relations“• Funktionen, die den Zugriff auf DOM-Objekte im Browser ermöglichen• erwarten einen Identifier <strong>und</strong> eine optionale DOM Relation• Identifier = Indizes, IDs, Namen, CSS-Klassennamen, etc (auch als Regex)• DOM Relation = DOM Relation Marker(DOM Objekt)• DOM Relation Marker = Beziehung zweier Elemente im DOM:• _near()• _<strong>und</strong>er()• _in()_image(“delete.gif”, _near(_cell(“usr4”))_link(„Details“, _<strong>und</strong>er(_cell(„details“)))_link(„Details“, _in(_cell(„product_facts“)))• Je mehr DOM Relations verwendet werden, desto robuster werden <strong>Sahi</strong>-Cases!http://sahi.co.in/w/browser-accessor-apis14.06.2012 w w w.consol.de18


Funktionsweise: <strong>Sahi</strong>-APIs• Browser Action APIs• Funktionen, die Aktionen im Browser auslösen• Mausaktionen: _click(), _mouseOver(), _dragDrop(), ..., ...• Tastenaktionen: _keyPress(), keyDown(), ..., ...• Daten-Aktionen: _setValue(), ..., ...• Prüf-Routinen• Vergleiche : _assertEqual(), assertContainsText(), assertNotEqual()..., ...• Vorhandensein : _assertExists(), assertNotExists()..., ...• Debugging: _debug(), _prompt(), _alert()..., ...• u.v.m. ...http://sahi.co.in/w/browser-action-apis14.06.2012 w w w.consol.de19


Funktionsweise: <strong>Sahi</strong>-APIs• Miscellaneous APIs• Helper-Funktionen: _random(), _sessionInfo(), _lastDownloadedFileName(), ...• Log-Funktionen: _logException(), _stopOnError(), ...• Daten-Funktionen: _getDB(), _readFile(), _writeToFile(), _readCSVFile(), ...• Browser-Erkennung: _isIE(), _isFF(), _isChrome(), _isSafari()• u.v.m. ...http://sahi.co.in/w/miscellaneous-apis14.06.2012 w w w.consol.de20


Funktionsweise: <strong>Sahi</strong>-APIs(...geschafft!)14.06.2012 w w w.consol.de21


Live-Demo: „Login <strong>und</strong> Logout“ – der erste <strong>Sahi</strong>-Testcase14.06.2012 w w w.consol.de22


<strong>Sahi</strong>2<strong>OMD</strong> – Ablauf eines Testcases☺☺Thresholds/Case/SuiteStatus-AggregationTask Schedulernagios.inc☺Perfdatensahi2omd.vbs<strong>Sahi</strong> suite(helper func)environment-Checkstart <strong>Sahi</strong>-SuiteResults einlesenState bestimmenPerfdaten (Cases+Suite)Über<strong>mit</strong>tlung an <strong>OMD</strong>tmp-Datei <strong>mit</strong>Ergebnissen<strong>OMD</strong>-Server<strong>Sahi</strong>-Test-Host14.06.2012 w w w.consol.de23


<strong>Sahi</strong>2<strong>OMD</strong> – Ablauf eines Testcases☺☺Thresholds/Case/SuiteStatus-AggregationTask Schedulernagios.inc☺Perfdatensahi2omd.vbs<strong>Sahi</strong> suite(helper func)environment-Checkstart <strong>Sahi</strong>-SuiteResults einlesenState bestimmenPerfdaten (Cases+Suite)Über<strong>mit</strong>tlung an <strong>OMD</strong>tmp-Datei <strong>mit</strong>Ergebnissen<strong>OMD</strong>-Server<strong>Sahi</strong>-Test-Host14.06.2012 w w w.consol.de24


<strong>Sahi</strong>2<strong>OMD</strong> – Innere Werte: Gr<strong>und</strong>gerüst für <strong>Sahi</strong>-ScriptsDas aufgezeichnete <strong>Sahi</strong>-Script wird in den „<strong>Nagios</strong>-Codeblock“ gesteckt:• Laufzeit-Thresholds werden gesetzt, Timer gestartet• Exceptions werden korrekt abgefangen• Output wird weiterverarbeitetHilfs-FunktionenFehler sollen nicht zum Abbruch führen, sondern in „catch“ abgefangen werdenThreshold für Laufzeit des Cases(ursprüngliches <strong>Sahi</strong>-Script)FehlerbehandlungSpeichern des Ergebnisses14.06.2012 w w w.consol.de25


<strong>Sahi</strong>2<strong>OMD</strong> – AutomatisierungAufruf:C:\Windows\System32\cscript.exe //Nologo C:\sahi\userdata\bin\sahi2omd.vbs-m 1-f [oxid\login_logout.sah | my.suite]-e-b firefox-u http://oxid/shop/-n omd1-h sahidose-s login_logout-m 1 : Maximale Anzahl Threads-e : expand Suite (Testcases in Suite werden als Services behandelt)-f : Pfad zur <strong>Sahi</strong>-Scriptdatei im Scripts-Verzeichnis-b : Browser (firefox | chrome | ie)-u : Start-URL-n : Name des <strong>Monitoring</strong>-Servers-h : Host name-s : Service description14.06.2012 w w w.consol.de26


Live-Demo: „Login and Buy“• Einloggen• Warenkorb leeren, falls nötig• Artikel 1• suchen• 2x bestellen• Artikel 2• suchen• 2x bestellen• Warenkorb prüfen14.06.2012 w w w.consol.de27


PerformancedatenEinzelner Testcase:sahi2omd.vbs –f mycase.sahSuite <strong>mit</strong> Serviceexpansion:sahi2omd.vbs –f mysuite.suite -eSuite ohne Serviceexpansion:sahi2omd.vbs –f mysuite.suiteOK: <strong>Sahi</strong> test 'livedemo3.sah' (12s) OK: <strong>Sahi</strong> test 'livedemo4.sah' (8s) ..., ...| livedemo1.sah=2s;15;20;; livedemo2.sah=5s;15;20;; ... oxid.suite=63s;;;; [check_sahi_suite]14.06.2012 w w w.consol.de28


Danke für die Aufmerksamkeit!14.06.2012 w w w.consol.de29

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!