Google Cloud Cloud Trace: Follow Every Request and Find Where the Time Goes

Google Cloud Cloud Trace: Follow Every Request and Find Where the Time Goes

A beginner-friendly, book-style guide to Cloud Trace, the distributed tracing service in Google Cloud that shows how a single request travels through your services, how long each step takes, and where slowness and errors hide.

Imagine you order a pizza and it arrives an hour late. You call the shop and ask what happened. The shop says the order was taken, the dough was made, the pizza was baked and the driver was sent. Everyone did their part, yet somehow the pizza was an hour late. Now imagine the shop had a stopwatch on every step, and a printout showing that the pizza waited forty minutes for a free driver. Suddenly the problem is obvious. Cloud Trace is that stopwatch for software requests.

This guide assumes you know nothing about tracing or monitoring. Every new word is explained the first time it appears, with a simple comparison from daily life. By the end you will understand what Cloud Trace is, how traces and spans work, how data reaches the service, how to read it, how to find real bottlenecks, how to keep it safe and affordable, and how it fits with logs and metrics.

1What Is Cloud Trace and Why Does It Exist?

Cloud Trace is a distributed tracing system that tracks how long requests take as they pass through your application.

The problem with modern applications

Old applications were often one big program running on one machine. When something was slow, you looked at that one program. Modern applications are different. A single click on a web page may trigger a web server, an authentication service, a product service, a payment service, a database and a message queue. These pieces may run on different machines, written by different teams, in different languages. When the page is slow, nobody can say which piece is to blame, and each team insists their part is fast.

What the service does

Cloud Trace collects timing data from your applications and shows the full journey of a request. It answers questions such as: how long do requests take overall, which step takes the most time, has latency grown over time, which services does my application depend on, and where do errors begin. It works for traditional services and, increasingly, for applications that use generative AI models and tools.

Simple Analogy

A parcel tracking page shows every stop a parcel made, with the time spent at each depot. Cloud Trace is the tracking page for a request, with a depot for every service it visited.

Latency
the main thing a trace measures: how long each step takes
Spans
the individual timed steps that make up a trace
OpenTelemetry
the open standard recommended for sending trace data
i
Good to Know

Tracing answers where time was spent for individual requests. It complements logs, which say what happened, and metrics, which say how much and how often. You usually want all three.

2Core Concepts in Plain English

Twelve words you will meet in every tracing conversation.

Term 1

Trace

The complete record of one request as it moves through all the services involved, from start to finish.

Term 2

Span

One timed piece of work inside a trace, such as a database call or a call to another service.

Term 3

Root span

The first span of a trace, representing the whole request as seen by the first service.

Term 4

Parent and child

A span that starts other spans is their parent. The spans it starts are its children, forming a tree.

Term 5

Attribute

A key and value attached to a span, such as the name of the route or the database table used.

Term 6

Event

A time-stamped note inside a span, such as cache miss or retry started.

Term 7

Instrumentation

The act of adding tracing to an application, so it creates spans and sends them out.

Term 8

Context propagation

Passing the trace identity from one service to the next, so their spans join the same trace.

Term 9

Sampling

Choosing to record only some requests, rather than every one, to control volume and cost.

Term 10

Exporter and collector

An exporter sends spans out of an application. A collector is an optional helper process that receives, batches and forwards them.

Term 11

Latency

The time something takes, usually measured in milliseconds.

Term 12

Bottleneck

The slowest step that limits how fast the whole request can complete.

Hold on to the picture: a trace is a tree of spans, each span is a stopwatch reading, and context propagation is what ties them into one story.

3Traces, Logs and Metrics: The Three Signals

Observability rests on three kinds of data, and each answers a different question.

Observability means being able to understand what a system is doing by looking at the data it produces. Three signals are used together. Metrics are numbers over time, such as requests per second or error rate. Logs are text records of events, such as a user logged in or a payment failed. Traces are the journeys of individual requests, with timing for every step. Each has strengths and blind spots.

SignalQuestion it answersStrengthBlind spot
MetricsHow much, how often, how fast on average?Cheap, great for alerts and trendsHides individual requests
LogsWhat exactly happened at this moment?Rich detail and contextHard to follow one request across services
TracesWhere did the time go for this request?Shows the whole journey with timingNeeds instrumentation and sampling
flowchart LR
M["Metrics: something is slow"] --> T["Traces: where it is slow"]
T --> L["Logs: why it is slow"]
L --> F["Fix the cause"]
        
FIG 1 — A common investigation path across the three signals
Simple Analogy

A hospital uses a thermometer reading to see that a patient has a fever, a scan to find where the problem is, and the patient’s notes to learn the cause. Metrics are the thermometer, traces are the scan and logs are the notes.

