Aus Linux-Magazin 06/2017

Ende-zu-Ende-Monitoring: Messen, was der Benutzer merkt

© ktsdesign, 123RF

“Heute ist alles wieder so langsam!”, stöhnen die Anwender. Aber stimmt das auch? Und falls es stimmt, woran liegt es? Eine kontinuierliche Überwachung der tatsächlichen Performance der Anwendungen hilft auch bei vielschichtigen Clouddiensten, die Servicequalität zu sichern.

Unter Application Performance Monitoring versteht man die Leistungs- und Verfügbarkeitsüberwachung von Anwendungen. Ziel dieses Monitoring-Ansatzes ist es, anhand von Leistungsdaten dafür zu sorgen, dass die Benutzer zufrieden sind und der Admin potenzielle Probleme schon im Vorfeld erkennt.

Einen zentralen Baustein dieser Monitoring-Spielart bildet das End-to-End-Monitoring. Dabei misst der Admin die Performance geschäftskritischer Anwendungen aus der Perspektive des Nutzers. Die Qualitätskontrolle findet also dort statt, wo das Programm tatsächlich im Produktivbetrieb läuft.

Dem liegt die Erfahrung zugrunde, dass die Überwachung der einzelnen Komponenten eines IT-Service alleine noch keine aussagekräftigen Ergebnisse liefert. Datenbanken, Webserver oder Hosts können einzeln einwandfrei funktionieren, aber dennoch kann die daraus aufgebaute Applikation unbenutzbar sein, weil die einzelnen Elemente nicht reibungslos zusammenspielen. In diesem Fall kommt der Admin Performance-Einschränkungen dadurch auf die Schliche, dass er den Zeitbedarf von Handlungen misst, die der Anwender genauso absolviert. Damit erfasst er bestimmte Daten (etwa die Reaktionsfreudigkeit oder fehlgeschlagene Interaktionen), die für die Benutzererfahrung stehen.

Beim End-to-End-Monitoring [1] wird zwischen zwei Ansätzen unterschieden: Aktives oder synthetisches Monitoring versus passives oder Real User Monitoring. Beim aktiven Monitoring simulieren Tools typisches Nutzerverhalten und zeichnen Leistungsdaten auf. Beim passiven Monitoring speichern die Tools die Performancedaten während der Nutzung durch Menschen. Der Vorteil der aktiven Herangehensweise ist, dass sie auf Störquellen aufmerksam macht, bevor sie sich auswirken. Prinzipiell liefern aber beide Ansätze aussagekräftige Daten.

In jedem Fall ist zu bedenken, dass Performanceprobleme nicht nur einzelne Abläufe verlängern, sondern auch die Arbeitseffizienz der Mitarbeiter mindern und Frustration hervorrufen. Ist der Endanwender ein Kunde, sind die negativen Auswirkungen meist noch größer und enden im schlimmsten Fall sogar mit dessen Kündigung. Das End-to-End-Monitoring ist damit ein wichtiger Bestandteil eines ganzheitlichen IT-Service-Managements.

Die Monitoringdaten können nicht zuletzt als wichtige Ausgangswerte beim Capacity Planning dienen. Auf ihrer Grundlage lassen sich Verbesserungen oder Erweiterungen gezielt dimensionieren, sodass mit geringen Kosten hohe Effekte zu erreichen sind.

Servicequalität aus Sicht des Users

Alyvix [2], das Monitoringtool, das dieser Beitrag vorstellen will, ist eine Engine für synthetisches Application Monitoring. Es ermöglicht die Überwachung von Anwendungen aus User-Sicht, indem es Transaktionsabfolgen simuliert und die entsprechenden Leistungsdaten misst und aufzeichnet. Die Lösung basiert auf maschinellem Sehen (Computer Vision)[3]. Sie prüft, ob die Benutzer eine gewünschte Aktionen zu einem bestimmten Zeitpunkt in verschiedenen Niederlassungen durchführen können und ob dabei die vereinbarte Servicequalität garantiert ist.

Unter maschinellem Sehen versteht man in diesem Fall das Erkennen von Objekten wie Schaltflächen, Toolbars, Auswahllisten und Dialogfelder. Die Engine interagiert mit diesen Elementen des Applikations-GUI so, wie es ein User tun würde. Das heißt sie klickt zum Beispiel auf Schaltflächen oder tippt Zeichen in ein Dialogfeld ein. Der Vorteil dieser Herangehensweise ist, dass Alyvix nicht auf das Vorhandensein von Programmierschnittstellen (APIs) der zu testenden Anwendung angewiesen ist, sondern sie wie ein menschlicher User direkt über die Benutzeroberfläche bedient.

Durch die Interaktion mit der Anwendungsoberfläche kann Alyvix alle Web- und Desktop-Applikationen automatisieren und misst die sich ergebenden Transaktionszeiten. Die erfassten Performancedaten lassen sich anschließend in allen gängigen Monitoringsystemen darstellen. Zusätzlich generiert Alyvix HTML-Reports, die Details zu den einzelnen Handlungsschritten enthalten.

Simulation auf Open-Source-Basis

Alyvix ist ein Open-Source-Modul für Python und nutzt Open CV [4] und Tesseract OCR [5] zur Erkennung von GUI-Objekten. Mit Hilfe der erwähnten Tools ist die Software in der Lage, die genaue Position (x/y-Koordinate) aller grafischen Objekte zu bestimmen. Außerdem kann die Engine über Tastatur und Maus mit den identifizierten Objekten interagieren. Sie kann also beispielsweise auf Buttons klicken oder Texte in ein Eingabefeld tippen, genauso wie es ein realer Benutzer tun würde.

Als Python-Modul wird Alyvix in das Robot Framework [6] integriert. Das ist ausgerichtet auf automatisierte Software-Tests mit besonderem Fokus auf Akzeptanz-Tests. Es verwendet eine einfache tabellenartige Struktur für die Verwaltung der Testdaten und stützt sich auf das Keyword-Driven Testing. Die Testfälle werden als Text- oder HTML-Dateien abgelegt.

Das Robot Framework stellt auch eine grafische Benutzeroberfläche, das so genannte Robot Integrated Development Environment (RIDE, [7]) zur Verfügung. Das ermöglicht zusätzliche Funktionen wie Codevervollständigung, vereinfachtes Verwalten von Schlüsselwörtern und vieles mehr. Das Robot Framework stellt der Alyvix-Installer automatisch bereit. Danach lassen sich individuelle Testszenarien ganz einfach über die grafische Benutzeroberfläche erstellen.

Wer die definierten Handlungsabfolgen in frei definierbaren Zeitabständen (zum Beispiel alle fünf Minuten) ausführt, ermöglicht das automatisierte Testen von Leistung, Verfügbarkeit und Reaktionsfreudigkeit aller Applikationen. Zusätzlich kann der Admin die Performancedaten im zentralen Monitoringsystem archivieren, verarbeiten und abbilden.

Alyvix ist Open Source und bietet damit die bekannten Vorteile wie Anpassbarkeit und Erweiterbarkeit durch den Anwender, Kostenfreiheit, die Möglichkeit, es vor dem Einsatz ausgiebig zu testen, oder die fortwährende Weiterentwicklung durch eine Community.

Das Funktionsprinzip

Wie schon gesagt, der Alyvix-Wizard ist in der Robot Framework IDE http://7 integriert (Abbildung 1). Alyvix bietet mehrere Werkzeuge, um jede beliebige Interaktion mit der gewünschten Anwendung als Transaktion zu definieren. Dafür legt der Admin so genannte Alyvix Keywords an. Das heißt, er wählt ein grafisches Element am Bildschirm aus, legt dazu die Interaktionsart fest, zum Beispiel Klicken, Drag & Drop, Doppelklicken und so weiter. Abhängig von der Art des Elements, das das Monitoringtool erkennen und für die Interaktion verwenden soll, stehen in der Alyvix-IDE verschiedene Bildsucher, so genannte Finder, zur Verfügung:

Abbildung 1: Mit Hilfe von Open-Source-Tools simuliert Alyvix menschliches Nutzerverhalten.

Abbildung 1: Mit Hilfe von Open-Source-Tools simuliert Alyvix menschliches Nutzerverhalten.

  • Rect Finder: Sucht grafische Elemente in Rechteck-Form (das können zum Beispiel Eingabeboxen oder Buttons sein).
  • Image Finder: Sucht nach Bildern, die ein Screenshot des zu suchenden Bereichs definiert (etwa ein Icon oder ein Logo).
  • Text Finder: Sucht nach Texten, die die Texterkennungs-Engine findet.
  • Object Finder: Sucht nach Objekten, die aus mehreren der oben genannten Elemente zusammengesetzt sind.

Bei der Suche muss der Admin auch festlegen, in welcher Reihenfolge die Objekte zu suchen sind und in welchem Bereich des Bildschirms sie auftreten können. Besonders bei der Texterkennung ist die räumliche Eingrenzung wichtig, da die OCR-Bilderkennung auf großen Flächen viel CPU-Leistung beansprucht.

Der Wizard erstellt Python-Funktionen, die der Anwender über ihren Namen im Robot-IDE-Wizard aufruft. Zusätzlich zu den Alyvix-Objekten kann er natürlich auch alle anderen bestehenden Robot-IDE-Libraries und -Kommandos verwenden.

Dem besseren Verständnis dient ein einfaches Beispiel, das einen Editor öffnet, dort einen Text eingibt und dann den Editor wieder schließt. Prozeduren dieser Art lassen sich natürlich im Geschäftsalltag mit beliebigen Applikationen beliebig komplex ausbauen.

Mit Hilfe der Funktion »Create Process« der IDE startet Alyvix ein beliebiges Programm, in diesem Fall unter Windows den Texteditor Notepad (Abbildung 2). Über ein zweites Keyword wird das Fenster des Editors maximiert, damit die gesamte Bildschirmfläche für die Texteingabe nutzbar ist. Es folgt die Funktion »Send Keys«, die eine Tastatureingabe simuliert.

