Du hast deinen AdBlocker an?

Es wäre ein Traum, wenn du ihn für t3n.de deaktivierst. Wir zeigen dir gerne, wie das geht. Und natürlich erklären wir dir auch, warum uns das so wichtig ist. Digitales High-five, deine t3n-Redaktion

t3n 31

Sentry: Programmierfehler finden mit System

(Quelle: iStock)

Mit erfahrenen Programmierern sowie einer sorgfältigen Implementierung und systematischen Testphasen hat man gute Karten für eine fehlerfreie Applikation. Doch wo Menschen arbeiten, können Fehler auftreten. Mit einem aussagekräftigen Logging kann man Fehler und Ursachen zügig finden und analysieren. Sentry eignet sich dank kontextbezogener Informationen und verständlicher Visualisierung ideal dazu und kann eine wichtige Rolle im Qualitätsmanagement eines Projekts einnehmen.

Sentry ist ein Dienst, der im Grunde nichts weiter macht als Nachrichten von beliebigen Applikationen über das Netzwerk entgegen zu nehmen. Diese werden in Echtzeit nach festgelegten Kriterien geordnet, mit weiteren Informationen angereichert, aggregiert und schließlich in einem Web-Frontend dargestellt. 2010 als Exception-Tracker für das Python-Framework Django entwickelt, wird Sentry inzwischen von Unternehmen wie Mozilla oder Pinterest eingesetzt.

Wozu soll man aber überhaupt ein dediziertes Tools verwenden, wenn sich Fehlermeldungen ebenso in Server-Logfiles schreiben und auswerten lassen? Die Frage ist durchaus berechtigt, allerdings bietet Sentry weit mehr Vorteile als ein einfaches, Datei-basierendes Logging – wie die folgende Übersicht verdeutlichen soll:

  • Ähnliche Nachrichten werden aggregiert, wodurch häufig auftretende Fehler sofort auffallen und mit erhöhter Priorität behandelt werden können.
  • Jeder Nachricht werden umfangreiche Informationen wie ein Stacktrace angehängt, was die Analyse vereinfacht.
  • Konventionelle Logfiles muss man aktiv überprüfen, Sentry hingegen benachrichtigt Entwickler automatisch.
  • Nachrichten können nach verschiedenen Kriterien wie Tags, Fehler-Level, dem Zeitraum oder dem System, auf dem sie aufgetreten sind, sortiert werden. So bleiben auch große Datenmengen übersichtlich.
  • Durch das Web-Frontend mit Rechte- und Rollen-Management besteht die Möglichkeit, die Meldungen auch Dienstleistern, Freelancern oder sogar Projektmanagern zugänglich zu machen.
  • Da die Logs auf einem von der Applikation getrennten Server im Netzwerk gespeichert sind, bleiben sie auch dann noch einsehbar, wenn das Produktionssystem einen Totalausfall vermeldet.

Der Nachrichten-Stream im Web-Frontend von Sentry. Die Zahl neben den Einträgen steht für die Eintrittshäufigkeit des Events, die Farbe der Markierung für das Fehler-Level. Der Nachrichten-Stream im Web-Frontend von Sentry. Die Zahl neben den Einträgen steht für die Eintrittshäufigkeit des Events, die Farbe der Markierung für das Fehler-Level.
Natürlich entsteht beim Einsatz von Sentry durch die Kommunikation und die applikationsseitige Implementierung ein gewisser Overhead. Dieser ist jedoch marginal und in Anbetracht der Vorteile leicht zu verschmerzen.

Die Funktionsweise von Sentry

Sentry basiert auf einer klassischen Client-Server-Architektur. Der Client schickt die Nachrichten wie beschrieben zum Server, der sie speichert, aufbereitet und in einem Web-Frontend darstellt. Wer keinen eigenen Client entwickeln will, kann einfach Raven verwenden. Ursprünglich genau wie Sentry in Python geschrieben, gibt es für Raven Portierungen auf fast alle gängigen Plattformen wie PHP, Ruby oder sogar JavaScript – es spielt daher keine Rolle, auf welcher Plattform die eigentliche Applikation basiert. Selbst für Frameworks wie Symfony2 ist ein Raven-Bundle verfügbar. In der Default-Einstellung kommunizieren Sentry und Raven per HTTP über Port 9000 und neuerdings wird auch UDP unterstützt.

Um Nachrichten zu empfangen, wird im Web-Frontend zunächst ein Projekt auf dem Server angelegt. Der Server kann beliebig viele Projekte verwalten. Von zentraler Bedeutung für die Kommunikation und die Verarbeitung der eingehenden Information ist der projektspezifische DSN (Data Source Name), den Sentry anschließend vergibt und der von Raven bei der Initialisierung verwendet werden muss:

Beispiel

{PROTOCOL}://{PUBLIC_KEY}:{SECRET_KEY}@{HOST}/{PATH}{PROJECT_ID}
# Aufbau des Sentry-DSN

Das Zusammenspiel von Sentry und Raven: Der Client übergibt Nachrichten per HTTP oder UDP und kann dank einer Vielzahl von Portierungen plattformunabhängig implementiert werden.
Das Zusammenspiel von Sentry und Raven: Der Client übergibt Nachrichten per HTTP oder UDP und kann dank einer Vielzahl von Portierungen plattformunabhängig implementiert werden.
Sentry lässt sich entweder auf einem eigenen Server (Self-Hosted, empfohlen bei sensiblen oder kritischen Daten) installieren oder als SaaS-Lösung betreiben. Letztere ist für bis zu 100 Events am Tag kostenfrei, danach sind je nach anfallender Datenmenge zwischen neun und 99 US-Dollar pro Monat fällig.

Finde einen Job, den du liebst

Bitte beachte unsere Community-Richtlinien

Eine Reaktion

Du musst angemeldet sein, um einen Kommentar schreiben zu können.

Jetzt anmelden