i
Tip

Start investigations from a metric alert, jump to a trace of a slow request, then open the logs from the exact slow span. Cloud Trace and Cloud Logging are designed to link in this way.

4Anatomy of a Trace

A trace looks like a tree, and shows up on screen as a waterfall of bars.

Imagine a customer opens a product page. The web frontend receives the request, which becomes the root span. To build the page, the frontend asks the product service for details, and asks the recommendation service for suggestions. The product service reads the database. The recommendation service calls a cache first, then a machine learning model. Each of these steps is a span, and each span knows its parent. Together they form a tree. Shown on a timeline, each span becomes a horizontal bar, with the width showing duration and the position showing when it began.

flowchart TD
R["Root span: Frontend handles page request"] --> P["Span: Product service call"]
R --> C["Span: Recommendation service call"]
P --> D["Span: Database query"]
C --> K["Span: Cache lookup"]
C --> ML["Span: Model prediction"]
        
FIG 2 — One trace shown as a tree of spans

Reading the waterfall

1

Find the longest bar

The widest span is the biggest consumer of time overall, but remember that a parent includes the time of its children.

2

Look for self time

The time in a span that is not explained by its children is its own work, and points to slow code inside that service.

3

Spot gaps

Empty space between spans may mean waiting for a queue, a lock, a network hop or a cold start.

4

Check parallel and serial work

Bars that stack one after another show serial work. Bars that overlap show parallel work. Serial steps that could be parallel are a classic fix.

5

Read the attributes and events

They show which route, query or retry occurred, giving clues about why the span was slow.

Simple Analogy

A project plan chart shows tasks as bars along a timeline. Some tasks happen one after another, some at once, and a long gap tells you someone was waiting. A trace waterfall is the project plan of a single request.

!
Common Misconception

The longest span is not always the problem. A parent span is long because its children are long. Always look for the span with the largest time of its own, or a long chain of serial calls.

5Architecture and Data Flow

How spans travel from your application to a screen in the console.

A tracing client inside your application records spans while requests are handled. These spans are batched and exported, either directly to Google Cloud or through a collector running beside the application. They arrive at Google Cloud’s ingestion endpoint, are stored in your project, and appear in the Trace Explorer, where you can filter, aggregate and inspect them. Your data stays in your own Google Cloud project.

flowchart LR
APP["Application with tracing client"] --> EXP["Exporter"]
EXP --> COL["OpenTelemetry Collector (optional)"]
COL --> ING["Telemetry API: OTLP ingestion"]
EXP --> ING
ING --> STORE["Trace storage in your project"]
STORE --> EXPL["Trace Explorer"]
STORE --> ANA["Log Analytics: SQL over traces"]
        
FIG 3 — The path of trace data from application to console
Part 1

Tracing client

Library code in your application that creates spans and attaches attributes.

Part 2

Exporter

Sends finished spans out in batches, using a standard protocol such as OTLP.

Part 3

Collector

An optional process that receives spans, then batches, retries, filters and encrypts them before forwarding.

Part 4

Ingestion API

The Google Cloud endpoint that receives trace data, authenticated by identity and access management.

Part 5

Storage

Spans are stored in your project for a limited retention period.

Part 6

Explorer and analytics

The console tools for visualizing, filtering and querying traces.

Simple Analogy

Delivery drivers record timestamps on a handheld device. A depot clerk collects them in batches and uploads them to head office, where a dashboard shows every parcel’s journey. The handheld is the client, the clerk is the collector and head office is Cloud Trace.

6Instrumentation with OpenTelemetry

OpenTelemetry is the open standard that teaches your applications to emit traces.

OpenTelemetry is an open source, vendor neutral framework for producing telemetry, meaning traces, metrics and logs. It is the recommended way to instrument applications for Cloud Trace. Because it is a standard, the same instrumentation can send data to Cloud Trace today and to another tool tomorrow, without rewriting your application. Older Cloud Trace specific client libraries still exist, but new work should use OpenTelemetry.

Automatic and manual instrumentation

Approach 1

Automatic instrumentation

Ready-made plugins that wrap popular frameworks, web servers, database drivers and HTTP clients, so spans appear with little or no code change. The fastest way to get started.

Approach 2

Manual instrumentation

You create spans around your own important operations, such as a pricing calculation, and add attributes that carry business meaning.

Approach 3

Platform provided tracing

Some Google Cloud services create spans for you, such as load balancers and certain client libraries, giving visibility without your own code.

1

Enable the needed APIs

Turn on the tracing related services in your project, and make sure the identity running your app may write trace data.

2

Add OpenTelemetry to the application

Install the library for your language and enable automatic instrumentation for your framework and clients.

3

Configure the exporter

Point it at Google Cloud’s ingestion endpoint, directly or through a collector, and set a sampling rate.

4

Add custom spans where it matters

Wrap business critical steps, and attach attributes that help you filter later, without adding sensitive data.

5

Verify in the Trace Explorer

Send test traffic, find the traces and confirm that services appear connected in one trace.

Simple Analogy

Putting a speedometer in a car is easy if a standard socket exists on the dashboard. OpenTelemetry is the standard socket, so any dashboard tool can plug in later.

!
Common Mistake

Instrumenting only one service and wondering why traces look short. A trace is only as complete as the services that take part. Instrument every service on the critical path, and make sure context is passed between them.

7Context Propagation: Keeping the Story Together

Without a shared trace identity, spans from different services remain strangers.

When service A calls service B, how does B know it is part of A’s trace? The answer is context propagation. Service A adds a small piece of information to the outgoing request, usually in a request header. This carries the trace identifier, the identifier of the calling span, and a flag that says whether the trace is being recorded. Service B reads this header, creates its spans as children of A’s span, and passes the same information on to its own downstream calls.

sequenceDiagram
participant U as User
participant A as Service A
participant B as Service B
participant D as Database
U->>A: Request
A->>A: Start root span, create trace ID
A->>B: Call with trace context in headers
B->>B: Read context, start child span
B->>D: Query with same trace
D-->>B: Result
B-->>A: Response
A-->>U: Response and finish root span
        
FIG 4 — Trace context travelling with a request
Format 1

W3C Trace Context

The open standard header format, now widely supported by languages, frameworks and cloud platforms. The recommended choice.

Format 2

Google Cloud specific header

An older Google format that some Google Cloud components use. Libraries can translate between formats so traces stay connected.

Format 3

Baggage

Extra key and value pairs, such as a tenant name, that travel with the request. Use with care, since they are sent to every service.

Simple Analogy

A relay race uses a baton. Each runner passes it on, and the finish line knows which team it belongs to. The trace context is the baton, and dropping it means the next runner’s lap is recorded as a separate race.

!
Common Mistake

Losing context across queues, background jobs or proxies that strip unknown headers. If traces break at a certain hop, check whether the headers are forwarded, and carry the context inside the message for queues.

8Sampling: Recording the Right Amount

Recording every request is expensive, so most systems record only a share of them.

A busy service can handle thousands of requests per second. Recording a full trace for each would create huge volumes of data and cost, with little extra insight, since most requests look alike. Sampling decides which traces to keep. A small, well chosen sample still shows the typical behavior and the rare problems, as long as it is chosen with care.

Method 1

Fixed rate sampling

Keep a set fraction of requests, such as one in a hundred. Simple, predictable and cheap.

Method 2

Parent based sampling

Follow the decision made by the first service, so a trace is either complete everywhere or absent everywhere.

Method 3

Head sampling

The decision is made at the start of the request, before the outcome is known. Cheap, but it can miss rare errors.

Method 4

Tail sampling

The decision is made after the request finishes, so slow or failing traces can be kept. Needs a collector that holds spans temporarily.

SituationSuggested approach
New project, small trafficSample everything or a high fraction while learning
Busy production serviceStart with a small fixed fraction, and grow if more detail is needed
Rare errors matter mostUse tail sampling to keep error and slow traces
Strict budgetLower the rate, trace only critical paths and avoid noisy health checks
Simple Analogy

A factory inspector cannot examine every item, so a few items from each batch are checked closely. If the inspector also keeps every item that looks suspicious, rare defects are still caught.

i
Tip

Exclude health check requests and other automated pings from tracing. They are numerous, uninteresting and can dominate your span count and bill.

9Ingestion APIs: Telemetry API and Cloud Trace API

There are two doors for sending trace data to your project, and one is preferred.

Google Cloud offers two ways to send traces. The Telemetry API implements the OpenTelemetry protocol, called OTLP, and works directly with the open source ecosystem. It is the recommended option for new work, and its limits are generally more generous than those of the older, Google specific Cloud Trace API, which remains available. The Telemetry API also supports VPC Service Controls. The two APIs are enabled separately, and the Cloud Trace API must be enabled on your project for trace data to be stored, even if you send data through the Telemetry API.

TopicTelemetry APICloud Trace API
ProtocolOpenTelemetry OTLPGoogle specific interface
StatusRecommended for new workStill available
EcosystemWorks with standard exporters and collectorsNeeds Google specific exporters
LimitsGenerally more generousMore restrictive
Perimeter controlsSupports VPC Service ControlsCheck current documentation
!
Common Mistake

