Skip to main content
When a request is slow and you need to see where the time went, start with the “Performance > Traces” page. That page lists the actions AppSignal has stored traces for. Select the action you want to inspect, then select one of its stored traces at a specific time. The trace page shows that one recorded request, job, or task in detail: its services, spans, metadata, related errors and logs, and the related traces for the same action. Use the page to answer three practical questions:
  • Which service or span took the time?
  • Did the trace produce an error, and where did it start?
  • What request data or tags help explain this one run?
The header shows the action name and its namespace, for example run/shop.send_waitlist_notification in celery/background. The tabs under the header switch between views of the same action: Summary, Traces, and Charts.

Service map

The service map shows the trace from the perspective of the services that took part in it: which services the request reached, and how long each call between them took. The service map appears only when a trace spans two or more services, for example when a request calls another service over HTTP or enqueues a background job. A request that stays inside one service has no map.
  • One box per service, grouped by service_name. Each box is labeled with the service name and the AppSignal application it reports to. Inside it, one row per call the service handled, so a service called twice in the same trace shows two rows. Select a row to open that service’s own view of the trace.
  • Edges are the calls between services, labeled with their duration and landing on the action row they called.
  • Hover over or focus a duration label to see its breakdown, when the call spent time outside the called service: the total duration, the duration inside the called service, and the latency between the two services.
  • Edge color rates each call against the trace’s own baseline, as fast, slow, or critical, so the slowest ones stand out without you reading every duration. A dashed edge marks a linked trace, and a dashed box marks a service from another trace.
  • Errors mark the service they happened in, not the service that called it.
Select Fullscreen to inspect the whole map and its legend.
Full-screen trace service map of a checkout request across gateway, pricing, catalog, payments, inventory, fulfillment, notifications, courier, and a linked ledger trace, with each call labeled by duration and colored by speed

The full-screen trace service map, showing the services in one trace, the calls between them, and the legend

Errors From This Trace

If the trace produced exception incidents, AppSignal shows an Errors from this trace table above the trace timeline. Use it to open the error trace view for that incident in the same trace, where you can inspect the error message, backtrace, and error causes.

Trace timeline

The timeline details the trace’s spans over time, from the start of the trace to its end. The position of each bar shows when a span started, its width shows how long the span ran, and its color shows the span group it belongs to. When AppSignal detects an N+1 query, the timeline shows a short explanation above the spans and marks the representative span with a yellow badge. Select the badge to expand that span and inspect the repeated queries. The timeline follows the operation across services. Each service is labeled in the timeline, so you can see where one service hands work to the next. You can expand the trace timeline rows if the trace has more spans than fit in that preview or select All spans to view the full timeline and its features:
  • Search spans by name, attribute, or event.
  • Filter by event type: errors, queries, or events.
  • Filter by span group, such as web server, database and ORM, HTTP, or other.
  • Filter by service, or narrow the timeline to part of the trace’s duration.
  • Expand and collapse nested spans. A badge shows how many child spans a span has, and a repeat badge such as x6 shows how often the same span ran.
  • Select a span to open its details.
Full-screen trace timeline showing spans across django, inventory, and audit services over time, with filters across the top and the selected SQL span's query and attributes on the right

The full-screen trace timeline, with filters across the top and the details of the selected span on the right

Span details

The details panel names the span and shows its kind, such as consumer, its status, its start time, and its duration. Three tabs give the rest:
  • Attributes: the span attributes, such as celery.task_name and messaging.destination, and the resource attributes, such as host.name and service.name. Select Show internal attributes to also list the attributes AppSignal adds. The trace ID and the span ID are visible only while Show internal attributes is selected.
  • Exceptions or Events: the errors and other events recorded on the span. A span that raised an error also shows a summary at the top of the panel, with an action to view the exception.
  • Related logs: the log lines linked to the span. Select View in logs to continue in the log explorer. The Related logs tab opens with its scope set to This span, so it searches only for the log lines of the span you selected. Set the scope to Entire trace to widen the search to every log line linked to the trace, across all of its spans and services.

Trace breakdown

