Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove data include for overview #565

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 47 additions & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,53 @@

<section id='conformance'></section>

<section data-include="spec/10-overview.md" data-include-format='markdown'></section>
<section>
<h2>Overview</h2>
<section>
<h3>Problem Statement</h3>
<p>Distributed tracing is a methodology implemented by tracing tools to follow, analyze and debug a transaction across multiple software components. Typically, a [=distributed trace=] traverses more than one component which requires it to be uniquely identifiable across all participating systems. Trace context propagation passes along this unique identification. Today, trace context propagation is implemented individually by each tracing vendor. In multi-vendor environments, this causes interoperability problems, like:</p>

<ul>
<li>Traces that are collected by different tracing vendors cannot be correlated as there is no shared unique identifier.</li>
<li>Traces that cross boundaries between different tracing vendors can not be propagated as there is no uniformly agreed set of identification that is forwarded.</li>
<li>Vendor specific metadata might be dropped by intermediaries.</li>
<li>Cloud platform vendors, intermediaries and service providers, cannot guarantee to support trace context propagation as there is no standard to follow.</li>
</ul>

<p>In the past, these problems did not have a significant impact as most applications were monitored by a single tracing vendor and stayed within the boundaries of a single platform provider. Today, an increasing number of applications are highly distributed and leverage multiple middleware services and cloud platforms.</p>

<p>This transformation of modern applications calls for a distributed tracing context propagation standard.</p>
</section>

<section id="solution">
<h3>Solution</h3>
<p>The trace context specification defines a universally agreed-upon format for the exchange of trace context propagation data - referred to as <em>trace context</em>. Trace context solves the problems described above by</p>
<ul>
<li>providing an unique identifier for individual traces and requests, allowing trace data of multiple providers to be linked together.</li>
<li>providing an agreed-upon mechanism to forward vendor-specific trace data and avoid broken traces when multiple tracing tools participate in a single transaction.</li>
<li>providing an industry standard that intermediaries, platforms, and hardware providers can support.</li>
</ul>

<p>A unified approach for propagating trace data improves visibility into the behavior of distributed applications, facilitating problem and performance analysis. The interoperability provided by trace context is a prerequisite to manage modern micro-service based applications.</p>

<p>The current version of the Trace Context specification is targeted for implementations by applications and services, including web applications running within a browser. Web Browsers or User Agents are not currently in scope as a target implementation.</p>
</section>

<section>
<h3>Design Overview</h3>
<p>Trace context is split into two individual propagation fields supporting interoperability and vendor-specific extensibility:</p>
<ul>
<li>`traceparent` describes the position of the incoming request in its trace graph in a portable, fixed-length format. Its design focuses on fast parsing. Every tracing tool MUST properly set `traceparent` even when it only relies on vendor-specific information in `tracestate`</li>
<li>`tracestate` extends `traceparent` with vendor-specific data represented by a set of name/value pairs. Storing information in `tracestate` is optional.</li>
</ul>
<p>Tracing tools can provide two levels of compliant behavior interacting with trace context:</p>
<ul>
<li>At a minimum they MUST propagate the `traceparent` and `tracestate` headers and guarantee traces are not broken. This behavior is also referred to as forwarding a trace.</li>
<li>In addition they MAY also choose to participate in a trace by modifying the `traceparent` header and relevant parts of the `tracestate` header containing their proprietary information. This is also referred to as participating in a trace.</li>
</ul>
<p>A tracing tool can choose to change this behavior for each individual request to a component it is monitoring.</p>
</section>
</section>

<section data-include="spec/20-http_request_header_format.md" data-include-format='markdown'></section>
<section data-include="spec/21-http_response_header_format.md" data-include-format='markdown'></section>
Expand Down
40 changes: 0 additions & 40 deletions spec/10-overview.md

This file was deleted.

Loading