Disabling the Cloud Trace API to stop collection while leaving the Telemetry API on, or the other way around, and getting confusing results. Read how the two interact before changing them, and remember that disabling the storage API causes trace data to be discarded.

Why use a collector?

You can export directly from your application, but a collector brings advantages. It lets the application send data quickly and move on, while the collector handles batching, retries and encryption. It can add resource information, drop noisy spans, mask sensitive attributes and perform tail sampling. It is also a single place to change where data goes, so you can switch or add destinations without touching application code.

Simple Analogy

Posting letters at the door of every office is slow. A mailroom collects them, sorts them, stamps them and sends them together. The collector is the mailroom, and the Telemetry API is the post office’s modern front counter.

10Using the Trace Explorer

The main window into your trace data, built for both the big picture and the fine detail.

The Trace Explorer shows aggregate information about your traces and lets you open individual ones. A latency heatmap displays how request durations are spread over time, so you can see at a glance whether most requests are fast, whether a slow group exists, or whether latency crept up after a release. You can click and drag on the heatmap to select a region, such as the slowest requests, and see the matching traces. Filters narrow results by service, route, status, attribute or application.

Feature 1

Latency heatmap

Shows the distribution of durations over time, making outliers and trends visible.

Feature 2

Filters and time range

Narrow by service, span name, status or custom attributes, and compare different periods.

Feature 3

Trace details view

The waterfall of spans for one request, with attributes, events and links to related logs.

Feature 4

Span view

Explore individual spans across many traces, for example all database calls that took longer than a threshold.

Feature 5

Application attributes

Where supported, data carries application and service labels, so you can filter by your own application, service or workload.

Feature 6

Trace scopes

Choose which projects to include in a view, so one screen can show traces from several projects.

1

Pick the time range and scope

Select the period of the complaint, and the projects involved.

2

Filter to the service or route

Restrict to the affected part, such as the checkout route.

3

Select the slow region of the heatmap

Drag over the slowest group to list matching traces.

4

Open a representative trace

Read the waterfall, find the span with the most own time, and read its attributes.

5

Confirm the pattern

Open two or three more slow traces to check that the same span is the cause, not a one-off.

Simple Analogy

A weather map shows storms across a region, and you can zoom in on one storm to see its details. The heatmap is the weather map of latency, and a single trace is the zoomed view of one storm.

11Connecting Traces with Logs, Metrics and Analytics

A trace is much more powerful when you can jump from it to the logs and numbers around it.

When your logs record the trace and span identifiers of the request being handled, Google Cloud can link them. In the trace details you can open the log entries that belong to a span, and in the log explorer you can jump from a log entry to its trace. This turns a mystery into a short walk: you see a slow span, open its logs and read the warning about a retry or a timeout. Default scopes decide which projects are searched when you jump between the two views.

Analytics with SQL

Trace data can also be analyzed with SQL through Log Analytics. You can ask questions that the explorer cannot answer easily, such as the average duration of a database call by customer type, or how many requests passed through a particular service last week. Queries can join trace and log data, and results can be shown as tables or charts. The older analysis reports page has been replaced, so use the Trace Explorer and Log Analytics for analysis.

flowchart TD
TR["Slow trace in Trace Explorer"] --> SP["Select slow span"]
SP --> LG["Open its log entries"]
LG --> CA["Find cause: timeout or retry"]
TR --> AN["Query many traces with SQL"]
AN --> PAT["Find pattern: one customer type or region"]
        
FIG 5 — Moving between traces, logs and analytics

Error and trace together

Error reports can reference the trace of the failing request, so a developer sees both the stack trace and the journey that led to it.

Metrics to traces

An alert on high latency leads you to the traces from that period, so you inspect real examples instead of averages.

Business questions from traces

With useful attributes, SQL over traces can show which features, regions or customer groups suffer the slowest experiences.

i
Tip

Make sure your logging library adds trace and span identifiers to every structured log line. It is a small change that pays back in every investigation.

12Platform Integrations

Where traces come from on Google Cloud, with and without your own code.

Serverless

Cloud Run and Cloud Run functions

Incoming requests can carry trace context, and your instrumented code can create spans that join the trace.

Kubernetes

Google Kubernetes Engine

Applications running in pods send spans through OpenTelemetry, often via a collector running in the cluster.

App platform

App Engine

Older first-generation runtimes automatically send spans, while newer runtimes use OpenTelemetry.

Virtual machines

Compute Engine

Applications on virtual machines are instrumented in the same way, with a collector or direct export.

Networking

Load balancers