Abbildung 2: Der Testcase zum Starten des Editors Notepad unter Windows.

Abbildung 2: Der Testcase zum Starten des Editors Notepad unter Windows.

Durch das Keyword »Alyvix Screenshot« erstellt Alyvix sodann einen Screenshot des Bildschirms, den es anschließend im resultierenden HTML-Log einbettet. Im Zusammenhang mit dem Screenshot definiert Alyvix die Wizard-Objekte »Click Menu File«, »Click Menu File Exit« und »Click Dont Save«, andere Keywords werden sowohl von der Alyvix-Library als auch von Standard-Robot-Framework-Libraries zusätzlich bereitgestellt.

Da die Namen der Keywords selbsterklärend sind, soll hier nur eines genauer betrachtet werden: »Click Menu File«, das im Object Finder definiert wird (Abbildung 3). Im Alyvix-Wizard definiert der Admin zuerst zwei Elemente:

Abbildung 3: Das Keyword <code>Click Menu File</code> wird im Object Finder gebaut.

Abbildung 3: Das Keyword »Click Menu File« wird im Object Finder gebaut.

  • Eines über den Image Finder, das das Icon oben links im Notepad finden soll.
  • Eines über den Text Finder, das den Text »File« finden soll.

Im Object Finder definiert der Admin anschließend ein zusammengesetztes Objekt, das zuerst das Icon sucht und dann einen kleinen Bereich unterhalb des Icons unter die Lupe nimmt, um den Text »File« zu finden und mit der Maus darauf zu klicken. Dieser Handlungsablauf wird »Click Menu File« genannt und an entsprechender Stelle in die Liste der Keywords eingefügt.

Sind alle Keywords definiert, ist der finale Testcase bereit, um ausgeführt zu werden. Im Hintergrund erstellt Alyvix ein Python-Kommando, damit der Anwender den Testcase über die Kommandozeile aufrufen kann und ein Nagios/Icinga-konformer Output geliefert wird (Exitcode/Text/Leistungswerte). Zusätzlich wird eine HTML-Seite erstellt, die die gesammelten Logdaten enthält (Abbildung 4). Ist ein Fehler aufgetreten, stellt die Seite die fehlgeschlagene Aktion in einer Gif-Animation dar. Dadurch lässt sich die Fehlerquelle schnell erkennen.

Abbildung 4: Die HTML-Seite mit dem Log des absolvierten Testszenarios.

Abbildung 4: Die HTML-Seite mit dem Log des absolvierten Testszenarios.

Fazit

Alyvix erlaubt die Messung von Verfügbarkeit und Reaktionszeit aller geschäftskritischen Anwendungen, unabhängig davon, ob diese eine Internetverbindung benutzen oder nicht, und unabhängig davon, ob es für sie APIs gibt. Das können Desktop-, Web- und emulierte Mobilanwendungen sein, Office-Anwendungen genauso wie beispielsweise SAP. Es ist möglich, an allen Standorten die Anwendungsperformance zu verfolgen, aufzuzeichnen und zu vergleichen.

Auch lassen sich so Anwendungen testen, auf die Anwender via Citrix oder RD Webaccess zugreifen. Bereitet man die Messwerte in Zeitreihengrafiken auf, werden außerdem Ausfallzeiten und Lastspitzen deutlich sichtbar. Damit lässt sich die von den Kunden und Mitarbeitern subjektiv erfahrene Servicequalität objektiv bewerten.

Schließlich ergibt sich noch eine alternative Einsatzmöglichkeit der eigentlich für das Monitoring entwickelten Engine: die Automatisierung sich wiederholender Tasks. Dazu ein Beispiel: Ein Unternehmen verwendet ein Kiosksystem, um Mitarbeiter-Informationen auf mehreren Monitoren, verteilt im ganzen Betrieb, anzuzeigen. Nach jedem Reboot des Betriebssystems müssen auf diesen Kiosk-Rechnern jedoch die Login-Daten neu eingegeben werden.

Sechs dieser Kioske starten jede Nacht neu, entsprechend ist ein Mitarbeiter jeden Morgen damit beschäftigt, sechsmal die Authentifizierungsdaten einzugeben. Obwohl jede einzelne Eingabe nur wenige Minuten dauert, summiert sich der Zeitbedarf innerhalb eines Jahres doch auf mehr als eine ganze Arbeitswoche! Um das zu vermeiden, wurde ein Alyvix-Testcase eingerichtet, der nach jedem Neustart automatisch die nötigen Daten eingibt – ohne dass ein Mitarbeiter auch nur einen Finger rühren muss.

Solche einfachen, langweiligen, sich ständig wiederholenden und trotzdem sehr zeitraubenden Aufgaben lassen sich aber auch ganz einfach auf Alyvix abwälzen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben