<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>The tracing pipeline on Grafana Labs</title><link>https://grafana.com/docs/learning-hub/intro-to-tracing/03-the-pipeline/</link><description>Recent content in The tracing pipeline on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/learning-hub/intro-to-tracing/03-the-pipeline/index.xml" rel="self" type="application/rss+xml"/><item><title>The four-stage tracing pipeline</title><link>https://grafana.com/docs/learning-hub/intro-to-tracing/03-the-pipeline/08-four-stage-pipeline/</link><pubDate>Tue, 04 Aug 2026 18:58:09 -0400</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-tracing/03-the-pipeline/08-four-stage-pipeline/</guid><content><![CDATA[&lt;h2 id=&#34;the-four-stage-tracing-pipeline&#34;&gt;The four-stage tracing pipeline&lt;/h2&gt;
&lt;p&gt;Tracing isn&amp;rsquo;t a single product. Getting a trace from your application onto your screen takes several separate pieces: one produces the spans, one moves them, one stores them, and one reads them. Out of context, their names blur together.&lt;/p&gt;
&lt;p&gt;This section is the map that puts those pieces in order. Every trace follows the same path, from your application to your screen. That path, from producing a trace to reading it, is the &lt;strong&gt;tracing pipeline&lt;/strong&gt;, and it has four stages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Instrument&lt;/strong&gt;: your application produces spans as it handles a request.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Send&lt;/strong&gt;: those spans travel from your application to where they&amp;rsquo;re stored.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Store&lt;/strong&gt;: the spans are saved together as a trace so you can find them later.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Query and visualize&lt;/strong&gt;: you find a trace and read it to see where the request spent its time.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each of these steps is one &lt;strong&gt;pipeline stage&lt;/strong&gt;: one link in the path a trace takes.&lt;/p&gt;
&lt;p&gt;The four stages run in order, each handing the trace to the next:&lt;/p&gt;

&lt;div class=&#34;learning-hub-image&#34;&gt;
  &lt;a href=&#34;pipeline-stages.svg&#34; title=&#34;The tracing pipeline as four ordered stages: Instrument, Send, Store, and Query and visualize, connected left to right by arrows&#34;&gt;
    &lt;img
      class=&#34;lazyload d-inline-block&#34;
      data-src=&#34;pipeline-stages.svg&#34;
      alt=&#34;The tracing pipeline as four ordered stages: Instrument, Send, Store, and Query and visualize, connected left to right by arrows&#34; width=&#34;800&#34; height=&#34;160&#34;/&gt;
    &lt;div class=&#34;learning-hub-image__zoom&#34;&gt;
      &lt;svg width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
        &lt;path d=&#34;M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
        &lt;path d=&#34;M10 7V13M7 10H13&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;/&gt;
      &lt;/svg&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;h2 id=&#34;one-tool-per-stage&#34;&gt;One tool per stage&lt;/h2&gt;