Cloud Load Balancing can generate spans for the time requests spend in the frontend, extending the trace to the edge.

Data services

Spanner and Cloud Storage

Client libraries can emit spans for client and end-to-end request timing, showing whether delay is in the network or in the service.

AI applications

Generative AI and tool calls

Traces can follow calls to models and tools, so you can see where an AI powered request spends its time.

Operations

Logging, Monitoring and Error Reporting

Share a common navigation and linking, so you can move between the signals easily.

Simple Analogy

A city installs cameras on main roads, and shops add their own cameras at their doors. The more places with cameras that use the same format, the more complete the footage of a person’s journey.

i
Tip

Check what each platform traces by default before adding instrumentation. Avoid doubling up spans, and make sure that platform generated spans and your own spans link into the same trace.

13Finding Bottlenecks: Common Patterns in Traces

Experienced engineers recognize a handful of shapes that appear again and again.

The staircase: serial calls

Many bars that start only after the previous one ends. If the calls do not depend on each other, run them in parallel to cut the total time.

The comb: the N plus one problem

Dozens of nearly identical small database calls in a row, usually one per item in a list. Replace them with a single combined query.

The long tail: one slow dependency

A single span, often a call to another service or an external API, dominates. Add caching, timeouts or a faster alternative.

The gap: waiting before work starts

Empty time before a span begins, which may mean cold starts, queues, busy threads or connection pool waits.

The echo: retries

Repeated spans to the same service after failures. Retries hide errors from users but add delay and extra load.

The fan out: too many parallel calls

A request spawns hundreds of calls at once. The slowest of them decides the total time, so rare slow calls are amplified.

The cross-region hop

A call that crosses regions or continents, adding network delay to every request. Move services or data closer together.

flowchart TD
S["Request is slow"] --> Q1{"One span dominates?"}
Q1 -->|Yes| A1["Optimize or cache that dependency"]
Q1 -->|No| Q2{"Many similar small spans?"}
Q2 -->|Yes| A2["Batch queries, fix N plus one"]
Q2 -->|No| Q3{"Spans run one after another?"}
Q3 -->|Yes| A3["Run independent calls in parallel"]
Q3 -->|No| A4["Look for gaps: cold starts, queues, pools"]
        
FIG 6 — A quick guide to reading a slow trace
Simple Analogy

A doctor recognizes common patterns on a scan, like a shadow here or a fracture there. After you have seen a few traces, these shapes become just as recognizable.

14Tracing in Daily Operations and SLOs

Tracing is not just for emergencies, it is a daily habit for healthy teams.

Teams that use tracing well do not wait for outages. They review traces after every major release to confirm that latency has not crept up. They compare traces from before and after a change. They study the slowest one percent of requests, because those are the ones real users complain about. They connect tracing to service level objectives, which are promises about speed and reliability, such as ninety five percent of checkouts finishing within two seconds. Metrics show whether the objective is being met, and traces explain why it is not.

1

Define the objective

Agree on a latency target for important user journeys.

2

Alert on the metric

Use a metric based alert when the target is at risk.

3

Inspect the traces

Open the slowest traces from the alert period and find the common span.

4

Fix and verify

Deploy the fix, then compare new traces with old ones to prove the improvement.

5

Record the lesson

Write down the cause and the fix, so the same pattern is recognized next time.

Simple Analogy

A bus company promises that most buses are on time. The punctuality chart tells them when the promise is slipping, and the journey logs of late buses tell them which junction is causing the delay.

i
Tip

Look at percentiles, not averages. The average can look fine while one in twenty users has a terrible time. Traces let you see the real examples behind the slowest percentiles.

15Security, Privacy and Access Control

Traces describe your system in detail, so protect them like any other sensitive data.

Who can see and send traces

Access is controlled through identity and access management. Roles decide who may view traces, who may write trace data, and who may administer settings. Applications authenticate with service accounts, and each application should have only the permission to write trace data, not to read everything. Developers who investigate issues need view access to the projects they work on, and trace scopes let you grant views across several projects in a controlled way.

What goes into attributes

Attributes are powerful, and dangerous. It is tempting to attach a user’s email, a full request body or a query with real values. These may contain personal or secret data, which would then be stored in your trace backend and visible to everyone who can read traces. Record identifiers that are safe and useful, such as a route name, a status code or an internal customer tier, and avoid secrets, passwords, tokens and personal data.

Control 1

Least privilege roles

Write access for applications, read access for engineers, and administration for a few.

Control 2

Attribute hygiene

Never record secrets or personal data. Review what instrumentation adds automatically.

Control 3

Redaction in the collector

Use the collector to drop or mask sensitive attributes before they leave your environment.

