Last modified October 7, 2025
Service graphs
Service graphs provide an automatic visual representation of your distributed system’s architecture, generated directly from your trace data. They show how services communicate, traffic patterns, and performance characteristics - giving you instant insight into your system’s topology without any additional configuration.
What are service graphs
Service graphs are automatically generated visualizations that show:
- Service topology: How your services connect and depend on each other
- Communication patterns: Request flows and traffic volume between services
- Performance indicators: Response times and error rates for each interaction
- System health: Visual indicators of service and connection health
The graphs are created automatically as Tempo processes your traces, analyzing span relationships to understand service dependencies.
How to access service graphs
- Navigate to Explore: Click the compass icon in Grafana’s left sidebar
- Select Tempo data source: Choose your Tempo data source from the dropdown
- Switch to Service Graph: Click the “Service Graph” tab at the top of the query interface
- View the graph: The service graph will automatically load showing your system’s topology
Time range tip: Use longer time ranges (1+ hours) to see comprehensive service topology, or shorter ranges (15-30 minutes) for current service interactions.
Reading service graphs
Nodes (services)
Each circle represents a service, showing:
- Service name: From the
service.name
attribute in traces - Color coding: Green (healthy), yellow (warnings), red (errors)
- Request rate: Requests per second handled by the service
Edges (connections)
Arrows between services show:
- Direction: Who calls whom
- Thickness: Request volume (thicker = more traffic)
- Color: Health status (red for high error rates)
Key metrics displayed
- Request rates: Traffic volume between services
- Error rates: Failed request percentages
- Response times: Latency for service interactions
Common use cases
Identifying issues
- Red nodes/edges: Services or connections with high error rates
- Missing services: Services that should be present but aren’t showing up
- Thick edges with slow response: High-traffic paths with performance issues
- Isolated services: Services that aren’t communicating as expected
Understanding architecture
- Hub services: Central services that many others depend on
- Service chains: Long paths of service-to-service calls
- External dependencies: Services that call external systems
- Traffic patterns: Which services handle the most requests
Troubleshooting workflows
- Start with the service graph to get an overview of system health
- Identify problematic connections (red or slow edges)
- Click on connections to drill down to individual traces
- Use service names to filter logs and metrics for deeper analysis
Best practices
For better service graphs
- Use consistent service names: Avoid including instance IDs or dynamic values
- Instrument all service boundaries: Ensure traces capture all service-to-service calls
- Include meaningful operation names: Help differentiate between different types of calls
For effective analysis
- Start with recent time ranges for current system state
- Use longer ranges to understand overall architecture and patterns
- Combine with other data: Use service names to query metrics and logs
Next steps
To get the most value from service graphs:
Configure comprehensive tracing: Ensure all critical services are instrumented
Learn TraceQL: Use advanced queries to complement service graph insights
Set up trace-derived metrics: Configure alerting based on service graph metrics
Create service dashboards: Build custom visualizations for service health
For more information about Tempo’s service graph feature, see the Grafana Tempo documentation.
Need help, got feedback?
We listen to your Slack support channel. You can also reach us at support@giantswarm.io. And of course, we welcome your pull requests!