Skip to main content
Wenn Sie in der Liste „Performance > Traces” ein Trace-Sample zur Untersuchung auswählen und eine der neuesten Traces zu einem bestimmten Zeitpunkt öffnen, gelangen Sie auf die Detailseite des Performance-Traces, die dessen Service-Map, Timeline, Tags und verwandte Logs zeigt. Die Trace-Seite zeigt einen gespeicherten Trace für eine Action: eine einzelne Anfrage, einen Background-Job oder eine andere Operation, die Ihre Anwendung ausgeführt hat. Ein Trace besteht aus Spans, den einzelnen Arbeitseinheiten darin, wie einer HTTP-Anfrage, einer Datenbankabfrage oder einer Background-Task. Nutzen Sie die Seite, um zu sehen, wo die Operation Zeit verbracht hat, ihren Kontext und ihre Logs zu prüfen und zu entscheiden, was als Nächstes zu tun ist. Der Header zeigt den Namen der Action und ihren Namespace, zum Beispiel run/shop.send_waitlist_notification in celery/background. Die Tabs unter dem Header wechseln zwischen Ansichten derselben Action: Summary, Traces und Charts.

Service-Map

Die Service-Map zeigt den Trace aus der Perspektive der beteiligten Services: welche Services die Anfrage erreicht hat und wie lange jeder Aufruf zwischen ihnen gedauert hat. Sie erscheint nur, wenn ein Trace mehr als einen Service durchläuft, denn ein Trace, der innerhalb eines einzigen Services bleibt, hat nichts zum Abbilden.
  • Eine Box pro Service, gruppiert nach service_name. Jede Box ist mit dem Servicenamen und der AppSignal-Anwendung beschriftet, an die er berichtet. Darin befindet sich eine Zeile pro Aufruf, den der Service verarbeitet hat, sodass ein Service, der zweimal im selben Trace aufgerufen wird, zwei Zeilen zeigt. Wählen Sie eine Zeile aus, um die eigene Sicht dieses Services auf den Trace zu öffnen.
  • Kanten sind die Aufrufe zwischen Services, beschriftet mit ihrer Dauer, und enden auf der Action-Zeile, die sie aufgerufen haben. Dies umfasst synchrone Aufrufe, wie eine HTTP-Anfrage, und asynchrone, wie eine Web-App, die einen Background-Job einreiht.
  • Die Kantenfarbe bewertet jeden Aufruf gegenüber der eigenen Baseline des Traces als schnell, langsam oder kritisch, sodass die langsamsten Hops auffallen, ohne dass Sie jede Dauer lesen müssen. Eine gestrichelte Kante kennzeichnet einen verknüpften Trace, und eine gestrichelte Box kennzeichnet einen Service aus einem anderen Trace.
  • Fehler markieren den Service, in dem sie aufgetreten sind, nicht den Service, der ihn aufgerufen hat.
Die Legende erklärt jede Farbe und jeden Rahmen, und Sie können sie einklappen, um mehr von der Map zu sehen.
Service-Map eines einzelnen Traces über einen Bot-, Web-, Payments- und Sidekiq-Service hinweg, wobei jeder Aufruf mit Dauer beschriftet und nach Geschwindigkeit eingefärbt ist

Die Trace-Service-Map, die die Services in einem Trace und die Aufrufe zwischen ihnen zeigt

Trace-Timeline

