Service (APM)
In APM, a service is the name given to a set of processes that do the same job, and it is the first unit at which Datadog APM bundles traces and aggregates performance. An API with a group of endpoints or a database with a group of queries becomes a single service, and the name is determined by the instrumentation configuration.
Overview
A service is the first unit at which Datadog APM bundles the spans it collects, and it is the name given to a set of processes that do the same job. The official documentation's examples are grouping a set of URL endpoints into an API service, a set of database queries into a single database service, and a set of scheduled jobs into a crond service. Trace metrics for throughput, latency, and error rate are aggregated per service, and the service is the unit for the service page, the service map, and the catalog listing. Because the name is determined by the instrumentation library's configuration and the service tag, inconsistent naming splits services and fragments both the aggregation and the screens. The times to care are before you add instrumentation, and when the service list has grown and become hard to see through.
The name given to a set of processes that do the same job
An APM service is the name given to a set of processes that do the same job. The official documentation uses web frameworks and databases as examples. It describes it as a grouping of endpoints, queries, and jobs, as the unit whose instances are scaled up and down (as of September 2026, Source: APM Terms and Concepts / Service Page). It also shows 3 concrete examples: a set of URL endpoints is grouped into an API service, a set of database queries into a single database service, and a set of scheduled jobs into a crond service. Since every Span that makes up a Trace carries a service name, the service is the first axis along which APM data is bundled. All services are listed in the Catalog, and in the Service Map each is drawn as a single circle in the picture of dependencies.
Where the name is decided - base service and 2 kinds of overrides
The starting point for a service name is the default name set in the instrumentation library with DD_SERVICE. The official documentation calls this the base service (as of September 2026, Source: Base Service, Integration Overrides, and Custom Overrides). However, individual spans can carry a different service name, and that is where the 2 kinds of overrides come in. An integration override is when the Datadog SDK automatically gives client-side spans a different name to represent a database, a queue, or an external dependency. A custom override is one a person adds by hand to distinguish a shared library or middleware layer. The distinction between environments and releases is not mixed into the name but carried in the env and version tags. The meaning of this set of 3 is left to the Tagging explainer.
| Name | Who assigns it | What it represents |
|---|---|---|
| base service | The default name in the instrumentation configuration (DD_SERVICE) | The set of processes itself |
| integration override | Assigned automatically by the SDK's integrations | A database, queue, or external dependency as seen from the client span |
| custom override | Assigned by hand by the user | A specific component inside the service, such as a shared library or middleware layer |
Why the endpoint you expected does not show up on the service page
Even after aligning service names, an HTTP endpoint that should be there sometimes does not appear on the service page. The official documentation answers this question in a note (as of September 2026, Source: APM Terms and Concepts). What links an endpoint to a service is not only the service name; the span.name of the span that serves as the entry point of that trace is also a condition. The example given is a web store service where the entry span name is web.request. In other words, even if spans claim the same service name, when the entry span name is something else, the endpoint appears in a different place. When you have written instrumentation yourself, or when a framework's automatic instrumentation is mixed with hand-written spans, remembering this condition gets you to the cause quickly.
The numbers to look at first on the service page
Selecting a service in the catalog opens the service page (as of September 2026, Source: Service Page). The official documentation lists 7 things you can see there: the service's health, monitor status, Watchdog Insights, summary cards, default graphs, the list of resources, and dependencies. Additional sections such as deployments and Error Tracking follow. The default graphs are 4: Requests and Errors, Errors, Latency, and Avg Time per Request, lining up the 3 faces of performance. The summary cards show a digest of recent deployments, Error Tracking issues, SLO, ongoing incidents, and security signals. The list of resources can be sorted by request count, latency, errors, and time, and points to the busy operations and the broken ones. It functions as the unit of watching because monitors and SLOs can be placed at this unit.
How to consolidate services that have split
The typical form of naming drift is mixing the hostname, environment name, or version into the service name. The same job gets split into separate services, and both the aggregation and the service map become fragmented. To consolidate, fix the base service to a single DD_SERVICE, and carry environment differences in the env tag and release differences in the version tag. The other source of bloat is integration overrides. The official documentation states that when an inferred entity representing the dependency exists, the integration override is unnecessary and can clutter the service list and the map. Unneeded overrides can be removed through the UI or a configuration change (as of September 2026, Source: Base Service, Integration Overrides, and Custom Overrides). The billing units are hosts and span volume, and that mechanism is in the APM explainer. The times to care are when you set conventions before instrumenting, and when the list has grown and become hard to see through.