Skip to main content
APM shows how your services answer requests. Every number in it is computed from the spans your services send — there is no separate APM agent and no separate APM data stream.
Before you start. You need traces arriving from at least one service — see Send data with OpenTelemetry. Each service must set service.name, because that is how APM decides which project a span belongs to.

Where to start

The APM section opens on three views. Everything else is reached by choosing a project first.

What a project is

A project is a named record that claims services by name:
  • A project claims the service whose service.name equals the project’s own name, with no further setup. A project called checkout shows the spans of a service reporting as checkout.
  • You can add more services to it under Manage → Settings → Services, for a project named after a business capability that spans several services — for example checkout covering cart, catalogue and user.
A service that sends spans but that no project claims still appears in the Projects list, marked unregistered. Clicking it opens its traces, but it has no project dashboard until a project claims it. To create a project, choose Add APM project on the Projects view. The dialog offers four types — APM, Infrastructure, Logs and Kubernetes — and, for APM, a language. The type does not change which telemetry the project covers; it is a label and part of the project’s identity. Creating the same name, type and language twice returns the existing project rather than a second one.
A service belongs to one project. Adding a service that another project already claims is refused with Already mapped, naming the project that holds it. Remove it there first, then add it here.

Inside a project

Choosing a project opens its dashboard, with a side navigation grouped into five parts: Every view uses the time range in the toolbar. Changing it reloads every panel together, so no two panels on a page describe different windows.

The project dashboard

The dashboard answers “is anything wrong” first and “where” second:
  • Golden signals across the top — services, requests, span error rate and average response time — each compared with the window immediately before the current one.
  • Requests over time and Errors over time.
  • Response time, switchable between the average per service, the time spent in each layer, and p50/p95/p99 percentiles for the whole project.
  • Status codes (HTTP responses only) and a Response time distribution.
  • Slowest services, Error rate by service, Apdex and Slowest transactions.

How the numbers are counted

Requests are not spans. An earlier way of counting treated every span as a request, which inflates throughput by each service’s fan-out. APM counts server spans only, so its request figures are lower than the span count in the trace explorer, and that is expected.

How APM relates to traces

APM and the trace explorer read the same spans.
  • Session Traces inside a project lists that project’s traces. A trace the project took part in arrives whole, across every service it crossed — the project decides which traces are listed, not which spans of a trace you see.
  • Trace on the account-level strip lists every trace on the account.
  • Opening a trace from an error, an HTTP failure or a slow database operation shows the same waterfall. See Exploring traces for reading it.

Views that are not served yet

Some views in the project navigation are built but wait on an API route that does not exist yet. External requests, JVM metrics, JVM threads and Go routines are among them. These views say so — “This needs …, which the API does not serve yet” — rather than drawing an empty chart that would look like an idle service.

Troubleshooting

A project with no telemetry in the selected window shows <name> is not reporting yet. Check that your service sets service.name to exactly the project’s name — for an OpenTelemetry SDK, OTEL_SERVICE_NAME — or add the name your service reports under Manage → Settings → Services. Then widen the time range: a service that was quiet in the window has nothing to show in it. The page fills in once the first span arrives.
Nothing reporting, and no projects registered means no service has sent a span and no project exists yet. A row appears as soon as a service sends a span or a project is created. See Send data with OpenTelemetry.
It is sending spans, but no project claims its name. Create a project with that name, or add the service to an existing project under Manage → Settings → Services.
Project not found means the link names a project that does not exist on this account — it may have been deleted, or belong to another organization. projectId is required means the address holds something other than a project id, such as a service name. Open the project from the Projects list instead.
Transactions lists spans that carry both an HTTP method and http.route. A span without the route — common when a framework is not auto-instrumented — is still counted in the dashboard’s requests and response time, but it has no route to be listed under.

Next

Exploring traces

Read the traces behind these numbers.

Services and the service map

How your services call each other.

Real user monitoring

What your users’ browsers experience.

Alerting

Get notified when a number moves.