View service hierarchy and performance

You can use Cloud Observability’s Service diagram to get an aggregate view of trace data as a request travels through your system. The Service diagram provides a visual, interactive, and hierarchical representation of a system’s behavior for a given point in time, based on the query shown in Explorer. Service diagram

It also provides a clear visualization of inter-service relationships and insight into the performance of distributed software. You can see services both upstream and downstream from the queried service and pinpoint services that contribute to the latency of the request. The Service diagram also allows you to easily visualize a complex system architecture, identify services with errors, and quickly formulate or eliminate hypotheses.

You can also configure Cloud Observability to recognize and display inferred services in the diagram. Inferred services are external services, libraries, or dependencies that haven’t been instrumented, like a database or a third-party API. Cloud Observability recognizes these leaf spans (the request can’t continue to another service) and reports on their error counts, span counts, and average latencies.

View the Service diagram

You access the Service diagram by clicking the Service Diagram tab in Explorer. The service you queried for is centered in the diagram and shows an animated blue circle. Any services that contribute to latency are shown with a yellow halo - the larger the halo, the larger the latency. Services with errors are shown with a red halo. Inferred services have a light blue inner halo.

Latency halos only display when your query contains a service.

Hover over a service to view its status.

Click the center of a service to select it and see its information in the side panel.

Annotated service diagram

The left panel shows operations on the currently selected service with exemplar spans. You can click a span to see it in context in the Trace view.

For inferred services, the panel shows details for the service.

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.

Change the Service diagram’s display

You can change how the service diagram is displayed.

  • Use the controls to move the diagram, zoom in and out, and center in on a service.
  • Click Focus on service to see just the immediate upstream and downstream services.
  • Move the diagram by clicking and dragging.
  • Selecting and centering on a different service populates the panel with information about that service (but does not run a query).
  • Use the switch to turn the display of inferred services off and on.

Filter results

Similar to how you can filter the spans from the Trace Analysis table, you can filter spans from the side panel of the Service diagram.

When you click a filter icon on a service or operation, the Trace Analysis table repopulates to show spans from the results that match the filter. Results are taken from all spans that participate in the same traces as the original query.

You can’t filter on inferred services.

See also

Service health

Use Explorer to view span data

Monitor Microsatellites, tracers, and service reporting

Updated Apr 22, 2024