Torsten Hellwig - Februar 2015
Werkzeuge zum Monitoring von Software-as-a-Service (SaaS) Anwendungen ermöglichen
DevOps Teams ihre Anwendungen während des Betriebs zu überwachen und in dem gewünschten
Zustand zu halten. Einige davon verwenden ähnliche Ansätze bei der Überwachung von
SaaS-basierten Anwendungen, andere decken spezielle Nischen im Monitoring-Markt ab.
Dieser Artikel bietet einen Überblick über die von uns kürzlich evaluierten oder derzeit
im Einsatz befindlichen Tools.
Überblick
New Relic
New Relic bietet Lösungen an, um Anwendungen und Customer Experience zu überwachen
und um Monitoring-Daten zu analysieren.
Für das Application-Monitoring kann man aus einer breiten Palette von Agenten wählen.
Diese werden heruntergeladen, installiert und für spezifische Technologien der Applikation
konfiguriert. Es gibt zum Beispiel Agenten für Java, .NET, PHP, Ruby, Python usw.
Für jede mit einem Agenten instrumentierte Komponente erhalten Sie individuelle Charts
und Einblicke.
Seit kurzem wird auch ein synthetisches Monitoring-Produkt angeboten, welches mithilfe
einfacher HTTP Pings die Verfügbarkeit von Anwendungen überwacht. Optional kann auch
das Benutzerverhalten mithilfe von Scripts mit Klick-Pfaden durch die Anwendung simuliert
werden. Das Real-User-Monitoring erfordert die Injektion eines JavaScript-Tags in
jede Webseite der Anwendung. Dies ermöglicht tiefere Einblicke und Informationen über
die Web-Performance als mit Google Analytics und sollte daher zu Ihrer Web-App hinzugefügt
werden. Für das Mobile-Monitoring kann eine Library zur Web-App hinzugefügt werden.
Damit erhalten Sie zusätzliche Möglichkeiten zur Instrumentierung der App auf Ebene
des Source Codes.
Für die bessere Analyse der Monitoring-Daten wurde eigens das Produkt Insights
geschaffen, das Datenabfragen zu bestehenden Monitoring-Daten und Daten von Drittanbietern
ermöglicht. Dies ist vor allem bei der Berechnung von Conversion-Rates oder zur Geo-Analyse
hilfreich.
Das Beste an New Relic ist, dass die Light-Version des Produktes kostenlos angeboten
wird. Somit erhalten Sie kostenloses "light" Application-Monitoring, Mobile-Monitoring,
Browser-Monitoring und synthetisches Monitoring mit 24h Datenhaltung und -abfrage.
Bei geringem Budget ist dies eine gute Wahl.
Warum sollten Sie New Relic in Betracht ziehen?
Freemium Pricing – Application, Browser- und synthetisches Monitoring
Ruby und Python Support
Scripting Ansatz für synthetisches Monitoring
Einzelne Server oder unabhängige (d.h. nicht verbundene) Server
ruxit ist der neueste und stärkste Mitbewerber von New Relic, der erst kürzlich
in den Markt für Application-Monitoring mit einem völlig neuen und innovativen Ansatz
eingetreten ist. Mit Hilfe einer eigens entwickelten künstlichen Intelligenz wurde
ein All-in-One Angebot entwickelt, welches auf moderne DevOps und eBiz Umgebungen
ausgerichtet ist. Auch das User-Interface unterscheidet sich stark von herkömmlichen
Lösungen, da ruxit ein auf Übersichtsgrafiken basiertes Touch-First Dashboard anbietet.
ruxit's All-In-One Ansatz kombiniert Application-Monitoring mit User-Experience-,
Netzwerk-, Server-, Cloud- und Infrastruktur-Monitoring in einem einzigen Angebot.
Bald wird dieses Angebot mit synthetischen Monitoring komplettiert. Das klingt nach
einer schwergewichtigen Lösung, ist es jedoch nicht.
Das Deployment ist viel einfacher als mit z.B. New Relic, da nur ein einziger Agent
auf dem Host installiert werden muss. Davon ausgehend werden voll-automatisch alle
zu überwachenden Komponenten am Host erkannt und instrumentiert. Viele andere Produkte
hingegen erfordern verschiedene Arten von Agenten. Ein weiterer Vorteil ist, dass
nicht nur alle Abhängigkeiten des Environments über dem gesamten Stack erkannt und
visualisiert werden können, sondern auch das so genannte „Smartscape“ für Analysen
verwendet wird. Dies ist eine der zentralen Funktionen von ruxit.
Quelle: https://ruxit.com
Typischerweise sind SaaS-Environments sehr dynamisch in ihrem Verhalten und in
ihrer Größe. Es werden Instanzen bei Bedarf hochgefahren bzw. freigegeben; es gibt
Failover und Load-Balancing-Mechanismen usw. Viele Komponenten interagieren miteinander
und bilden Abhängigkeiten untereinander. Sobald mehr als ein einziger Apache im Environment
läuft, ist es schwierig die Auswirkungen von Problemen in der Applikation auf die
End-User zu identifizieren bzw. zu bestimmen. An diesem Punkt kommt Smartscape zum
Einsatz. Es zeigt in Echtzeit eine Karte aller Zusammenhänge zwischen Tiers und Stacks:
Es zeigt, wie diese miteinander interagieren und wie End-User bei Deployments oder
beim Herunterfahren von Instanz betroffen sind.
Für mich steht der Kunde immer im Mittelpunkt. Zum Beispiel rückt langsame IO bei
einer neuen Amazon Instanz für mich erst dann in das Blickfeld, wenn End-User davon
betroffen sind bzw. werden. Das ist das, was ich an ruxit mag. Es zeigt mir immer
an, was tatsächlich Auswirkungen auf meine Kunden hat. Dies geschieht mithilfe der
Analyse der zu erwartenden Metrikwerte und dem wirksamen Einsatz von Smartscape, das
kausale Zusammenhänge automatisch versteht. Somit erkennt ruxit ob eine schlechte
IO Performance Auswirkungen auf End-User hat oder nicht.
Wenn es ein Problem gibt – egal ob langsame IO, Node.js, AWS, Web Server, third-party
Services wie Facebook, Java oder JavaScript Exceptions – ruxit zeigt Ihnen die Ursache
bis hin auf Methoden-Ebene im Source Code bzw. Datenbank-Statements bei SQL/NoSQL
Datenbanken. Es kann auch sehr nützlich sein, die Entwicklung eines Problems von Anfang
an in einem Replay zu sehen und dessen Ausbreitung zu analysieren.
Warum sollten Sie ruxit in Betracht ziehen?
All-in-One Monitoring anstatt mehrere Tools einsetzen zu müssen – Real-User-, Application-,
Cloud-, Server-, Netzwerk-, und Infrastruktur-Monitoring
Einfacher Einsatz und automatisches Erkennen von Zusammenhängen und Abhängigkeiten
KI Ansatz zur Ursachen-Analyse und weniger Alerts (ruxit nennt es „no-alerts“ Technologie)
WebUI, Java, Node.js und .NET basierter App-Support
SumoLogic ist ein "Log-Analyzer as a Service". Es wird ein Collector auf den Hosts
mit den Log-Dateien installiert, welcher diese für die Analyse an SumoLogic sendet.
Es werden bereits fertige Parser für die Analyse mitgeliefert, die jedoch noch individuell
konfiguriert werden können. Der Collector komprimiert die lokalen Log-Dateien und
transferiert diese sicher in die Cloud. Neben der Komprimierung besteht auch die Möglichkeit,
die Menge an zu übertragenden Log-Daten zu reduzieren, jedoch ist es für ein optimales
Analyseergebnis besser, alle Log-Einträge zu transferieren.
Es gibt eine breite Palette an Adaptoren für SumoLogic, so ist es z.B. nicht notwendig
einen Collector für AWS zu installieren, wenn man AWS CloudTrail verwendet. Die Log-Einträge
landen mit einer kurzen Verzögerung von nur wenigen Minuten im Cloud-Storage von SumoLogic.
SumoLogic's Log-Analyse ist in diesem Fall der interessante Teil. Wenn Sie gerade
mit einem Log-Analyse-Produkt zu arbeiten beginnen wollen, bietet die Auto-Summarize
Funktion großen Mehrwert. Sie hilft Ihnen dabei, Log-Dateien aus verschiedene Quellen
von mehreren Hosts und Systemen in einer einzigen Ansicht zu konsolidieren und somit
zu sehen, wie Ereignisse korrelieren. Die Query Language hilft Ihnen beim Finden von
Einträgen und macht die Suche auch wiederholbar. Eine zusätzliche Log-Reduce Funktion
verdichtet ähnliche Log-Einträge, sodass Sie kürzere Berichte und somit einen besseren
Überblick haben. Mithilfe von Anomaly-Detection können Sie den täglichen Überprüfungsprozess
zusätzlich unterstützen.
Quelle: https://www.sumologic.com
Wenn Sie anspruchsvollere Anwendungsfälle für Ihre Log-Analyse abdecken wollen,
kann Auto-Summarize nicht mehr ausreichend sein. Sie können aber solche anspruchsvolleren
Fälle durch Verwendung der REST- oder Java API-Schnittstellen abdecken. Diese ermöglichen
ein hohes Maß an Automatisierung. Je nach Datenmenge und Art der Abfrage liefert der
Analyselauf rasch Ergebnisse, im Bereich von wenigen Sekunden bis hin zu einer Minute.
Warum sollten Sie SumLogic in Betracht ziehen?
Review von konsolidierten und korrelierten Log-Dateien auf Anomalien wie Abstürze
oder fehlerhaftes App-Verhalten
Für nicht technische Reviews wie die Analyse der AWS CloudTrail Audit-Logs, die für
SaaS-Umgebungen wichtig ist
Als Ergänzung zur Überwachung mit ruxit oder New Relic, da Log-Analyse auch Technologien
abdeckt, die unter Umständen nicht von allen Agenten gehandhabt werden können, wie
z.B. Windows Events, syslog, produktspezifische Quellen, Load-Balancer, usw.
Schneller Einstieg in Log-Analyse
Die Möglichkeit, basierend auf den von SumoLogic gesammelten Daten mit der REST-Schnittstelle
eigene Analysen durchzuführen.
ElasticSearch ist eine Mehrzweck-Volltext-Suchmaschine, die oft für Log-Analysen
in Kombination mit Tools für Log-Retrieval und Pre-Processing verwendet wird. In üblichen
Implementierungen werden Logstash zum Abfragen und für das Pre-Processing, Redis für
das Caching/Puffern und Kibana für die Visualisierung verwendet. Allerdings kann es
auch für andere Dinge wie z.B. Web-Shop-Suchfunktionen und Datenanalyse eingesetzt
werden. Die Integration mit anderen Data Providers kann via Logstash erreicht werden
- ein Tool zum Sammeln, Parsen und Weiterleiten von Logs. Es gibt eine große Anzahl
von Built-In und Add-On Integrationen mit den häufigsten verwendeten Formaten. Darüber
hinaus können auch selbst Collection-Rules definiert werden.
ElasticSearch ist ein Tool und keine gehostete Lösung, deshalb muss hier die traditionelle
Hardware-Bereitstellung und Implementierungsarbeit eingerechnet werden. Trotzdem läuft
es sehr gut in Cloud-Umgebungen und ist speziell für hoch verfügbare Deployments entworfen
worden. Es gibt auch Anbieter für gehostete ElasticSearch-Umgebungen.
Quelle: http://www.elasticsearch.org
Im Normalfall wird ElasticSearch mit Text und entsprechenden JSON Metadaten gefüllt,
um später mithilfe des REST-Interfaces Suchvorgänge durchführen zu können. Damit ist
ElasticSearch optimal dafür geeignet, in spezifische DevOps Workflows integriert zu
werden.
Techniken wie z.B. Sharding und parallele Query-Execution helfen dabei, Antwortzeiten
auch bei großen Datenmengen gering zu halten. ElasticSearch ist ein mächtiges Tool,
für das man durchaus etwas Einarbeitungszeit einplanen muss.
Warum sollten Sie ElasticSearch in Betracht ziehen?
Wenn Sie einen "eigenen" Stil der Datenanalyse bevorzugen oder spezielle Anwendungsfälle
haben
Wenn mehrere Log-Dateien einbezogen werden
Wenn Sie eine eigene Visualisierung anstreben
Niedrige Kosten (wenn die Hardware bereits vorhanden ist)
OpsGenie
OpsGenie bietet Alert- und Notification-Management as a Service und beinhaltet
Features wie On-Call Scheduling und Escalation. Auch wenn es günstiger als bekanntere
Tools wie z.B. PagerDuty ist, braucht es den Vergleich nicht zu scheuen.
Eine einfache und flexible Mail-Integration als auch eine RESTful-API ermöglichen
es fast jedem Tool, OpsGenie zu integrieren. Auch Newcomer wie ruxit können Notifications
mithilfe des Tools bereitstellen, auch wenn noch kein offizielles Integrationsmodul
wie z.B. für New Relic, Nagios oder Pingdom angeboten wird.
OpsGenie hat ein einfaches User-Interface, welches die Erstellung von Schedules
und Escalation-Policies ermöglicht. Incidents können abhängig von der Quelle, Inhalt
oder Tags zu mobilen Geräten mit installierter OpsGenie App gesendet werden. Es besteht
auch die Möglichkeit, Incidents via E-Mail, SMS oder automatischer Anrufe zu erhalten.
DevOps Teams schätzen OpsGenie für die hohe Flexibilität bei Alerting-Workflows,
da die Abhängigkeit von Network-Operations-Teams reduziert wird. Im einfachen User-Interface
können komplexe Alerting-Regeln definiert werden. Sie können z.B. mehrere eingehende
Notifications in einem einzigen sinnvollen und aussagekräftigen Alert zusammengefasst
werden. Cloud Natives schätzen es, Verzögerungszeiten für automatische Failovers festlegen
zu können, bevor sie über die Notwendigkeit einer möglichen Eskalation entscheiden.
Sie können regelmäßige Heartbeat-Messages von Ihrem Monitoring-Tool zu OpsGenie
senden lassen, um festzustellen, ob Ihr Monitoring-Tool zu jeder Zeit online ist und
zudem Alerts senden kann.
Es können Alerts zu HipChat oder Slack weitergeleitet und somit das gemeinsame
Arbeiten an Incidents ermöglicht werden. Das integrierte Reporting bietet einige grundlegende
Metriken wie "Mean Time to Resolve" sowie einige grobe Trends. Es kann zudem die Anzahl
der erhaltenen Alerts limitiert werden.
Warum sollten Sie OpsGenie in Betracht ziehen?
Kleine DevOps/NoOps Teams mit hohem Automatisierungsgrad
Komplexe Alerting-Workflows: Es wird zum Beispiel vor der Einleitung einer Eskalation
überprüft, ob die Failover-Automatisierung wie erwartet funktioniert
PagerDuty ist ein Alarm Aggregation und Dispatching Service. Es können alle Ihre
Monitoring-Systeme, APM Lösungen, API Management und Kunden-Support-Systeme in ein
System integriert werden. Derzeit werden bereits fertige Integrationen für mehr als
100 verschiedene Systeme angeboten. Über E-Mail-Gateway oder der RESTful-API können
sowohl Monitoring Tools wie New Relic oder ruxit, Log-Analyse Tools wie ElasticSearch
oder SumoLogic als auch proprietäre "hauseigene" Tools integriert werden, sofern diese
E-Mails oder REST Calls versenden können.
Mit PagerDuty können Escalation-Policies definiert und Incidents an die PagerDuty
App registrierter Mobilgeräte geschickt werden. Darüber hinaus werden verschiedene
Telefonanbieter für automatisierte Telefonbenachrichtigung, SMS-Service-Provider aber
auch E-Mail-Anbieter unterstützt. Die Spezifikation von Eskalationen ist sehr einfach
zu bewerkstelligen und solange kein Workflow für die Eskalation nötig ist, wird fast
alles abgedeckt. Es gibt Teams, Schedules, Escalation-Delays und die Möglichkeit,
Escalation-Policies zu durchlaufen. PagerDuty unterstützt auch ein Fallback um "übersehene"
Alerts abzudecken und für diese einen Auto-Escalation Mechanismus in Gang zu setzen.
Um effektive Teamarbeit zu ermöglichen werden viele stark verbreitete Collaboration-Tools
wie HipChat, Slack, Flowdock oder CampfireWork integriert. Automatisierte Incident-Progress-Updates
für andere Teams helfen dabei, unnötige Emails zu eliminieren.
Das Setup von PagerDuty ist sehr einfach. Für die Definition von Workflows und
Escalations braucht man kein tiefes technisches Verständnis. Das Incident-Management
und die Konfiguration erfolgen mithilfe einer Web- und Mobile-App. Sie können also
auf Alerts direkt via Handy reagieren.
Zu guter Letzt gibt es ein Analyse-Modul, mit welchem Sie Statistiken und Berichte
bezüglich der Incident-Frequenz, MTTR und ähnliche Metriken bekommen. Dadurch kann
man die Support-Prozesse und das Incident-Management optimieren.
Warum sollten Sie PagerDuty in Betracht ziehen?
Wenn Ihre Anforderungen an den Escalation-Workflow oder die Policy nicht zu komplex
sind.
Wenn Sie eine einfache, aber leistungsstarke Möglichkeit brauchen, um Alerts von verschiedenen
Monitoring-Systemen zu vereinigen.
Wenn Ihre Support oder Operations-Teams auf der ganzen Welt verteilt sind und Sie
zuverlässig über alle Incidents per Telefon, SMS oder E-Mail benachrichtigt werden
wollen.
Wenn Sie ein einfach zu bedienendes Incident-Management-System zu Ihren bestehenden
Monitoring-Tools hinzufügen möchten.
Wenn Sie einen Analyse- und High-Level-Überblick über die Funktionalität des Systems
möchten.
Wenn Sie Reporting über die Handhabung von Incidents haben möchten, um Bearbeitungszeit
zu verringern.
Amazon CloudWatch ist ein Monitoring-Service für AWS-Ressourcen und Applikationen
die in der Amazon Cloud gehostet werden.
Ein häufiger Anwendungsfall für CloudWatch ist es, Services in einer effizienten
Weise am Laufen zu halten. Dafür werden Tracking-Metriken für AWS-Ressourcen wie EC2-Instanzen,
Elastic Load-Balancers, EBS-Volumes, relationale Datenbank-Instanzen und mehr gesammelt.
Zusätzlich ermöglicht es CloudWatch, Alarme einzustellen und automatisierte Aktionen
wie das Hochfahren oder die Freigabe von EC2-Instanzen innerhalb einer Auto-Scaling
Gruppe.
CloudWatch bietet auch die individuelle Anpassung und Darstellung von Metriken
an, um einen besseren Einblick in die Funktionalität Ihrer Apps und Systeme zu gewinnen.
Viele Drittanbieter nutzen die CloudWatch-API, um eigene Lösungen mit Mehrwert
für Amazon-Kunden anzubieten. Die Zahl der Integrationen wächst und verteilt sich
über verschiedene Bereiche. Durchaus üblich sind Integrationen von Notification Services
wie OpsGenie oder PagerDuty, bei denen CloudWatch-Alerts auf eine neue Ebene gehoben
werden.
Auch Monitoring Tools haben häufig eine Anbindung an CloudWatch. Deren Anbieter
weisen unterschiedliche Marktpositionen auf, wie z.B. der Marktführer im Bereich SaaS-APM
New Relic, dem Newcomer ruxit bis hin zu Unternehmen, die AWS-Monitoring als Kerngeschäft
betreiben, wie z.B. CopperEgg oder Stackdriver.
Monitoring Tools ergänzen die Infrastruktur-Metriken aus der CloudWatch-API um
typische Application-Performance Daten. Mithilfe von Agenten-Technologie sind diese
Tools in der Lage, Einblicke in Systemprozesse und Betriebssystem-Metriken zu bekommen.
Solche Metriken sind oft von entscheidender Bedeutung bei Cloud-basierten Deployments
wie z.B. die CPU Steal Time.
CloudWatch stellt verschiedene Infrastruktur-Metriken für Monitoring Lösungen wie
ruxit zur Verfügung. Diese können damit Abhängigkeiten zwischen Applikationen, Services
und Infrastrukturkomponenten erkennen und Daten entsprechend kombinieren, um eine
intelligente Ursachenanalyse bei Problemen durchführen zu können. Auch können die
Auswirkungen auf End-User visualisiert werden. Kombinierte Ursachen und Wirkungsanalysen
sind im Gegensatz dazu in CloudWatch nicht möglich, da hier nur bei Überschreitung
von definierten Metrik-Grenzwerten alarmiert wird.
In CloudWatch kann auf Metrik-Werte von bis zu 2 Wochen in der Vergangenheit zugegriffen
werden. Die meisten Monitoring-Tools halten ihre Daten über eine längere Zeitspanne,
was für manche Kunden wertvoll ist.
Warum sollten Sie Amazon CloudWatch in Betracht ziehen?
Wenn Infrastruktur Metriken für AWS-Services ausreichend sind.
Wenn zweiwöchige Datenhaltung von Metriken ausreichend ist.
Wenn alle Applikationen in der Amazon Cloud laufen und kein hybrider Ansatz notwendig
bzw. gewollt ist.
Pingdom ist ein Tool für einfache Verfügbarkeits-Checks, welches sich im Wesentlichen
auf die Frage konzentriert: Ist meine Seite erreichbar und wie ist ihre Performance?
Preistechnisch gibt es sowohl Angebote für "kleinere" Blogger bis hin zu großen Enterprises
und stellt somit für viele Unternehmen eine gute Lösung dar. PagerDuty bietet sowohl
synthetisches als auch Real-User-Monitoring an.
Quelle: https://www.pingdom.com
Pingdom bietet eine Vielzahl an Möglichkeiten an, um ein Auge auf die Website zu
werfen. Ein Uptime-Check ist die beliebteste Methode für das Monitoring. Dabei werden
gezielt und geplant verschiedene HTTP(S) GET Requests an bestimmte URLs gesendet.
Wird ein Ausfall von einem ihrer nordamerikanischen oder europäischen Standorte erkannt,
wird ein Alarm ausgelöst. Mithilfe einer Skriptsprache können Entwickler nicht nur
einfache Pings durchführen, sondern gezielt ganze Transaktionen auf der Website nachbilden
und prüfen. Es können neben Pings auch TCP und UDP Verbindungen, DNS und E-Mail-Server
Checks durchgeführt werden. Zu guter Letzt bietet Pingdom auch ein JavaScript-Tag
an, um Real-User-Monitoring zu ermöglichen.
Das User-Interface wirkt sehr aufgeräumt und ist mit moderneren Monitoring-Lösungen
wie z.B. ruxit vergleichbar. Es verfügt über ein Echtzeit-Dashboard für Incidents,
Uptime und Transaction-Checks und bietet damit Einblicke für Ops. Zudem ermöglicht
Pingdom, Berichte an Kollegen und Partner zu verschicken, Benachrichtigungen per SMS,
Twitter oder E-Mail zu versenden sowie direkt Push-Benachrichtigungen an die entsprechende
Android oder iOS-App zu senden.
Über eine RESTful-API wird Zugriff auf die Daten in Pingdom ermöglicht. Es gibt
auch vorgefertigte Wordpress-Plugins. Aus einer Vielzahl von Monitoring-Lösungen ist
Pingdom ein günstiger und effektiver Weg, um sicherzustellen, dass Ihre Webseite funktioniert.
Warum sollten Sie Pingdom in Betracht ziehen?
Wenn Sie einfaches und schnelles, externes Verfügbarkeits- und Performance-Monitoring
haben wollen
Flexibilität bei der Preisgestaltung
Integration der Pingdom Metriken mit anderen Lösungen von Drittanbietern wie z.B.
Wordpress
Unmittelbare Benachrichtigung bei Zwischenfällen und einfaches Teilen der Ergebnisse
mit Kollegen