Appsignal.instrument-Helper. Event-Formatter ermöglichen es, die an den ActiveSupport::Notifications.instrument-Methodenaufruf übergebenen Daten für AppSignal-Events zu formatieren.
Die Metadaten für die von den Event-Formattern formatierten Events sind auf der Trace-Detailseite in der Event-Timeline sichtbar. Fahren Sie mit der Maus über ein bestimmtes Event, und das Pop-up beim Mouseover zeigt Details wie die genau abgefragte Datenbank oder die ausgeführte Abfrage.
Einen Event-Formatter erstellen
Ein AppSignal-Event-Formatter ist eine Klasse mit einer Instanzmethode,format. Diese format-Methode erhält das Event-Payload-Hash und muss ein Array mit drei Werten zurückgeben.
Es ist möglich, Event-Formatter für Bibliotheken hinzuzufügen, die die ActiveSupport::Notifications-Instrumentierung verwenden, achten Sie jedoch darauf, dass nicht bereits ein Event-Formatter dafür registriert ist.
Es ist auch möglich, einen Event-Formatter für Ihre eigenen Events zu erstellen. Beachten Sie beim Hinzufügen Ihrer eigenen Event-Namen die Richtlinien zur Event-Benennung.
Jeder Event-Formatter erhält ein Event-Metadaten-”payload”-Hash, aus dem der Event-Formatter die Metadaten für das Event in AppSignal formatieren kann. Diese AppSignal-Event-Metadaten müssen vom Event-Formatter in dieser Reihenfolge in einem Array zurückgegeben werden:
- Ein Event-Titel (
String)- Ein beschreibenderer Titel eines Events, wie z. B.
"Fetch current user"oder"Fetch blog post comments". Er erscheint neben dem Event-Namen im Event-Baum auf der Performance-Trace-Seite, um etwas mehr Kontext zu dem zu liefern, was gerade passiert.
- Ein beschreibenderer Titel eines Events, wie z. B.
- Ein Event-Body (
String)- Weitere Details, wie z. B. die Datenbankabfrage, die vom Event verwendet wurde.
- Ein Event-Body-Format (
Integer)- Body-Format unterstützt Formatter, um die im
body-Argument angegebenen Daten zu bereinigen und sensible Daten aus dem Wert zu entfernen. Es gibt derzeit zwei unterstützte Werte für dasbody_format-Argument.Appsignal::EventFormatter::DEFAULT- Dieser Standardwert weist AppSignal an, den Wert unverändert zu lassen und keine Daten daraus zu bereinigen.
Appsignal::EventFormatter::SQL_BODY_FORMAT- Der Wert
SQL_BODY_FORMATweist AppSignal an, Ihre Daten durch den SQL-Sanitizer zu führen und alle Werte in SQL-Abfragen zu bereinigen.
- Der Wert
- Body-Format unterstützt Formatter, um die im
Beispiel-Event-Formatter
Dry::Monitor-Events formatieren
Event-Formatter formatieren auch Events, die über Dry::Monitor-Notifications instrumentiert werden. Registrieren Sie den Formatter für die Dry::Monitor-Event-ID, gefolgt von.dry, sodass ein als sql instrumentiertes Event von dem für sql.dry registrierten Formatter formatiert wird.
Der erste Wert, den der Formatter zurückgibt, bedeutet für diese Events etwas anderes. Für ein ActiveSupport::Notifications-Event ist es der Titel des Events. Für ein Dry::Monitor-Event ist es der Name des Events, und das Event wird ohne Titel in der Timeline aufgezeichnet.
Einen Event-Formatter deregistrieren
Deregistrieren Sie einen Formatter, damit AppSignal ihn nicht mehr für einen Event-Namen verwendet.Appsignal::EventFormatter.registered?("event.custom"), um zu prüfen, ob für einen Event-Namen ein Formatter registriert ist.
Änderungen in Gem 2.5
In AppSignal für Ruby-Gem-Version2.5.2 wurden einige Änderungen daran vorgenommen, wie Event-Formatter registriert werden. Die alte Methode zum Registrieren von Event-Formattern wurde in diesem Release als veraltet markiert und wird in Version 3.0 des Ruby-Gems entfernt.
Die neue Methode zum Registrieren von EventFormattern ermöglicht es, benutzerdefinierte Formatter nach dem Laden von AppSignal zu registrieren. Dies ermöglicht es, EventFormatter in Rails-Initializern zu registrieren.
In Gem-Version 2.5.1 und älter ist es möglich, einen Event-Formatter wie im folgenden Beispiel zu registrieren, indem die register-Methode in der Klasse selbst aufgerufen wird.
Appsignal::EventFormatter-Klasse mehr sein müssen.