Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden?

Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden?

Wenn es um Observability geht, werden in den drei Bereichen Logs, Metriken und Traces häufig riesige Mengen an Daten gesammelt. Wie wäre es, wenn wir nur Fehler protokollieren würden?

Eine Anwendung, mit der sich das umsetzen lässt, ist Sentry. Es ist sowohl als Cloud-Service als auch als Open Source zum Self-hosting verfügbar. Die gesammelte Datenmenge bleibt beim Einsatz dieses Tools deutlich geringer. Je nach Szenario kann es auch individuelles User-Feedback zu den Fehlern sammeln.

Als Beispiel dient ein Open-Source-Plugin für IntelliJ, das in jeder neuen Version mehrere zehntausend Mal heruntergeladen wird. Wie viele Fehler lassen sich damit zusätzlich finden?

Der Vortrag zeigt, wie Entwicklerinnen und Entwickler Sentry in eigene Projekte integrieren können, welche Informationen protokolliert werden und welche Arten von Fehlern sich damit finden lassen.

Alexander Schwartz

March 15, 2022
Tweet

More Decks by Alexander Schwartz

Other Decks in Programming

Transcript

  1. Sentry in Aktion: Wie wäre es, wenn wir nur
    Fehlermeldungen protokollieren würden?
    Alexander Schwartz, Principal Software Engineer
    JavaLand | 2022-03-15

    View Slide

  2. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 2
    Sentry in Aktion
    Motivation automatisches Fehlertracking
    1.
    Sentry: was es kann
    2.
    Sentry einbinden
    3.
    Sentry Dashboard und Benachrichtigungen
    4.
    Erfahrungen und Zusammenfassung
    5.

    View Slide

  3. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 3
    Sentry in Aktion
    Motivation automatisches Fehlertracking
    1.
    Sentry: was es kann
    2.
    Sentry einbinden
    3.
    Sentry Dashboard und Benachrichtigungen
    4.
    Erfahrungen und Zusammenfassung
    5.

    View Slide

  4. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 4
    Wenn ein Fehler auftritt,
    aber sich keiner beschwert,
    besteht dann trotzdem ein Problem?

    View Slide

  5. • Dokumente ohne Ablenkung in der
    Entwicklungsumgebung schreiben
    • Vorschau der geschriebenen Texte
    • Kollaboration und Versionierung mit Git
    • Vorlagen liefern Hilfen und Struktur
    • Nahtloses Einbinden in Continuous
    Delivery Prozesse
    Viele 1000 Downloads für jedes neue
    Release.
    💣 Alle Fehler, die auftreten, sind erst
    einmal nur lokal.
    CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 5
    Ein IDE-Plugin um lokal Texte zu bearbeiten
    https://intellij-asciidoc-plugin.ahus1.de/

    View Slide

  6. In diesem Fall:
    • Weitgehende statische Website mit Links
    • Dynamische Navigation und Suche mit
    etwas JavaScript
    💣 Links können ins Leere führen
    💣 JavaScript-Fehler im Browser sind nur in
    der Console sichtbar
    CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 6
    Eine Website mit ein bisschen JavaScript
    https://intellij-asciidoc-plugin.ahus1.de/

    View Slide

  7. Für ein IDE Plugin
    User:
    • Ärgern
    • Link zum Ticketsystem suchen
    • Bei GitHub anmelden
    • Informationen zusammensuchen
    • Abschicken
    Developer:
    • Rückfragen stellen
    • Testversionen bereitstellen
    • Rückmeldungen abwarten
    CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 7
    Klassische Fehlerkette
    Für eine Website
    User:
    • Ärgern
    • Kontaktformular suchen
    • Informationen zusammensuchen
    • Abschicken
    Developer:
    • Rückfragen stellen
    • Testversionen bereitstellen
    • Rückmeldungen abwarten

    View Slide

  8. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 8
    Sentry in Aktion
    Motivation automatisches Fehlertracking
    1.
    Sentry: was es kann
    2.
    Sentry einbinden
    3.
    Sentry Dashboard und Benachrichtigungen
    4.
    Erfahrungen und Zusammenfassung
    5.

    View Slide

  9. Sentry ist eine Error-Tracker-Software.
    Eingehende Fehler-Events gruppiert es
    automatisch zu Issues. Für neue Issues
    verschickt es Notifications.
    Release-Trigger, User Feedback, Source-Code-
    und Bug-Tracker-Integration sind optional.
    Produkt-Homepage:
    https://sentry.io/
    CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 9
    Sentry: Sammeln von Fehlern
    Events
    Release-Trigger
    Notifications
    Bug-Tracker
    Dashboard Manage Issues
    Offenlegung: Das Open Source Projekt IntelliJ AsciiDoc Plugin nutzt einen Sponsored Account.
    Damit kann es bestimmte Funktionen kostenlos nutzen, die normalerweise kostenpflichtig sind.
    User Feedback Source Code

    View Slide

  10. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 10
    Sentry in Aktion
    Motivation automatisches Fehlertracking
    1.
    Sentry: was es kann
    2.
    Sentry einbinden
    3.
    Sentry Dashboard und Benachrichtigungen
    4.
    Erfahrungen und Zusammenfassung
    5.

    View Slide







  11. dsn="https://..." />








    CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 11
    Sentry: Integrationen, die Fehler einsammeln
    Integration für Java via Log4j:

    View Slide

  12. src="https://browser.sentry-cdn.com/..."
    integrity="..."
    crossorigin="anonymous"
    >
    <br/>// initialize framework<br/>Sentry.init({<br/>dsn: "https://...",<br/>beforeSend(event, hint) {<br/>// show user inquiry popup on exceptions<br/>if (event.exception) {<br/>Sentry.showReportDialog({<br/>eventId: event.event_id, lang: 'en' });<br/>}<br/>return event;<br/>},<br/>});<br/>// Sample code on a 404 page<br/>Sentry.captureException("Page missing: location: "<br/>+ window.location.href);<br/>
    CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 12
    Sentry: Integrationen, die Fehler einsammeln
    Integration für Plain Old JavaScript über CDN:

    View Slide

  13. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 13
    Sentry: Integrationen, die Fehler einsammeln
    Integration in Frameworks wie Vue, Angular und React.
    npm install --save @sentry/vue
    import Vue from "vue";
    import * as Sentry from "@sentry/vue";
    Sentry.init({
    Vue: Vue,
    dsn: "https://...",
    logErrors: true
    });

    View Slide

  14. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 14
    Im Browser: Automatisches Event und optionales User Feedback

    View Slide

  15. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 15
    In IntelliJ: Versand nach Freigabe durch den Nutzer mit Fehlerbeschreibung

    View Slide

  16. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 16
    Sentry in Aktion
    Motivation automatisches Fehlertracking
    1.
    Sentry: was es kann
    2.
    Sentry einbinden
    3.
    Sentry Dashboard und Benachrichtigungen
    4.
    Erfahrungen und Zusammenfassung
    5.

    View Slide

  17. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 17
    Dashboard mit Issues

    View Slide

  18. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 18
    Dashboard mit Issues

    View Slide

  19. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 19
    Benachrichtigung bei neuen Issues

    View Slide

  20. name: Release
    on:
    release:
    types: [prereleased, ...]
    jobs:
    release:
    name: Publish Plugin
    runs-on: ubuntu-latest
    steps:
    # https://github.com/marketplace/actions/sentry-release
    - name: Create Sentry release
    uses: getsentry/action-release@v1
    env:
    SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
    SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
    SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
    with:
    environment: ...
    version: ${{ github.ref }}
    CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 20
    Neues Release via Pipeline
    … in diesem Beispiel via GitHub Actions

    View Slide

  21. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 21
    Neues Release via Pipeline

    View Slide

  22. • Event enthält Basis-Informationen inkl.
    Stacktrace
    • Meta-Daten können angereichert werden (z. B.
    Software-Version und installierte Plugins)
    Optional:
    • Attachments für weitergehende Informationen
    • User Message als Fehlerbeschreibung im Event
    • User Feedback als nachgelagerte Mitteilung des
    Nutzers (wird anhand der Event-ID zugeordnet)
    CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 22
    Eventmechanismen
    Event
    User Feedback
    User Message
    Attachments
    Attachments
    Metadaten

    View Slide

  23. 23
    • Meta-Daten können nach Bedarf ergänzt oder reduziert werden.
    • Über das Konzept Exception-mit-Attachment können Zusatzinformationen
    nach Sentry übergeben werden; es wird etwas Adapter-Code für die
    Übergabe benötigt.
    CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz
    Deep Dive Metadaten und Attachments
    Live Coding am Beispiel des
    IntelliJ AsciiDoc Plugins.

    View Slide

  24. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 24
    Data Scrubbing

    View Slide

  25. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 25
    Sentry in Aktion
    Motivation automatisches Fehlertracking
    1.
    Sentry: was es kann
    2.
    Sentry einbinden
    3.
    Sentry Dashboard und Benachrichtigungen
    4.
    Erfahrungen und Zusammenfassung
    5.

    View Slide

  26. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 26
    Valide gemeldete Probleme führen zu behobenen Fehlern im Code oder Workarounds in der Plattform.
    Rauschen („Noise“) führt zu Nacharbeit, führt aber nie zu einem behobenen Fehler.
    Fehlerarten
    Valide gemeldete Probleme
    Seltene Datenkonstellationen
    Seltene Thread-Konstellationen
    Fehler in der Plattform
    Ganz normale Fehler

    View Slide

  27. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 27
    Valide gemeldete Probleme führen zu behobenen Fehlern im Code oder Workarounds in der Plattform.
    Rauschen („Noise“) führt zu Nacharbeit, führt aber nie zu einem behobenen Fehler.
    Stille („Silence“) sind Probleme, von denen die Entwickler gerne wüssten, worüber sie aber nicht benachrichtigt
    werden.
    Fehlerarten
    Valide gemeldete Probleme Rauschen
    Seltene Datenkonstellationen Fehler in der Plattform
    Seltene Thread-Konstellationen Lokale Rechner-Probleme
    Fehler in der Plattform Web-Crawler / Exploit-Crawler
    Ganz normale Fehler Duplikate von echten Fehlern

    View Slide

  28. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 28
    Valide gemeldete Probleme führen zu behobenen Fehlern im Code oder Workarounds in der Plattform.
    Rauschen („Noise“) führt zu Nacharbeit, führt aber nie zu einem behobenen Fehler.
    Stille („Silence“) sind Probleme, von denen die Entwickler gerne wüssten, worüber sie aber nicht benachrichtigt
    werden.
    Fehlerarten
    Valide gemeldete Probleme Rauschen Stille
    Seltene Datenkonstellationen Fehler in der Plattform IDE-/Browser-Absturz
    Seltene Thread-Konstellationen Lokale Rechner-Probleme Fehler in der Event-Integration
    Fehler in der Plattform Web-Crawler / Exploit-Crawler Performance-Probleme
    Ganz normale Fehler Duplikate von echten Fehlern Verhalten anders als erwartet

    View Slide

  29. Sentry ist eine Error-Tracker-Software.
    Eingehende Fehler-Events gruppiert es
    automatisch zu Issues. Für neue Issues verschickt
    es Notifications.
    Release-Trigger, User Feedback, Source-Code-
    und Bug-Tracker-Integration sind optional.
    Produkt-Homepage:
    https://sentry.io/
    CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 29
    Sentry: Sammeln von Fehlern
    Events
    Release-Trigger
    Notifications
    Bug-Tracker
    Dashboard Manage Issues
    User Feedback Source Code

    View Slide

  30. CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz
    • Mehr Meldungen durch Sentry
    • Mehr Kontextinformationen in der Meldung
    • Zeitnahe Rückmeldung bei neuen Fehlern oder nach Updates
    • Mehr gefixte Fehler
    • Rauschen abhängig von Plattform und Kanal
    30
    Zusammenfassung
    https://sentry.io/

    View Slide

  31. Kontakt
    Alexander Schwartz
    Principal Software Engineer
    [email protected]
    https://www.ahus1.de
    @ahus1de
    CC BY-NC-SA 4.0 | Sentry in Aktion: Wie wäre es, wenn wir nur Fehlermeldungen protokollieren würden? | März 2022 | Alexander Schwartz 31

    View Slide