&lt;p&gt;The next three slides walk the first three stages in order and introduce the main tool at each one. The fourth stage, finding and reading a trace, is where the rest of the journey is headed: you&amp;rsquo;ll do it hands-on in the next section.&lt;/p&gt;
]]></content><description>&lt;h2 id="the-four-stage-tracing-pipeline">The four-stage tracing pipeline&lt;/h2>
&lt;p>Tracing isn&amp;rsquo;t a single product. Getting a trace from your application onto your screen takes several separate pieces: one produces the spans, one moves them, one stores them, and one reads them. Out of context, their names blur together.&lt;/p></description></item><item><title>Stage 1, Instrument: where spans come from</title><link>https://grafana.com/docs/learning-hub/intro-to-tracing/03-the-pipeline/09-instrument/</link><pubDate>Tue, 04 Aug 2026 18:58:09 -0400</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-tracing/03-the-pipeline/09-instrument/</guid><content><![CDATA[&lt;h2 id=&#34;stage-1-instrument-where-spans-come-from&#34;&gt;Stage 1, Instrument: where spans come from&lt;/h2&gt;
&lt;p&gt;A trace has to start somewhere. Before your application can produce spans, it needs code that watches its work and records each unit of that work as a span. Adding that code or tooling is called &lt;strong&gt;instrumentation&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;most-teams-instrument-with-opentelemetry&#34;&gt;Most teams instrument with OpenTelemetry&lt;/h2&gt;
&lt;p&gt;You don&amp;rsquo;t have to write that recording code by hand. Most teams instrument with &lt;strong&gt;OpenTelemetry&lt;/strong&gt;, an open, vendor-neutral standard for generating traces, and other signals, from application code. Because it&amp;rsquo;s a shared standard rather than one vendor&amp;rsquo;s format, the traces it produces work with many backends, not just one.&lt;/p&gt;
&lt;h2 id=&#34;setting-it-up-comes-later&#34;&gt;Setting it up comes later&lt;/h2&gt;
&lt;p&gt;This journey doesn&amp;rsquo;t instrument an application. Choosing how to instrument your code and wiring it up is part of setup, covered in the separate setup journey and the instrumentation documentation. Here, you only need to know that spans come from an instrumented application at the start of the pipeline.&lt;/p&gt;
]]></content><description>&lt;h2 id="stage-1-instrument-where-spans-come-from">Stage 1, Instrument: where spans come from&lt;/h2>
&lt;p>A trace has to start somewhere. Before your application can produce spans, it needs code that watches its work and records each unit of that work as a span. Adding that code or tooling is called &lt;strong>instrumentation&lt;/strong>.&lt;/p></description></item><item><title>Stage 2, Send: a collector moves your spans</title><link>https://grafana.com/docs/learning-hub/intro-to-tracing/03-the-pipeline/10-send/</link><pubDate>Tue, 04 Aug 2026 18:58:09 -0400</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-tracing/03-the-pipeline/10-send/</guid><content><![CDATA[&lt;h2 id=&#34;stage-2-send-a-collector-moves-your-spans&#34;&gt;Stage 2, Send: a collector moves your spans&lt;/h2&gt;
&lt;p&gt;Your instrumented application doesn&amp;rsquo;t write straight to storage. The spans first pass through a piece of software that receives them and forwards them on to a backend. That piece is a &lt;strong&gt;collector&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Grafana&amp;rsquo;s collector is &lt;strong&gt;Grafana Alloy&lt;/strong&gt;. Alloy receives the spans your application emits and forwards them to a tracing backend. It speaks &lt;strong&gt;OTLP&lt;/strong&gt; (OpenTelemetry Protocol), the standard format for sending telemetry data.&lt;/p&gt;
&lt;h2 id=&#34;traces-add-up-fast&#34;&gt;Traces add up fast&lt;/h2&gt;
&lt;p&gt;Tracing produces a higher volume of data than metrics. A single request can create dozens or hundreds of spans, and that volume grows with your traffic, so traces are one of the easiest signals to over-ingest. To keep the volume, and the cost, manageable, you keep a representative subset of traces instead of all of them, a practice called &lt;strong&gt;sampling&lt;/strong&gt;. Choosing a sampling strategy is part of setup, covered in the setup journey.&lt;/p&gt;
]]></content><description>&lt;h2 id="stage-2-send-a-collector-moves-your-spans">Stage 2, Send: a collector moves your spans&lt;/h2>
&lt;p>Your instrumented application doesn&amp;rsquo;t write straight to storage. The spans first pass through a piece of software that receives them and forwards them on to a backend. That piece is a &lt;strong>collector&lt;/strong>.&lt;/p></description></item><item><title>Stage 3, Store: where traces live</title><link>https://grafana.com/docs/learning-hub/intro-to-tracing/03-the-pipeline/11-store/</link><pubDate>Tue, 04 Aug 2026 18:58:09 -0400</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-tracing/03-the-pipeline/11-store/</guid><content><![CDATA[&lt;h2 id=&#34;stage-3-store-where-traces-live&#34;&gt;Stage 3, Store: where traces live&lt;/h2&gt;
&lt;p&gt;Once the collector forwards your spans, they need a home. In Grafana Cloud, that backend is &lt;strong&gt;Grafana Cloud Traces&lt;/strong&gt;: the managed service that stores your traces and lets you query them. It&amp;rsquo;s powered by &lt;strong&gt;Grafana Tempo&lt;/strong&gt;, the open-source tracing backend Grafana Labs builds. Cloud Traces and Tempo are the same engine: one run for you, one you run yourself.&lt;/p&gt;
&lt;h2 id=&#34;cheap-storage-no-heavy-index&#34;&gt;Cheap storage, no heavy index&lt;/h2&gt;
&lt;p&gt;Cloud Traces stores your traces in &lt;strong&gt;object storage&lt;/strong&gt;: low-cost cloud storage for large amounts of data. Grafana Cloud manages that storage for you, so there&amp;rsquo;s nothing for you to size or provision. Cloud Traces queries those traces directly, without first building a separate index of them. Skipping that extra index is what keeps storing a large volume of traces economical.&lt;/p&gt;
&lt;p&gt;Cloud Traces both writes traces to object storage and reads them back from it directly:&lt;/p&gt;