Control 4

Perimeter controls

Use VPC Service Controls where data must not cross a defined boundary.

Control 5

Separate projects

Keep production and non-production traces apart, with different access rules.

Control 6

Audit logs

Record who changed settings and who accessed trace data.

Simple Analogy

A flight recorder is invaluable after an incident, but it also contains private conversations. It is kept safe, with limited access and only the data needed for investigation.

!
Common Mistake

Putting the full SQL text with real customer values into span attributes. This is one of the most common accidental leaks of personal data into observability systems. Record the query shape or a name, not the values.

16Retention, Quotas and Limits

Trace data is not kept forever, and there are limits on how much you can send.

Cloud Trace stores spans for a limited retention period, so it is designed for troubleshooting and recent analysis, not long-term archives. The exact period is stated in the current documentation, so check it when planning investigations. If you need history for longer, such as for audits or seasonal comparisons, summarize important findings into metrics or reports, or export the data to a store that you control.

There are also quotas and limits, such as how many spans you can ingest per minute, how big a span or an attribute can be, and how many attributes a span may carry. The Telemetry API has more generous limits than the older API, and limits can differ by region. When you exceed limits, spans may be rejected or dropped, which creates incomplete traces.

Limit typeWhat it affectsWhat to do
Retention periodHow far back you can lookPlan investigations promptly, and export summaries if you need history
Ingestion rateSpans per minute acceptedUse sampling and a collector with batching
Span and attribute sizeHow much detail one span can carryKeep attributes short and meaningful
Attributes per spanNumber of keys on a spanRecord only attributes that you will use for filtering
API quotasRequests to read or write via APIsRequest increases early for large systems
Simple Analogy

Security cameras record over old footage after a set number of days. You must review the tape before it is overwritten, or save the clip you care about elsewhere.

i
Tip

Monitor the health of your own tracing pipeline. A sudden drop in span counts can mean broken instrumentation, a dropped header or a quota problem, and you would rather notice before an incident needs the data.

17Understanding Cost and Pricing

You pay for the number of spans you send and the number you scan, so volume is the lever.

Cloud Trace pricing is part of Google Cloud Observability pricing. Charges are based on the number of trace spans ingested and the number of spans scanned when you query them. A monthly free allowance has historically been offered, but amounts and terms change, so use the official pricing page and calculator. The key insight is that cost follows span count, and span count follows traffic, number of spans per request and sampling rate.

Ingested
spans sent to Cloud Trace are counted and billed
Scanned
spans read by your queries can also be billed
Sampling
the biggest control over cost
Cost driverWhy it growsHow to control it
Traffic volumeMore requests mean more tracesLower the sampling rate on high traffic services
Spans per requestDeep or chatty instrumentationAvoid tiny spans for trivial operations
Noisy requestsHealth checks and background pollingExclude them from tracing
Broad queriesScanning huge time rangesNarrow time ranges and filters
Many environmentsTest systems traced at full rateSample lightly outside production
!
Cost Reminder

Turning on full sampling for a high traffic service on launch day can create a surprising bill. Start with a small sampling ratio, watch the span counts, and increase only if you need more detail.

i
Tip

Use tail sampling to keep error and slow traces at a high rate while keeping only a small share of ordinary fast traces. You get the useful examples without paying for thousands of boring ones.

18Real-World and Industry Examples

Where tracing quickly turns confusion into answers.

The following are common patterns rather than named customer stories, because specific architectures change over time.

E-commerce checkout slowness

Customers report slow checkouts at peak hours. Traces reveal that a call to a tax calculation service takes several seconds under load, and caching its results removes the delay.

Banking and payments

A payment passes through fraud checks, ledgers and messaging systems. Tracing shows which step causes timeouts and where retries multiply load.

Streaming and media

Start-up time of a video is traced from the player request through authentication, catalog and delivery services to find the slowest link.

Gaming backends

Matchmaking and inventory services are traced to explain why some players wait longer, often tracing it to cross-region calls.

Healthcare platforms

Appointment and record systems built from many services use tracing to find slow integrations, taking care to keep personal data out of spans.

Generative AI applications

A chat feature calls a model, a retrieval service and several tools. Traces show how much time each takes, helping teams choose caching and model strategies.

Platform migrations

When a service moves between platforms or regions, comparing traces before and after proves whether the move improved or harmed latency.

19Advantages, Disadvantages and Trade-offs

Tracing gives sharp visibility, and asks for instrumentation effort and cost discipline.

Advantages

  • Shows the full journey of a request across many services
  • Pinpoints the slowest step instead of guessing
  • Built on the open OpenTelemetry standard, so it is portable
  • Managed service with no tracing servers to run
  • Links to logs, errors and analytics in one console
  • Platform integrations give some visibility with little effort

Disadvantages / Trade-offs

  • Needs instrumentation and context propagation across every service
  • Sampling means you may not see every request
  • Costs grow with span volume and queries
  • Limited retention, so it is not a long-term archive
  • Attributes can leak sensitive data if not controlled
  • Learning to read traces takes some practice
Simple Analogy

Installing cameras in every corridor of a building gives superb visibility, but you must install them, maintain them and decide how long to keep the footage. Tracing is the same trade.

“Averages tell you that something is wrong; traces show you what.”

20Design Patterns and Anti-patterns

Habits that make traces useful, and habits that bury the signal in noise.

Patterns that work

Strong teams standardize on OpenTelemetry and the W3C context format across all services. They name spans consistently, using stable names for operations and putting variable data in attributes. They add trace and span identifiers to every log line. They instrument the critical user journeys first, then widen the coverage. They use a collector to batch, redact and sample. They review traces after releases and keep a short guide of common patterns for new engineers.

ANTI-PATTERN-01 Avoid
Problem

Span names include variable values, such as a user identifier or a full URL with parameters.

Why It’s Harmful

Each unique name looks like a different operation, so grouping and filtering break, and the data becomes high in volume and low in meaning.

Correct Approach

Use stable names for the operation, such as the route pattern, and put the variable parts in attributes where appropriate and safe.

ANTI-PATTERN-02 Avoid
Problem

Every tiny function in the code gets its own span.

Why It’s Harmful

Traces become huge and hard to read, overhead rises, and the bill grows with no new insight.

Correct Approach

Create spans for meaningful operations, such as calls over the network, database access and important business steps.

ANTI-PATTERN-03 Avoid
Problem

Secrets, tokens or personal data are written into span attributes.

Why It’s Harmful

Anyone with trace access can read them, and they are stored in the observability backend, creating a privacy and security incident.

Correct Approach

Record safe identifiers only, redact in the collector and review automatic instrumentation for sensitive data.

ANTI-PATTERN-04 Avoid
Problem

Services use different propagation formats and some strip headers, so traces break into fragments.

Why It’s Harmful

Engineers see only pieces of the journey and lose the very benefit that tracing promises.

Correct Approach

Standardize on W3C Trace Context, verify headers pass through proxies and queues, and test end-to-end traces after changes.

ANTI-PATTERN-05 Avoid
Problem

Tracing is turned on at full rate everywhere and nobody looks at the data.

Why It’s Harmful

It creates cost and noise with no benefit, and teams start to distrust and ignore observability tools.

Correct Approach

Choose clear goals, such as key journeys and service level objectives, sample sensibly and make trace review part of the routine.

21Best Practices and Common Mistakes

A checklist to make your tracing helpful, safe and affordable.

1

Start with the user journeys that matter

Trace login, search, checkout or whatever drives your business, before covering everything.

2

Use OpenTelemetry and W3C context

Keep instrumentation portable and ensure context flows between all services.

3

Send through the Telemetry API with a collector

Gain batching, retries, redaction and flexible sampling in one place.

4

Set a modest sampling rate first

Watch span counts and cost, and raise the rate or add tail sampling as needed.

5

Correlate logs and traces

Add trace and span identifiers to logs so you can jump between the two.

6

Name spans consistently

Stable names, meaningful attributes and a short team guide keep data tidy.

7

Protect sensitive data

Review attributes, redact in the collector and restrict access to those who need it.

8

Make tracing a habit

Review traces after releases, tie them to objectives, and teach every new engineer to read a waterfall.

Mistakes beginners make most often

The first is instrumenting only some services, which breaks traces. The second is losing context at queues and proxies. The third is recording every request at full rate. The fourth is reading only averages. The fifth is putting sensitive data into attributes. The sixth is creating too many tiny spans. The seventh is waiting for an outage before turning tracing on for the first time.

i
Practice Before You Need It

Run a small game day where the team investigates a deliberately slow service using only traces. Skills learned calmly on a Tuesday are the ones that save you in an emergency.

22Cloud Trace Compared with Other Tools

Several tools overlap with Cloud Trace, and each answers a slightly different question.