Wenn Sie ein Trace-Sample zu einem bestimmten Zeitpunkt auswählen, ordnet die Timeline die Spans des Traces zeitlich an, vom Beginn des Traces bis zu seinem Ende. Die Position jedes Balkens zeigt, wann ein Span begonnen hat, seine Breite zeigt, wie lange der Span lief, und seine Farbe zeigt die Span-Gruppe, zu der er gehört. AppSignal markiert auch hier Probleme, etwa ein N+1-Event: dieselbe Query, die in einer Operation viele Male wiederholt wird. Die Timeline folgt der Operation über Services hinweg. In einem Stroopwafel-Shop kann eine Django-Anfrage einen Celery-Task einreihen, der Task sendet eine E-Mail, und ein Audit-Service protokolliert das Ergebnis. Jeder Service ist in der Timeline beschriftet, sodass Sie sehen können, wo ein Service die Arbeit an den nächsten übergibt. Wählen Sie All spans, um die Vollbild-Timeline zu öffnen. Dort können Sie:
  • Spans nach Name, Attribut oder Event suchen.
  • Nach Event-Typ filtern: Errors, Queries oder Events.
  • Nach Issue filtern, etwa N+1-Queries.
  • Nach Span-Gruppe filtern, etwa Webserver, Datenbank und ORM, HTTP oder Sonstiges.
  • Nach Service filtern oder die Timeline auf einen Teil der Trace-Dauer eingrenzen.
  • Verschachtelte Spans auf- und zuklappen. Ein Badge zeigt, wie viele untergeordnete Spans ein Span hat, und ein Wiederholungs-Badge wie x6 zeigt, wie oft derselbe Span ausgeführt wurde.
  • Einen Span auswählen, um seine Details zu öffnen.
Trace-Timeline, die die Spans einer Anfrage im Zeitverlauf, die Event- und Span-Gruppen-Filter sowie die Attribute des ausgewählten Spans zeigt

Die Vollbild-Trace-Timeline mit den Details des ausgewählten Spans

Span-Details

Das Detailpanel benennt den Span und zeigt seine Art, wie consumer, seinen Status, seine Startzeit und seine Dauer. Drei Tabs liefern den Rest:
  • Attributes: die Span-Attribute, wie celery.task_name und messaging.destination, sowie die Ressourcen-Attribute, wie host.name und service.name. Wählen Sie Show internal attributes, um zusätzlich die von AppSignal hinzugefügten Attribute aufzulisten. Die Trace-ID und die Span-ID sind nur sichtbar, während Show internal attributes ausgewählt ist.
  • Exceptions oder Events: die auf dem Span erfassten Fehler und anderen Events. Ein Span, der eine Exception ausgelöst hat, zeigt oben im Panel auch eine Zusammenfassung mit einer Aktion, um die Exception anzuzeigen.
  • Related logs: die mit dem Span verknüpften Log-Zeilen. Wählen Sie View in logs, um im Log-Explorer fortzufahren.
Der Tab Related logs öffnet sich mit dem Umfang This span, sodass er nur nach den Log-Zeilen des ausgewählten Spans sucht. Setzen Sie den Umfang auf Entire trace, um die Suche auf alle Log-Zeilen auszuweiten, die mit dem Trace verknüpft sind, über alle seine Spans und Services hinweg.

Trace-Aufschlüsselung

Die Trace-Aufschlüsselung fasst den gesamten Trace in zwei gestapelten Balken zusammen. In beiden ist jedes Segment eine der Bibliotheken, die die Arbeit erledigt haben, wie active_record, http_rb oder sidekiq, und die Legende listet jede Bibliothek mit ihrer eigenen Gesamtsumme auf, die größte zuerst.
  • Durations: wie viel von der Zeit des Traces auf jede Bibliothek entfällt.
  • Allocations: wie viele Objekte jede Bibliothek allokiert hat, mit der Gesamtsumme des Traces in der Überschrift.

Tags

Tags sind die mit dem Trace erfassten Schlüssel-Wert-Paare, wie hostname, queue, message_id und revision. Jeder Tag hat zwei Aktionen:
  • Filter grenzt die Traces-Liste auf die Traces dieser Action ein, die denselben Wert tragen. Der Wert bleibt oberhalb der Liste sichtbar, und Reset setzt ihn zurück.
  • Search öffnet eine Übersicht über alles, was AppSignal mit diesem Wert erfasst hat. Sie können die Übersicht nach App, Namespace, Zeitraum und Typ eingrenzen, sodass Sie nur die Fehler oder nur die Performance-Traces sehen, die ihn teilen. Wählen Sie Go to trace bei einem Ergebnis, um es zu öffnen.