&lt;div class=&#34;learning-hub-image&#34;&gt;
  &lt;a href=&#34;object-storage.svg&#34; title=&#34;Grafana Cloud Traces writes traces to object storage and queries them directly from object storage, with no separate index&#34;&gt;
    &lt;img
      class=&#34;lazyload d-inline-block&#34;
      data-src=&#34;object-storage.svg&#34;
      alt=&#34;Grafana Cloud Traces writes traces to object storage and queries them directly from object storage, with no separate index&#34; width=&#34;800&#34; height=&#34;240&#34;/&gt;
    &lt;div class=&#34;learning-hub-image__zoom&#34;&gt;
      &lt;svg width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
        &lt;path d=&#34;M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
        &lt;path d=&#34;M10 7V13M7 10H13&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;/&gt;
      &lt;/svg&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;h2 id=&#34;run-it-for-you-or-run-it-yourself&#34;&gt;Run it for you, or run it yourself&lt;/h2&gt;
&lt;p&gt;You have two ways to use the same engine:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Grafana Cloud Traces&lt;/strong&gt;: fully managed for you as part of Grafana Cloud. This is what you&amp;rsquo;ll use in this journey.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grafana Tempo&lt;/strong&gt;: the open-source backend you run and operate yourself, pointing it at object storage you provide, such as Amazon S3 or Google Cloud Storage.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The difference is who operates it, not how tracing works. Everything you learn about reading traces applies to both.&lt;/p&gt;
]]></content><description>&lt;h2 id="stage-3-store-where-traces-live">Stage 3, Store: where traces live&lt;/h2>
&lt;p>Once the collector forwards your spans, they need a home. In Grafana Cloud, that backend is &lt;strong>Grafana Cloud Traces&lt;/strong>: the managed service that stores your traces and lets you query them. It&amp;rsquo;s powered by &lt;strong>Grafana Tempo&lt;/strong>, the open-source tracing backend Grafana Labs builds. Cloud Traces and Tempo are the same engine: one run for you, one you run yourself.&lt;/p></description></item><item><title>Resources</title><link>https://grafana.com/docs/learning-hub/intro-to-tracing/03-the-pipeline/12-resources/</link><pubDate>Tue, 04 Aug 2026 18:58:09 -0400</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-tracing/03-the-pipeline/12-resources/</guid><content><![CDATA[&lt;h2 id=&#34;resources&#34;&gt;Resources&lt;/h2&gt;
&lt;p&gt;You followed a trace through the four-stage pipeline: instrument, send, store, and query. These docs go deeper on each stage when you&amp;rsquo;re ready to set one up.&lt;/p&gt;
&lt;h2 id=&#34;documentation&#34;&gt;Documentation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana-cloud/send-data/traces/set-up/instrument-apps/&#34;&gt;Instrument your applications&lt;/a&gt;: Produce spans from your application with OpenTelemetry.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://opentelemetry.io/docs/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;OpenTelemetry documentation&lt;/a&gt;: The open, vendor-neutral standard most teams use to instrument applications.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana-cloud/send-data/traces/&#34;&gt;Send traces to Grafana Cloud&lt;/a&gt;: Move spans to a backend with a collector such as Grafana Alloy.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana-cloud/cost-management-and-billing/adaptive-telemetry/adaptive-traces/&#34;&gt;Adaptive Traces&lt;/a&gt;: Control trace volume and cost by automatically keeping your most valuable traces.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana-cloud/traces/&#34;&gt;Grafana Cloud Traces&lt;/a&gt;: The managed backend that stores and queries your traces.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/tempo/latest/introduction/architecture/&#34;&gt;Grafana Tempo&lt;/a&gt;: The open-source tracing backend you can run yourself.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h2 id="resources">Resources&lt;/h2>
&lt;p>You followed a trace through the four-stage pipeline: instrument, send, store, and query. These docs go deeper on each stage when you&amp;rsquo;re ready to set one up.&lt;/p></description></item></channel></rss>