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
  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.
  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.
  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?
  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/
  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/
  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
  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.
  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
  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.
  11. <?xml version="1.0" encoding="UTF-8"?> <Configuration status="warn" packages="..."> <Appenders> <Console name="Console" target="SYSTEM_OUT">

    <PatternLayout pattern="..."/> </Console> <Sentry name="Sentry" dsn="https://..." /> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Sentry"/> <AppenderRef ref="Console"/> </Root> </Loggers> </Configuration> 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:
  12. <script src="https://browser.sentry-cdn.com/..." integrity="..." crossorigin="anonymous" ></script> <script> // initialize framework Sentry.init({

    dsn: "https://...", beforeSend(event, hint) { // show user inquiry popup on exceptions if (event.exception) { Sentry.showReportDialog({ eventId: event.event_id, lang: 'en' }); } return event; }, }); // Sample code on a 404 page Sentry.captureException("Page missing: location: " + window.location.href); </script> 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:
  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 });
  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
  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
  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.
  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
  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
  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
  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
  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
  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
  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.
  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
  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.
  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
  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
  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
  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
  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/
  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