The trace breakdown shows where the trace’s time went, split by the libraries and code that did the work, such as active_record, http_rb, or sidekiq. The legend lists each one with its total, largest first. Some traces can also show an Allocations bar with how many objects each one allocated.

Metadata

The metadata section shows when the selected subtrace occurred and then groups that subtrace’s metadata into tabs. Each tab appears only when AppSignal received that kind of data for the selected subtrace. When tags are present, the Tags tab appears first.
  • Tags: the AppSignal tags on the selected subtrace, plus its revision when present, such as hostname, queue, message_id, and revision.
  • Request headers: the HTTP headers AppSignal received for that subtrace.
  • Environment: other request values the integration reported for that subtrace. Depending on the integration, header-like values can appear here too.
  • Request query parameters: the query string parameters AppSignal received for that subtrace, when available.
  • Request payload: the request body AppSignal received for that subtrace, when available.
  • Request session data: the session values AppSignal received for that subtrace, when available.
  • Custom data and Function parameters: extra context your instrumentation added for that subtrace.
Each tag has two actions:
  • Filter narrows the Traces list to the traces of this action that carry the same value. The value stays visible above the list, and Reset clears it.
  • Search opens an overview of everything AppSignal recorded with that value. You can narrow the overview by app, namespace, time range, and type, so you see only the errors or only the performance traces that share it. Select Go to trace on any result to open it.
Use header filtering, parameter filtering, and session data filtering to control which request values your app sends. To turn a tag value into a link to your own application, use link templates. To send more tags from your app, see tagging. The trace-level Related logs box shows the log lines AppSignal could link to this trace, with their time, severity, and message. Select Open in the log view to continue in the log explorer. The panel reports when it finds no related log lines. AppSignal links a log line to a trace when the log line carries the trace’s request_id or trace_id as an attribute, or contains that identifier in its message. The panel stays empty when the operation logged nothing, when your app does not send logs to AppSignal yet, or when no log line carries the identifier. See configure logging to send logs, and link traces with logs for the identifiers. If your app records AppSignal breadcrumbs as appsignal.breadcrumb events, the page shows them in time order under Breadcrumbs. Each breadcrumb includes its time, category, action, and, when present, a message and metadata. Use them to see what led up to that trace without leaving the page. At the top of the right-hand column, Perf. trends shows the action’s performance over the last 24 hours or 30 days. For performance traces, the chart plots the P90 and the mean duration. Select 24H or 30D to change the time range, then select a point on the chart to jump the trace list to that time.

Triggers

Triggers alert you when this action gets slow. The panel lists the triggers that already exist for the action, such as Mean > 200 ms. If there are none yet, the box shows No triggers yet and an Add new link. Select Add new to open the trigger form with the namespace and action name filled in. In the form, you:
  • Choose the value to alert on, such as the mean, and the threshold above which AppSignal alerts, such as 200 ms.
  • Set an alert warm-up and an alert cooldown in minutes.
  • Add a description for the people who receive the alert.
  • Select the notifiers that receive it, such as email, Slack, PagerDuty, or OpsGenie.
Existing triggers also show whether they have open alerts, when they last fired, and a menu to edit, duplicate, or delete them. For how alerts open, close, and repeat, see anomaly detection and warm-up and cooldown.

Actions

The Actions box gives you two kinds of follow-up:
  • Time detective: review your application’s data as it was at the time of the trace.
  • JSON and Markdown exports: download or copy the trace in either format. The Markdown export includes the trace summary, related errors, span tree, breakdown, shared metadata such as session data and environment, breadcrumbs, and context.

Traces

The Traces panel lists the other stored traces for this action, each with its timestamp and duration. Select any of them to open that trace. To find a specific trace:
  • Enter a value in the tag filter field, or use the Filter action on a tag, to keep only the traces that carry that value.
  • Open the date control to pick a date and time, or choose Today, Yesterday, Last week, or Latest. Select Jump to date or Jump to latest to update the list.
  • Select Load newer traces or Load older traces to move through the list.
  • Select Reset to clear the filters and see every stored trace again.
A deploy marker between two traces shows where a new revision took over, which helps you compare traces from before and after adeploy.
AppSignal does not store a trace for every request. It stores a representative set instead, so the list shows a sample of the action’s traffic.