iX 9/2017
S. 108
Wissen
Website-Monitoring
Aufmacherbild

Site Reliability Engineering präzisiert die Messung der Servicequalität

Genauer hinschauen

Site Reliability Engineering ist ein Ansatz von Google, über die Definition von Service Level Indicators (SLI), Service Level Objectives (SLO) und Fehlerbudgets die Servicequalität besser messbar und steuerbar zu machen. Das funktioniert mit Websites ebenso wie mit Datenbanken oder Speicherdiensten.

Eine möglichst hohe Verfügbarkeit ist bei Diensten, die für ein Unternehmen wichtig sind, unabdingbar. Ihre Messung ist allerdings komplexer als die Aussage, wie viele Minuten pro Jahr eine Anwendung auf Anfragen reagiert. Denn bei global verteilten Anwendungen kann es sein, dass die Nutzer in den USA fröhlich einkaufen, während die Nutzer in den Niederlanden den Warenkorb nicht öffnen können und in Indien jeder Mausklick eine sekundenlange Wartezeit nach sich zieht. Oder die Anwendung ist zwar verfügbar, liefert aber bei jeder zehnten Anfrage eine Fehlermeldung statt des erwarteten Ergebnisses. Andererseits macht es aus Nutzersicht keinen Unterschied, ob eine Website zu 99,999 Prozent oder nur zu 99,9 Prozent verfügbar ist – sie funktioniert halt „fast immer“.

Ziel eines Monitorings sollte letztlich sein, zu erfahren, zu welchen Zeiten die Nutzer eine angenehme, schnelle und richtige Antwort auf ihre Anfragen erhalten – wann die Anwendung also benutzbar ist und wie schnell sie dabei ist. Zudem sollte das Monitoring eine Prognose erlauben, ob in Zukunft eine Verschlechterung der Servicequalität zu erwarten ist. Diese hehren Ziele sind mit einem reinen Blackbox-Ansatz nicht zu erreichen, der das Verhalten einer Anwendung von außen untersucht, da hier nur die Antworten der Anwendung verarbeitet werden, ohne in die Betriebsumgebung hineinzusehen. Whitebox-Monitoring wertet die Logfiles und Sensoren auf den Servern aus, um Probleme frühzeitig zu erkennen. Die Kombination beider Ansätze erlaubt einen umfassenden Einblick in die Anwendung.

So wie es wenig effizient ist, Fortschrittsbalken zu hypnotisieren, verspricht auch die Überwachung von Anwendungen nur dann Erfolg, wenn die Analyse automatisiert ist. Möglichst wenige Arbeitsschritte zur Behebung von Problemen dürfen Handarbeit erfordern und das Monitoring sollte nur dann einen Menschen benachrichtigen, wenn das Problem unbekannt und die Lösung noch nicht automatisiert ist. Ziel ist es, alle mehr als einmal auftretenden Fehlerzustände entweder durch Änderung der Anwendung oder durch Automatisierung der Reaktion zu beantworten.

Site Reliability Engineering

Site Reliability Engineering, kurz SRE, nennt Google einen neuen Ansatz für den Betrieb und die Überwachung seiner Dienste und Server. Im Zentrum steht dabei eine neue Art, Verfügbarkeit zu definieren und zu messen.

Traditionell bezeichnet Verfügbarkeit den Prozentsatz der Zeit, in der eine Anwendung funktionsgemäß läuft. Die Messung erfolgt über einen externen Dienst, der eine Funktion der Anwendung aufruft und die Verfügbarkeit bestätigt, wenn die Antwort der Erwartung entspricht, oder den Ausfall feststellt, wenn die Antwort ausbleibt oder fehlerhaft ist. Eine solche Blackbox-Messung kann eine sehr tief greifende Prüfung beinhalten, die die Funktion aller Teile der Anwendung testet, oder lediglich auf die Schnelle prüfen, ob sich zu dem zuständigen Port auf dem Server eine Verbindung aufbauen lässt. Die Praxis liegt meist zwischen diesen beiden Extremen. Auch ist bei der Beauftragung externer Dienstleister nur selten vertraglich geregelt, was genau als verfügbar zu werten ist, auch wenn das vereinbarte Service Level Agreement Ziele vorgibt und deren Nichterreichung mit Strafen versieht.

Anteil der HTTP-Antworten pro Zeiteinheit in einer Grafik. Rot sind die Requests mit einer Fehlermeldung (20X/30X) als Antwort, grün die 40X- und ocker die 50X-Antworten. Die y-Achse ist logarithmisch, damit die sehr geringen Zahlen der Fehlermeldungen besser sichtbar sind. Aus diesen Metriken lassen sich Statistiken über beliebige Zeiteinheiten erstellen und als Grundlage für die Bewertung der Verfügbarkeit nutzen (Abb. 1).

Bei SRE geht das Monitoring einen anderen Weg. Grundannahme ist, dass die Anwendung zu nahezu 100 Prozent läuft und vollständige Ausfälle so selten sind, dass sie sowieso als Notfall betrachtet werden und nicht bloß als vorübergehende Störung. Unabhängig davon, ob die Anwendung in Dutzenden Rechenzentren global verteilt läuft oder nur auf einem Server: Gemessen wird bei SRE an erster Stelle die Zahl der Anfragen, die eine gültige Antwort erhalten. Bei einem Webserver sind dies die HTTP-Requests, die als Antwort 200 oder 304 erhalten. Alle Antworten mit 40X und 50X und alle Requests, die keine Antwort innerhalb einer festgelegten Zeitspanne erhalten, sind Fehler.

Dazu ist es notwendig, alle Requests zu erfassen und samt Antwortcode zu protokollieren. Bei einer Website kann das ein vorgelagerter Proxy als Messsystem erledigen. Die Statistik über dessen Logfiles belastet weder die Anwendung noch erzeugt sie einen Overhead, auch müssen die Programmierer der Anwendung keine speziellen Funktionen zur Überwachung der Anwendung implementieren und können sich mehr auf Kundennutzen und Qualität des Codes konzentrieren. Ein Proxy ist eine vergleichsweise einfache Komponente, deren Verfügbarkeit sehr leicht auf fast 100 Prozent zu bringen ist. Redundanzen und Lastverteilung machen weniger Aufwand als bei einer komplexen Anwendung.