That’s my secret cap – I’m always monitoring

Michael Sebel

featured-imgWir haben alle Register gezogen, dass bei uns selten bis nie grössere Ausfälle von Hard- oder Software geschehen sollten. Doch 100% Uptime sind ein Mythos – Es ist immer was, wenn auch nicht oft. Und wenn etwas ist, möchten wir schnellstmöglich informiert werden und reagieren können. Im besten Fall sollten wir sogar reagieren, bevor es zu spät ist. Darum überwachen wir unsere Systeme mit drei unterschiedlichen Methoden.

Wir machen eigentlich nichts aussergewöhnliches, was das Monitoring anbelangt – Ich vermute, dass die meisten IT Firmen auf ähnlichem oder höherem Niveau Monitoren. Wir haben durch den skalierbaren Cluster allerdings für viele Kunden nur wenige Systeme im Einsatz, weswegen wir hier auch im Monitoring etwas weniger investieren müssen.

Klassische Uptime Checks

Wir machen verschiedene Arten von Uptime-Checks. Die Websites unserer Kunden werden mit Uptime-Robot im 5-Minuten-Takt überprüft. Es gibt eine kleine Fehlerkontrolle im Check, damit ein Problem selbst dann erkannt wird, wenn der Webserver keines meldet. Weiterhin haben wir auf jedem System einen Check-Endpoint, der alle Services und deren Status prüft und danach ein „OK“ oder „nicht OK“ meldet. Diese Checks laufen auf den Webservern ca. drei- oder viermal pro Minute. Auf den Loadbalancern haben wir einen etwas komplexeren Check, der nicht nur die Services der Loadbalancer prüft, sondern auch die gesamten Checks eines aktiven Webservers prüft. Diese Checks werden von Monitis etwa fünf mal pro Minute und vom DNS Failover Check ca. zehn mal pro Minute aufgerufen. In der Milchmädchenrechnung als etwa alle drei Sekunden – Da merkt man recht schnell, wenn etwas nicht in Ordnung ist.

Für Kunden, die sich nicht für unser Hosting entschieden haben (oder es aus politischen Gründen nicht durften), haben wir in der Regel Managed Server im Einsatz, welche bereits durch die Hosting-Partner bestens überwacht werden. In diesem Fällen haben wir nur einen Uptime-Check auf die Website selbst aktiv, dieser prüft aber mindestens drei mal pro Minute. Alle unsere Uptime Checks bei Monitis überwachen die jeweiligen Systeme von verschiedenen Standorten in ganz Europa, vor allem aus nächster Umgebung (Schweiz, Deutschland, Italien, Frankreich, Österreich).

Hardware-Überwachung

Auf unserem Cluster läuft auch für jeden Server ein Hardware-Monitor, der überwacht wie es um CPU, RAM, Harddisk, Netzwerk In- und Output steht. Diese Checks laufen ständig im Hintergrund und alarmieren uns bereits bevor es zu spät ist. Dadurch gibt es selten auch Alarme die keine sind – aber lieber so als Umgekehrt. Steigt der CPU oder RAM Bedarf langsam an, können wir weitere Webserver dazuschalten, damit die Systeme nicht überlastet werden. Gerade die Prozessorleistung können wir nahezu beliebig in die Breite skalieren.

Doch auch die Software ist nicht unfehlbar

Im Gegenteil: Die Software, in unserem Falle WordPress mit vielen Erweiterungen, ist alles andere als unfehlbar. Bisher haben wir zwar nur einmal einen gröberen Fehler auf die Live-Systeme ausgerollt, aber sowas kann passieren. Viel gefährlicher sind aber schleichende Probleme, die ganz langsam den Harddisk- oder Arbeitsspeicher zum Znacht essen. Oder Prozesse, die zu lange dauern oder sich gar aufhängen. Wir müssen also auch Live-Daten aus unserer Software bekommen um zu beurteilen, wo ein solches Problem liegen könnte.

Dazu haben wir einen eigenen Statistik-Server auf Basis von Graphite, Carbon, StatsD, CollectD… und was man halt so braucht. Das Setup erlaubt uns, an beliebigen Stellen im Code Daten aufzuzeichen ohne die Software dabei zu verlangsamen – Selbst wenn man so gut wie jede abgelaufene Zeile Code aufzeichnet. Hier haben wir zwei Vorgehensweisen:

  1. Einige Dinge weiss man von Anfang an, dass man Sie aufzeichnen könnte und dass deren Daten irgendwo interessant sein könnten. Requests pro Sekunde, welche Websites haben wie viel Requests? Wie ist die Verteilung von Requests: Cached-, Uncached-, Backend-, Frontend-Requests oder spezifisch lange Requests, kurze Requests. Auch die Software-Firewall können wir so fein granuliert Monitoren. Nicht nur, wie viele Requests pro Tag legitim blockiert werden (Hint: Etwa 100’000), sondern auch aus welchen Gründen. Mit diesen Daten können wir die Software-Firewall, welche uns schon so manche schlaflose Nacht ersparte ständig den neusten Entwicklungen anpassen. Weiterhin kann man auch ganz spezifische Programm-Abläufe tracken, von denen man weiss: Hier müssen wir vorsichtig sein. Neue Features in unserem Framework können wir so nach dem Go-Live überwachen und mögliche Performance-Flaschenhälse entdecken.
  2. Einige Dinge weiss man erst, wenn man ein Problem hat. In diesen Situationen geben all‘ unsere Daten vielleicht erste Hinweise darauf, was oder wo etwas schief laufen könnte. Ein Anstieg an lange dauernden Requests ist ein Anzeichen für ein aufkommendes Problem. Wenn wir hier zum Beispiel gleichzeitig einen Anstieg bei einer Kunden-Website haben, wissen wir immerhin, wo wir kurzfristig ein Code-Logging einbauen müssen um genaueres rauszufinden. Manchmal muss man sich hier herantasten, bis man das Problem findet und oft ist bei der Ansicht vom Code schon klar, wo ein Performance-Leck sein könnte.

Zusammengefasst

Mit Uptime-, Hardware- und Software-Monitoring stellen wir nicht nur sicher, dass wir in der Nacht (oder am Tag) aufwachen, wenn die Dinge schief gehen. Viele Informationen die wir über unsere Systeme sammeln geben uns oft schon Hinweise auf Probleme, die wir dann lösen können bevor es jemand merkt. Und wenn nicht, haben wir alle nötigen Mittel um dem Geist in der Maschine nachzugehen. Who you gonna call?