ToolMain question it answersHow it relates to Cloud Trace
Cloud TraceWhere does the time go in a request?The distributed tracing service
Cloud LoggingWhat happened and why?Holds events and errors, linked from spans
Cloud MonitoringHow is the system doing over time?Metrics and alerts that point you to traces
Cloud ProfilerWhich lines of code use the most CPU or memory?Goes deeper inside one service after a trace finds the slow service
Error ReportingWhich errors occur and how often?Groups crashes, with links to traces
Open source tracing backendsThe same tracing question, self-hostedAccept the same OpenTelemetry data, but you run them
Third party observability platformsFull stack monitoring in one productAlternatives or additions, fed by OpenTelemetry
flowchart TD
Q1{"What do you need to know?"} -->|"Is the system healthy over time?"| MON["Cloud Monitoring"]
Q1 -->|"Which service or step is slow?"| TRC["Cloud Trace"]
Q1 -->|"What exactly happened?"| LOG["Cloud Logging"]
Q1 -->|"Which code inside a service is slow?"| PRO["Cloud Profiler"]
Q1 -->|"Which errors are happening?"| ERR["Error Reporting"]
        
FIG 7 — Choosing the right observability tool for the question
Simple Analogy

A mechanic uses a dashboard light to learn that something is wrong, a diagnostic tool to find which system, and a close inspection of the part to learn exactly why. Monitoring, tracing and profiling are those three steps.

Because Cloud Trace accepts the open OpenTelemetry standard, you are not locked in. The same instrumentation can send data to Cloud Trace, to a self-hosted backend or to a third party platform, and many teams send to more than one while they evaluate.

23Frequently Asked Questions

Q1What is Cloud Trace in one sentence?

It is Google Cloud’s distributed tracing service, which records how long each step of a request takes across your services so you can find bottlenecks and errors.

Q2What is the difference between a trace and a span?

A span is one timed operation, such as a database call. A trace is the collection of all spans that belong to one request, arranged as a tree from the first service to the last.

Q3Do I have to change my code to use Cloud Trace?

Usually a little. Automatic instrumentation with OpenTelemetry covers popular frameworks with minimal change, and some Google Cloud services create spans for you. Custom spans add detail for your own business steps.

Q4Should I use OpenTelemetry or the Cloud Trace libraries?

OpenTelemetry is recommended. It is an open standard that keeps your instrumentation portable, and Google Cloud supports it through the Telemetry API.

Q5Why do my traces show only one service?

Context is probably not being propagated, or other services are not instrumented. Check that trace headers are passed in outgoing requests and not stripped by proxies, and that each service reads them.

Q6What is sampling and do I need it?

Sampling means recording only a share of requests. Most production systems need it to control volume and cost. Start with a small fraction, and use tail sampling if you want to keep slow and failing requests.

Q7How do I connect traces with logs?

Make your logs include the trace and span identifiers. Then you can open the logs of a span from the trace view, and open the trace from a log entry.

Q8How long is trace data kept?

For a limited retention period stated in the current documentation. It is meant for troubleshooting and recent analysis, so save summaries elsewhere if you need long-term history.

Q9How much does Cloud Trace cost?

It is billed by the number of spans ingested and the number scanned by queries, under Google Cloud Observability pricing, usually with some free allowance. Check the official pricing page for current figures, and control cost with sampling.

Q10Is it safe to put user information in spans?

No, not secrets or personal data. Record safe identifiers and redact sensitive attributes in the collector, and restrict who can view traces.

Q11Can I analyze traces with SQL?

Yes. Trace data can be queried through Log Analytics with SQL, and queries can join trace and log data. Use it for questions beyond what the explorer filters provide.

Q12How is tracing different from profiling?

Tracing shows which service or step in a request is slow. Profiling shows which functions inside one service consume the most CPU or memory. Use tracing first to find the service, then profiling to look inside.

24Summary and Key Takeaways

Cloud Trace is Google Cloud’s managed distributed tracing service. Applications instrumented with OpenTelemetry create spans, pass trace context between services, and export data through the Telemetry API, optionally via a collector. The Trace Explorer, linked logs and SQL analytics turn that data into answers about where time and errors come from. Good results depend on consistent instrumentation, preserved context, sensible sampling, careful attributes, and a habit of reading traces before problems become outages.

Key Takeaways

  • Traces show the journey — a trace is a tree of timed spans that follows one request across all services.
  • Use OpenTelemetry — the open standard keeps instrumentation portable, and the Telemetry API is the recommended way to send data.
  • Propagate context everywhere — without shared trace identity, traces break into fragments.
  • Sample on purpose — start with a modest rate, exclude noisy requests, and use tail sampling to keep slow and failing traces.
  • Link the signals — put trace identifiers in logs, move from metric to trace to log, and use SQL for wider questions.
  • Read the shapes — serial calls, repeated queries, slow dependencies, gaps and retries are the patterns behind most latency problems.
  • Protect and budget — keep secrets and personal data out of spans, restrict access, and watch span volume for cost.