Wenn AppSignal Daten von Ihrer Anwendung empfängt, werden Traces/Transaktionen nach der Kombination aus Namespace und Aktionsname gruppiert.
Standardmäßig werden diese Aktionsnamen automatisch anhand Ihres Frameworks ermittelt (z. B. Controller#action_name, BackgroundWorker#perform usw.).
Wenn der automatisch ermittelte Aktionsname nicht ausreicht, können Sie den Aktionsnamen anpassen.
Dieser Leitfaden erklärt, wie Sie Aktionsnamen in verschiedenen Sprachintegrationen anpassen.
Aktionsnamen sind nicht dafür gedacht, eindeutig zu sein!
Verwenden Sie keine Variablen, um Aktionsnamen anzupassen, da dies einen neuen Vorfall pro Auftreten erzeugt.
Dadurch wird die Vorfallsübersicht schwer nutzbar und eine ordentliche Gruppierung und Trendanalyse verhindert.Verwenden Sie immer statische Zeichenketten für Aktionsnamen. Interpolieren Sie niemals Variablen, Benutzereingaben oder dynamische Daten in Aktionsnamen.
Warum Aktionsnamen anpassen?
- Bessere Übersichtlichkeit: Stellen Sie aussagekräftigere Namen für komplexe Vorgänge bereit.
- Angepasste Gruppierung: Steuern Sie, wie Anwendungsdaten in AppSignal organisiert werden.
Wenn automatische Aktionsnamen nicht ausreichen
Hier einige Beispiele, in denen automatisch generierte Aktionsnamen möglicherweise nicht ausreichen:
- Catch-all-Routen: In Anwendungen, die Catch-all-Routen oder dynamisches Routing verwenden (wie
/api/:entity/:action), könnte der Standard-Aktionsname etwas Generisches wie ApiController#dispatch sein.
- Mehrzweck-Aufgaben: Background-Worker und Skripte, die je nach Parametern verschiedene Arten von Arbeit verarbeiten und alle unter demselben Aktionsnamen gruppiert würden (z. B.
GenericWorker#perform).
- GraphQL-Resolver: Diese könnten alle unter einem einzigen Aktionsnamen (z. B.
POST /graphql) gruppiert werden, obwohl sie viele verschiedene Arten von Vorgängen verarbeiten.
Aktionen pro Sprache anpassen
Ruby
In Ruby-Anwendungen können Sie den Helfer Appsignal.set_action verwenden, um den Aktionsnamen anzupassen:
Für Background-Jobs, Aufgaben und Skripte können Sie den Aktionsnamen auf die gleiche Weise mit dem Helfer Appsignal.set_action setzen.
Es ist auch möglich, den Aktionsnamen beim Erstellen einer Transaktion mit dem Helfer Appsignal.monitor zu konfigurieren. Er akzeptiert den Aktionsnamen als Schlüsselwortargument.
Elixir
In Elixir-Anwendungen können Sie die Funktion Appsignal.Span.set_name/2 verwenden, um den Aktionsnamen am Root-Span anzupassen:
Für Background-Jobs, Aufgaben und Skripte können Sie den Aktionsnamen auf die gleiche Weise mit der Funktion Appsignal.Span.set_name/2 setzen.
Node.js
In Node.js-Anwendungen können Sie den Helfer setRootName aus dem AppSignal-Paket verwenden, um Aktionsnamen anzupassen:
Für Background-Jobs, Aufgaben und Skripte können Sie den Aktionsnamen auf die gleiche Weise mit dem Helfer setRootName setzen.
Python
In Python-Anwendungen können Sie den Helfer set_root_name aus dem AppSignal-Paket verwenden, um Aktionsnamen anzupassen:
Für Background-Jobs, Aufgaben und Skripte können Sie den Aktionsnamen auf die gleiche Weise mit dem Helfer set_root_name setzen.
Front-end JavaScript
In Front-end-JavaScript-Anwendungen können Sie den Helfer setAction aus dem AppSignal-Paket verwenden, um Aktionsnamen anzupassen:
Alternativ können Sie den Aktionsnamen eines bestehenden Spans aktualisieren:
In Go-Anwendungen arbeitet AppSignal mit OpenTelemetry, das Spans zur Nachverfolgung von Metadaten wie dem Aktionsnamen verwendet. Setzen Sie an einem beliebigen Span im Trace ein Attribut appsignal.action_name mit einem String-Wert, um den Aktionsnamen anzupassen:
Für Background-Jobs, Aufgaben und Skripte können Sie den Aktionsnamen auf die gleiche Weise setzen, indem Sie das Attribut appsignal.action_name am aktiven Span setzen.
Java
In Java-Anwendungen arbeitet AppSignal mit OpenTelemetry, das Spans zur Nachverfolgung von Metadaten wie dem Aktionsnamen verwendet. Setzen Sie an einem beliebigen Span im Trace ein Attribut appsignal.action_name mit einem String-Wert, um den Aktionsnamen anzupassen:
Für Background-Jobs, Aufgaben und Skripte können Sie den Aktionsnamen auf die gleiche Weise setzen, indem Sie das Attribut appsignal.action_name am aktiven Span setzen.
PHP
In PHP-Anwendungen können Sie die Hilfsmethode Appsignal::setAction() aus dem AppSignal-Paket verwenden, um Aktionsnamen anzupassen:
Für Background-Jobs, Aufgaben und Skripte können Sie den Aktionsnamen auf die gleiche Weise setzen, indem Sie das Attribut appsignal.action_name am aktiven Span setzen.
Best Practices
Befolgen Sie beim Anpassen von Aktionsnamen diese Richtlinien:
- Seien Sie konsistent: Verwenden Sie ein einheitliches Benennungsschema in Ihrer gesamten Anwendung.
- Seien Sie spezifisch: Fügen Sie relevante Informationen hinzu, die helfen, den Vorgang zu identifizieren.
- Vermeiden Sie hohe Kardinalität: Fügen Sie keine eindeutigen IDs oder Werte ein, die pro Ausführung eindeutige Aktionsnamen erzeugen würden.
- Verwenden Sie statische Zeichenketten: Interpolieren Sie niemals Variablen oder dynamische Daten in Aktionsnamen.
- Folgen Sie der Benennung des Codebase: Verwenden Sie Benennungsschemata wie
Controller#action, die zu Ihrer Anwendungsstruktur passen, damit die Stelle im Code gefunden werden kann.
- Verwenden Sie stattdessen Tags oder Metadaten: Verwenden Sie für die Nachverfolgung variabler Informationen wie Zahlungsanbieter oder Benutzertypen Tags und Metadaten, anstatt diese in Aktionsnamen einzubinden.
Wie Sie verschiedene Vorgänge mit demselben Aktionsnamen behandeln
Anstatt dynamische Aktionsnamen zu erstellen, verwenden Sie eine Kombination aus:
- Statische Aktionsnamen: Verwenden Sie aussagekräftige, aber statische Aktionsnamen.
- Tags: Fügen Sie Tags hinzu mit den variablen Informationen (z. B.
provider: stripe, operation_type: refund).
- Benutzerdefinierte Attribute: Fügen Sie zusätzliche Metadaten hinzu zur Trace/Transaktion.
Beispiel:
Dieser Ansatz ermöglicht Ihnen:
- Verwandte Vorgänge unter einem einzigen Aktionsnamen zu gruppieren.
- Nach Tags zu filtern und zu suchen.
- Eine übersichtliche Vorfallsübersicht zu pflegen.
Deployment
Nachdem Sie benutzerdefinierte Aktionsnamen implementiert haben, deployen Sie Ihre Anwendung. Neue Traces/Transaktionen verwenden Ihre benutzerdefinierten Aktionsnamen in den AppSignal-Dashboards.
Historische Daten verwenden weiterhin die ursprünglichen Aktionsnamen. Nur neu gemeldete Aktionen verwenden die von Ihnen definierten benutzerdefinierten Namen.
Erscheinen Ihre benutzerdefinierten Aktionsnamen nicht korrekt? Zögern Sie nicht, unser Support-Team zu kontaktieren für Hilfe!
Weiterführende Literatur