Um einen Tag-Wert in einen Link zu Ihrer eigenen Anwendung umzuwandeln, verwenden Sie Link-Templates. Um mehr Tags aus Ihrer App zu senden, siehe Tagging. Die mit diesem Trace verknüpften Log-Zeilen, mit ihrer Zeit, ihrem Schweregrad und ihrer Nachricht. Im Stroopwafel-Beispiel zeigen sie den Start des Waitlist-Tasks, das Fehlschlagen des E-Mail-Versands und den darauffolgenden Wiederholungsversuch. Wählen Sie Open in the log view, um im Log-Explorer fortzufahren. Das Panel meldet, wenn es keine verwandten Log-Zeilen findet. AppSignal verknüpft eine Log-Zeile mit einem Trace über eine gemeinsame request_id oder trace_id, sodass das Panel leer bleibt, wenn die Operation nichts protokolliert hat, wenn Ihre Anwendung noch keine Logs an AppSignal sendet oder wenn die Kennung in einem der beiden fehlt. Siehe Logging konfigurieren, um Logs zu senden, und Traces mit Logs verknüpfen für die Kennungen.

Request-Details

Bei Web-Anfragen zeigt die Seite auch die von AppSignal empfangenen Rohdaten, in drei Panels:
  • Request-Header: die mit der Anfrage gesendeten HTTP-Header. Verwenden Sie Header-Filterung, um zu wählen, welche Header Ihre Anwendung sendet.
  • Request-Payload: der Anfrage-Body, wie eine GraphQL-Query und ihre Variablen. Verwenden Sie Parameterfilterung, um sensible Werte fernzuhalten.
  • Session-Daten der Anfrage: die Session-Werte für die Anfrage. Verwenden Sie Session-Datenfilterung, um sensible Werte fernzuhalten.
Ein Diagramm der Performance der Action über die letzten 24 Stunden oder 30 Tage.

Trigger

Trigger benachrichtigen Sie, wenn diese Action langsam wird. Das Panel listet die für die Action bereits bestehenden Trigger auf, wie Mean > 200 ms. Wählen Sie Add new, um das Trigger-Formular mit ausgefülltem Namespace und Action-Namen zu öffnen. Im Formular:
  • Wählen Sie den Wert, auf den alarmiert werden soll, wie den Mittelwert, und den Schwellenwert, oberhalb dessen AppSignal alarmiert, wie 200 ms.
  • Legen Sie ein Alert-Warm-up und ein Alert-Cooldown in Minuten fest.
  • Fügen Sie eine Beschreibung für die Personen hinzu, die den Alert erhalten.
  • Wählen Sie die Notifier aus, die ihn erhalten, wie E-Mail, Slack, PagerDuty oder OpsGenie.
Wie Alerts geöffnet, geschlossen und wiederholt werden, erfahren Sie unter Anomaly detection und Warm-up und Cooldown.

Actions

  • Time Detective: die Daten Ihrer Anwendung so betrachten, wie sie zum Zeitpunkt des Traces waren.
  • Send to your issue tracker: ein Issue aus dem Trace erstellen. Diese Aktion erscheint, wenn ein Tracker verbunden ist, und ihre Beschriftung entspricht diesem Tracker, wie GitHub, GitLab, Jira oder Linear. Siehe Integrationen.

Traces

Das Traces-Panel listet die anderen gespeicherten Traces für diese Action auf, jeweils mit Zeitstempel und Dauer. Wählen Sie einen davon aus, um diesen Trace zu öffnen. Um einen bestimmten Trace zu finden:
  • Geben Sie einen Wert in das Tag-Filterfeld ein, oder verwenden Sie die Aktion Filter bei einem Tag, um nur die Traces zu behalten, die diesen Wert tragen.
  • Öffnen Sie die Datumssteuerung, um ein Datum und eine Uhrzeit zu wählen, oder wählen Sie Today, Yesterday, Last week oder Latest. Wählen Sie Jump to latest, um zu den neuesten Traces zurückzukehren.
  • Wählen Sie Load newer traces oder Load older traces, um sich durch die Liste zu bewegen.
  • Wählen Sie Reset, um die Filter zu leeren und wieder jeden gespeicherten Trace zu sehen.
Ein Deploy-Marker zwischen zwei Traces zeigt, wo eine neue Version übernommen hat, was Ihnen hilft, Traces von vor und nach einem Deploy zu vergleichen.
AppSignal speichert nicht für jede Anfrage einen Trace. Stattdessen wird ein repräsentativer Satz gespeichert, sodass die Liste eine Stichprobe des Traffics der Action zeigt.