samples oder traces (Aliase), um einzelne Samples aus den Tracing-Daten von AppSignal abzurufen. Traces zeigen, was während einer Request, eines Jobs oder einer Skriptausführung passiert ist, und sie können den Trace hinter einer Exception anzeigen.
Listen Sie Traces auf und öffnen Sie dann einen, um dessen Span Tree anzuzeigen und die Timings, Tags und Attributes eines einzelnen Spans zu prüfen.
Der Befehl ist als samples oder traces verfügbar. appsignal-cli traces list und appsignal-cli samples list bewirken dasselbe. Diese Seite verwendet durchgehend traces.
Traces werden über die REST tracing API von AppSignal mit Ihrem angemeldeten Konto abgerufen. Authentifizieren Sie die CLI daher zuerst. Siehe Authentifizierung.
Allgemeine Optionen
Jedertraces-Befehl identifiziert eine Anwendung und verwendet Ihre Standard-Organisation, sofern Sie es ihm nicht anders mitteilen:
| Flag | Beschreibung |
|---|---|
--app <name> | Anwendungsname (fügen Sie --environment hinzu, wenn mehr als eine App den Namen teilt) |
--environment <env> | Environment, wird mit --app verwendet, wie production oder development |
--app-id <id> | Die ID der App (eine lange hexadezimale Zeichenkette aus appsignal-cli apps list), anstelle von --app und --environment |
--org <slug> | Organisations-Slug (verwendet Ihren Standard, wenn weggelassen) |
Einen Trace über einen Incident finden
Die meisten Untersuchungen beginnen bei einem Incident, nicht bei einer Trace-ID. Diese Schritte führen Sie von einer Incident-Nummer zum Span Tree einer einzelnen Request, anhand einer LaravelPaymentDeclinedException auf POST /checkout (Exception Incident 9).
1. Lesen Sie den Digest des Incidents
Error Traces werden nach einem Exception Digest gruppiert. Lesen Sie den Digest aus dem Incident oder kopieren Sie ihn aus der AppSignal-App:Shell
digests:
2. Listen Sie die Traces für diesen Digest auf
Übergeben Sie den Digest antraces errors. Jede Zeile ist ein erfasstes Vorkommen:
Shell
3. Prüfen Sie den Trace
Übergeben Sie die Incident-Nummer und die Trace-ID antraces show-incident:
Shell
!! markiert den Span, der die Exception ausgelöst hat: hier POST /checkout direkt nach dem 334 ms langen stripe.charge. Um einen Span vollständig zu prüfen, fügen Sie --span-id mit dem Wert aus dessen span: hinzu. Siehe einen einzelnen Span prüfen.
Diese Schritte beginnen bei einem Exception Incident. Wenn Sie von etwas anderem ausgehen, verwenden Sie den passenden Befehl:
- Ein Performance Incident:
traces incident --number <N>listet dessen Traces ohne Digest auf. Siehe für einen Incident. - Ein bekannter Namespace und eine bekannte Action:
traces list --namespace <name> --action <name>. Siehe für eine Action.
Traces auflisten
Drei Befehle listen Traces auf, je nachdem, wovon Sie ausgehen: von einer Performance Action, einem Incident oder einem Exception Digest. Jeder gibt eine Tabelle von Trace-IDs zurück, die Sie dann an die Inspect-Befehle im folgenden Abschnitt übergeben können.Für eine Action
Listen Sie die aktuellen Performance Samples für einen Namespace und eine Action auf:Shell
list erfordert --namespace, --action und eine App (--app oder --app-id) und nimmt diese zusätzlichen Optionen:
| Flag | Beschreibung |
|---|---|
--namespace <name> | Namespace, in dem gesucht wird, z. B. web, background, graphql (erforderlich) |
--action <name> | Action, für die Traces abgerufen werden, z. B. GET /products (erforderlich) |
--start <ISO8601> | Startzeit, z. B. 2025-01-15T00:00:00Z (Standard: vor 24 Stunden) |
--end <ISO8601> | Endzeit (Standard: jetzt) |
--min-duration-ms <ms> | Nur Traces zurückgeben, die mindestens so viele Millisekunden lang sind |
--limit <N> | Maximale Anzahl zurückzugebender Traces (1–100, Standard 25) |
--page-all | Jeden Trace im Bereich abrufen, --limit ignorierend |
--namespace ist der AppSignal-Namespace, der die Action gruppiert, gewöhnlich web, background, rake, runner oder graphql. Ihre App kann auch eigene Namespaces definieren. Wenn Sie nicht sicher sind, zu welchem Namespace eine Action gehört, verwenden Sie stattdessen traces incident --number <N>: es liest die Namespace- und Action-Namen direkt vom Performance Incident, sodass Sie sie nicht selbst angeben müssen.Für einen Incident
Überspringen Sie die Namespace- und Action-Suche und listen Sie die Samples hinter einem Performance Incident anhand seiner Nummer auf:Shell
--action, um die Suche auf eine davon zu beschränken. Zusätzlich zu den allgemeinen Optionen nimmt incident:
| Flag | Beschreibung |
|---|---|
--number <N> | Nummer des Performance Incidents (erforderlich) |
--action <name> | Die Suche auf eine Action beschränken, wenn der Incident mehrere hat |
--start <ISO8601> | Startzeit (Standard: vor 24 Stunden) |
--end <ISO8601> | Endzeit (Standard: jetzt) |
--min-duration-ms <ms> | Nur Traces zurückgeben, die mindestens so viele Millisekunden lang sind |
--limit <N> | Maximale Traces pro Action (1–100, Standard 25) |
--page-all | Jeden Trace für jede Action abrufen, --limit ignorierend |
Error Traces für eine Exception
Listen Sie die Error Traces hinter einer Exception auf, identifiziert über ihren Digest:Shell
errors erfordert --digest und eine App (--app oder --app-id) und nimmt außerdem --limit (1–100, Standard 25) und --page-all. Finden Sie den Digest auf dem Exception Incident in der AppSignal-App-UI oder verwenden Sie traces show-incident im folgenden Abschnitt, um den Digest komplett zu überspringen.
Einen Trace prüfen
Sobald Sie eine Trace-ID haben, öffnen Sie sie, um den Span Tree zu sehen: jeden Span mit seiner Art, Dauer, Anzahl der Events und einer möglichen Exception, gefolgt von einer Zusammenfassung. Drei Befehle erledigen dies, passend zu den drei Möglichkeiten, den Trace aufzulisten.Aus einer Action
Zeigen Sie einen Performance Trace anhand seines Namespaces, seiner Action und Trace-ID an:Shell
!! und dem Exception-Typ gekennzeichnet.
Aus einem Exception Digest
Zeigen Sie einen Error Trace anhand seines Digests und seiner Trace-ID an:Shell
traces errors (oder von traces incident für einen Exception Incident) zurückgegeben werden.
Aus einer Incident-Nummer
Wenn Sie eine Incident-Nummer statt eines Namespaces, einer Action oder eines Digests haben, prüftshow-incident den Incident für Sie: anhand der Nummer sucht es den Namespace und die Action (oder den Digest) heraus, sodass Sie sie nicht selbst angeben müssen. Sie wählen weiterhin mit --trace-id aus, welchen Trace Sie prüfen möchten, listen Sie also zunächst die Traces des Incidents mit traces incident auf:
Shell
Einen einzelnen Span prüfen
Fügen Sie--span-id zu einem der Show-Befehle hinzu, um die vollständigen Details eines Spans anstelle des Trees auszugeben: seine Timings, Status, Tags, Span Attributes, Events und Resource Attributes.
Shell
span:-Wert am Ende jeder Zeile im Span Tree. Wenn die ID nicht im Trace enthalten ist, listet die CLI auf, was verfügbar ist:
Sensible Daten
Standardmäßig lassen die Show-Befehle HTTP Headers, Request-Parameter, Session-Daten und Funktionsparameter weg. Fügen Sie--include-sensitive hinzu, um sie anzuzeigen:
Shell
Zeitbereich und Paginierung
list, incident und die Performance-Show-Befehle schauen standardmäßig 24 Stunden zurück. Erweitern oder verschieben Sie das Fenster mit --start und --end (ISO 8601, zum Beispiel 2025-01-15T00:00:00Z). Wenn ein Trace älter als das Standardfenster ist, meldet eine Suche per ID, dass er nicht gefunden wurde: führen Sie ihn mit einem früheren --start erneut aus.
--limit begrenzt eine Auflistung auf bis zu 100 Traces (standardmäßig 25). Um stattdessen jeden Trace im Bereich abzurufen, verwenden Sie --page-all, das --limit ignoriert.
JSON-Ausgabe
- Fügen Sie das globale Flag
--output json(oder--format json) für maschinenlesbare Ergebnisse hinzu. - Die List-Befehle (
traces list,traces incident,traces errors) geben eintraces-Array zurück. - Die Show-Befehle (
traces show,traces show-error,traces show-incident) geben dietrace_idund ihrespanszurück, plus einen einzelnenspan, wenn Sie--span-idübergeben. - Dies gilt sowohl für Performance Samples als auch für Error Traces und lässt sich mit
--page-allkombinieren, um durch jedes Ergebnis zu paginieren. - Ergebnisse (das JSON) werden nach stdout geschrieben, während Statusmeldungen nach stderr geschrieben werden, sodass beim Weiterleiten der Ausgabe an ein anderes Tool niemals Nicht-JSON-Text hineingemischt wird.
Shell