You can use a dependency map to get an aggregate view of trace data as a request travels through your system. The map provides a visual, interactive, and hierarchical representation of a system’s behavior for a given point in time, based on a span query. You create a dependency map by querying on any span data (for example service, operation, or attribute key), and you can add filters to narrow in on operations or other attributes. Dependency map

Dependency maps also provide a clear visualization of inter-service relationships and insight into the performance of distributed software. You can see services (and optionally operations) both upstream and downstream from the queried service and pinpoint services or operations that contribute to the latency of the request. Maps also allow you to easily visualize a complex system architecture, identify services or operations with errors, and quickly formulate or eliminate hypotheses.

You can also configure Cloud Observability to recognize and display inferred services in the map. Inferred services are external services, libraries, or dependencies that haven’t been instrumented with traces, like a database or a third-party API. Cloud Observability checks leaf spans (spans that don’t connect to another instrumented service) against any inferred service rules you’ve configured. When Cloud Observability infers a service from those rules, it reports the that service’s error counts, span counts, and average latencies.

The diagram edges represent relationships between spans and is dependent on the quality of your instrumentation. Missing spans may cause edges to appear when there is no parent-child relationship.
The following can cause missing spans:
* The Microsatellite dropped the span (for example, your Microsatellite pool is not auto-scaling to keep up with traffic)
* The tracer dropped the span (for example, your application crashed or never called span.flush() )
* There is an issue with your instrumentation (context was dropped, or the service with a parent span is not instrumented).

When you see missing spans, check the Reporting Status page to find the culprit.

In the map, services/operations that contribute to latency are shown with a yellow halo - the larger the halo, the larger the latency. Services/operations with errors are shown with a red halo. Inferred services have a light blue inner halo.

Annotated map

Dependency maps refresh every 5 minutes.

Add a dependency map

You can add a dependency map to a notebook or a dashboard, or from the Service Directory.

  • Add to a notebook:
    Click the + icon and choose Add a dependency map. By default, the map is for your full system.

  • Add to a dashboard:
    Click Add and choose Dependency map. By default, the map is for your full system.

  • Add from the Service Directory:
    From the Deployments tab, click Create dependency map. The map is added to a new notebook and the query is filtered to the service and operation selected in the Service Directory.

You can edit the query as needed. Note the following:

  • Queries can be on services, operations, or attributes.
  • Queries can’t include an aggregation, group-by, or latency percentiles.
  • You can’t use more than one query or a formula

Cloud Observability builds the dependency map from sampled data on your spans. The span table below the map shows exemplar spans used to build the map.Span table You can click a span row to open it in the Trace view.

Hover over a service or operation in the map to view information about it. Dotted lines show direct ancestors and dependencies. Click View time series charts in notebook to add latency, error rate, and operation rate charts for the selected node to a notebook.Service details in a dependency map

Change the dependency map display

This image shows how to change the map’s display. The steps below describe the procedure in more detail.Change the map's display

  1. By default, the map shows relationships between services. You can change it to display operations by clicking the Operations button.

  2. Also by default, the map shows all dependencies. Use the dropdown to view immediate, upstream, or downstream dependencies.

  3. Change the size of the map:

    • Zoom in and out (you can also use your mouse or track pad to zoom)
    • Expand the map to fit the current container
    • Open the map in full-screen mode
    • Center in on a selected service
  4. Move the diagram by clicking and dragging.

  5. Toggle the display of inferred services.

Filter span table

You can filter the span table to show only spans from a selected service or operation. Click the node (selected nodes display a blue circle) and the table populates with spans only from the selection. Return to the full set of spans by clicking Remove filter. Filter table

You can’t filter on inferred services.

See also

Query your data

Dashboards

Notebooks

Updated Mar 15, 2024