Datadog can automatically discover the dependencies for an instrumented service, such as a database, a queue, or a third-party API, even if that dependency hasn’t been instrumented yet. By analyzing outbound requests from your instrumented services, Datadog infers the presence of these dependencies and collects associated performance metrics.
With the new inferred entities experience, you can filter Service Catalog entries by entity type, such as database, queue, or third-party API. This allows you to better visualize service dependencies using the Service Page dependency map and APM features.
To determine the names and types of the inferred service dependencies, Datadog uses standard span attributes and maps them to peer.* attributes. For the full list of peer.* attributes, see Inferred service dependencies nomenclature. Inferred external APIs use the default naming scheme net.peer.name. For example, api.stripe.com, api.twilio.com, us6.api.mailchimp.com. Inferred databases use the default naming scheme db.instance.
If you’re using the Go, Java, NodeJS, PHP, .NET, or Ruby tracer, you can customize the default names for inferred entities.
Note: If you configure monitors, dashboards, or notebooks for a given inferred service during the beta, you may need to update them if the naming scheme changes. Read more about migration steps in the opt-in instructions.
Service page Dependency map
Use the dependency map to visualize service-to-service communication and gain insight into system components such as databases, queues, and third-party dependencies. You can group dependencies by type and filter by Requests, Latency, or Errors to identify slow or failing connections.
Opt in
Only go through migration steps once Datadog support confirmed the feature is enabled for you on the Datadog side.
The following steps introduce a breaking change: Datadog will change the way service names are captured by default. Refer to Global default service naming migration, to determine if you need to take any migration actions.
The minimum Java tracer version required is 1.16.0. Regular updates to the latest version are recommended to access changes and bug fixes.
The minimum NodeJS tracer versions required are 2.44.0, 3.31.0, or 4.10.0. Regular updates to the latest version are recommended to access changes and bug fixes.
To opt in, add the following environment variables or system properties to your tracer settings:
When you enable the DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED environment variable, it improves how service-to-service connections and inferred services are represented in Datadog visualizations, across all supported tracing library languages and integrations.
Previously, some tracing libraries included the name of the associated integration in service name tagging. For example, .NET tagged gRPC calls as service:<DD_SERVICE>-grpc-client while Python tagged them as service:grpc-client. With this option enabled, all supported tracing libraries tag spans from the downstream services with the calling service’s name, service:<DD_SERVICE>, thereby providing a global default service name.
_
Before
After
Service name
service:my-service-grpc-client or service:grpc-client
service:myservice
additional peer.* attributes
No peer.* tags set
@peer.service:otherservice (otherservice being the name of the remote service being called with gRPC)
Similarly, for a span representing a call to a mySQL database:
_
Before
After
Service name
service:my-service-mysql or service:mysql
service:myservice
additional peer.* attributes
No peer.* tags set
@peer.db.name:user-db, @peer.db.system:mysql
Consequently, if you have existing:
APM metrics
APM custom span metrics
Trace analytics
Retention filters
Sensitive data scans
Monitors, dashboards, or notebooks
And these target similar service names, update those items to use the global default service tag (service:<DD_SERVICE>) instead.
Further reading
Additional helpful documentation, links, and articles: