von Torsten Hellwig | QMETHODS | Februar 2015
Werkzeuge zum Monitoring von Software as a Service 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
sowie zur Analyse von Monitoring-Daten.
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
Benutzerverhalten mithilfe von Scripts mit Klick-Pfaden durch die Anwendung simuliert
werden. Das Real-User-Monitoring erfordert die Injektion eines JavaScript-Tags in
jede Web-Seite der Anwendung. Dies ermöglicht tiefere Einblicke und Informationen
zur 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 Produkts 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 es somit 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 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, 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 um kausale
Zusammenhänge automatisch zu verstehen. 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, welche 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 Wert. 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ütze
oder fehlerhaftes App Verhalten
Für nicht technische Reviews wie Analyse der AWS CloudTrail Audit-Logs, was in 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.
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 welches man durchaus mit etwas Einarbeitungszeit rechnen 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 auf mit installierter OpsGenie App gesendet werden. Es
besteht auch die Möglichkeit Incidents via E-Mail, SMS oder automatischen Anrufen
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 und in
der Lage ist, Alerts zu senden.
Es können Alerts zu HipChat oder Slack weitergeleitet werden und somit das gemeinsame
Arbeiten an und Lösen von Incidents im Team ermöglicht. Das integrierte Reporting
bietet einige grundlegende Metriken wie "Mean Time to Resolve" sowie einige grobe
Trends. Es kann auch 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.
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.
Sie ein einfach zu bedienendes Incident-Management-System zu Ihren bestehenden Monitoring-Tools
hinzufügen möchten.
Sie einen Analyse und High-Level Überblick über die Funktionalität des Systems möchten
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 welchen 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 welche 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?
Infrastruktur Metriken für AWS-Services sind ausreichend.
Zweiwöchige Datenhaltung von Metriken ist ausreichend.
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 die 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 zu monitoren. Dabei werden gezielt
und geplant verschiedene HTTP(S) GET Requests an bestimmte URLs gesendet. Wird ein
Ausfall durch 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
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 bietet 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-APIs 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ügbarkeit 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