Appsignal.instrument/2-3
Die Funktion instrument/2 wird verwendet, um Instrumentierung hinzuzufügen, indem ein Codeabschnitt
in eine Span eingewickelt wird. Eine Span wird schließlich zu einem Sample oder zu einem Event im Sample einer anderen
Span in AppSignal.
Spans zu Traces hinzufügen
Im folgenden Beispiel haben wir einen Phoenix-Controller mit einerindex/2-Funktion,
die eine langsame Funktion aufruft. Die Funktion slow wird mit der Funktion
Appsignal.instrument/2 instrumentiert, die sie als separates Event in
dieser Phoenix-Anfrage erfasst. Sie wird auf AppSignal.com in der Event-Timeline dieses
Samples angezeigt, um mehr Einblick zu geben, wo die meiste Zeit während der
Anfrage verbracht wurde.
Appsignal.instrument3
und übergeben "slow" als Namen für das Event.
Neue Traces starten
Im Phoenix-Beispiel wurde bereits ein AppSignal-Trace gestartet, dank der First-Party-Unterstützung für Phoenix im AppSignal-Paket. Nicht alle Frameworks und Pakete werden derzeit direkt unterstützt und starten automatisch Traces. Dasselbe gilt für Ihre eigenen reinen Elixir-Anwendungen. Wie beim Hinzufügen von Spans zu bereits instrumentierten Traces wird eine neue Root-Span mit der FunktionAppsignal.instrument/2 erstellt:
instrument/3:
instrument/2-3 sie mit der geöffneten Span auf, um weitere Anpassungen zu ermöglichen. Siehe die Dokumentation auf hex.pm für alle verfügbaren Span-Funktionen.
Ausnahmebehandlung
Um Fehler mithilfe benutzerdefinierter Instrumentierung zu melden, lesen Sie bitte mehr in unserem Leitfaden zur Ausnahmebehandlung.Funktions-Decoratoren
Mit dem Decorator-ModulAppsignal.Instrumentation.Decorators ist es
möglich, Ihren Elixir-Anwendungen benutzerdefinierte Instrumentierung hinzuzufügen, ohne
den Inhalt der Funktionen zu ändern.
Transaktions-Events
Im folgenden Beispiel haben wir einen Phoenix-Controller mit einerindex/2-Funktion,
die eine langsame Funktion aufruft. Die Funktion slow wird mit dem AppSignal-
transaction_event-Decorator instrumentiert, der sie als separates Event in dieser Phoenix-
Anfrage erfasst. Sie wird auf AppSignal.com in der Event-Timeline dieses Transaktions-
Samples angezeigt, um mehr Einblick zu geben, wo die meiste Zeit während der Anfrage verbracht wurde.
phoenix_controller, phoenix_render, ecto usw.), können Sie dem transaction_event-Decorator auch einen Gruppennamen übergeben.
get_data_from_github.github_api in der Event-Timeline.
Weitere Informationen darüber, wie Event-Namen verwendet werden, finden Sie in unseren
Event-Benennungsrichtlinien.
Transaktionen
Im Phoenix-Beispiel wurde bereits eine AppSignal-Transaktion gestartet, dank der First-Party-Unterstützung für Phoenix im AppSignal-Paket. Nicht alle Frameworks und Pakete werden derzeit direkt unterstützt und starten automatisch Transaktionen. Dasselbe gilt für Ihre eigenen reinen Elixir-Anwendungen. Umtransaction_event-Decoratoren zu verfolgen, müssen wir zuvor eine
AppSignal-Transaktion starten. Wir können eine Transaktion mit dem
Funktions-Decorator transaction starten.
Namespaces
Um zwischen HTTP-Anfragen und Hintergrund-Jobs zu unterscheiden, können wir der Transaktion einen Namespace übergeben, sobald wir sie starten. Die folgenden zwei Namespaces sind offizielle, von AppSignal unterstützte Namespaces.http_request– der Standard – wird als „web“-Namespace bezeichnetbackground_job– erstellt den „background“-Namespace
Benutzerdefinierte Namespaces
Sie können auch eigene Namespaces erstellen, um Transaktionen in einem separaten Teil Ihrer Anwendung wie einem Verwaltungsbereich zu verfolgen. Dies gruppiert alle Transaktionen mit diesem Namespace in einem separaten Abschnitt auf AppSignal.com, sodass langsame Admin-Controller die Durchschnittswerte der Geschwindigkeit Ihrer Anwendung nicht beeinträchtigen.Phoenix-Channels
Es gibt einen benutzerdefinierten Funktions-Decorator für Phoenix-Channels. Dieser Decorator soll vor diehandle_in/3-Funktion eines Phoenix.Channel-Moduls gesetzt werden.