From de2c53504bf9d11d259a10c93484b1f9179dbae9 Mon Sep 17 00:00:00 2001 From: Daniel Dyla Date: Wed, 27 Mar 2024 08:46:22 -0400 Subject: [PATCH 1/2] Remove data include for overview --- index.html | 52 ++++++++++++++++++++++++++++++++++++++++++++- spec/10-overview.md | 40 ---------------------------------- 2 files changed, 51 insertions(+), 41 deletions(-) delete mode 100644 spec/10-overview.md diff --git a/index.html b/index.html index a9ab819..0b8512a 100644 --- a/index.html +++ b/index.html @@ -95,7 +95,57 @@
-
+
+

Overview

+
+

Problem Statement

+

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:

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

+ 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. +

+ +

+ This transformation of modern applications calls for a distributed tracing context propagation standard. +

+
+ +
+

Solution

+

The trace context specification defines a universally agreed-upon format for the exchange of trace context propagation data - referred to as trace context. Trace context solves the problems described above by

+
    +
  • providing an unique identifier for individual traces and requests, allowing trace data of multiple providers to be linked together.
  • +
  • providing an agreed-upon mechanism to forward vendor-specific trace data and avoid broken traces when multiple tracing tools participate in a single transaction.
  • +
  • providing an industry standard that intermediaries, platforms, and hardware providers can support.
  • +
+ +

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.

+ +

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.

+
+ +
+

Design Overview

+

Trace context is split into two individual propagation fields supporting interoperability and vendor-specific extensibility:

+
    +
  • `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`
  • +
  • `tracestate` extends `traceparent` with vendor-specific data represented by a set of name/value pairs. Storing information in `tracestate` is optional.
  • +
+

Tracing tools can provide two levels of compliant behavior interacting with trace context:

+
    +
  • 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.
  • +
  • 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.
  • +
+

A tracing tool can choose to change this behavior for each individual request to a component it is monitoring.

+
+
diff --git a/spec/10-overview.md b/spec/10-overview.md deleted file mode 100644 index ca848ac..0000000 --- a/spec/10-overview.md +++ /dev/null @@ -1,40 +0,0 @@ -# Overview - -## Problem Statement - -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: - -- Traces that are collected by different tracing vendors cannot be correlated as there is no shared unique identifier. -- Traces that cross boundaries between different tracing vendors can not be propagated as there is no uniformly agreed set of identification that is forwarded. -- Vendor specific metadata might be dropped by intermediaries. -- Cloud platform vendors, intermediaries and service providers, cannot guarantee to support trace context propagation as there is no standard to follow. - -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. - -This transformation of modern applications calls for a distributed tracing context propagation standard. - -## Solution - -The trace context specification defines a universally agreed-upon format for the exchange of trace context propagation data - referred to as *trace context*. Trace context solves the problems described above by - -- providing a unique identifier for individual traces and requests, allowing trace data of multiple providers to be linked together. -- providing an agreed-upon mechanism to forward vendor-specific trace data and avoid broken traces when multiple tracing tools participate in a single transaction. -- providing an industry standard that intermediaries, platforms, and hardware providers can support. - -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. - -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. - -## Design Overview - -Trace context is split into two individual propagation fields supporting interoperability and vendor-specific extensibility: - -- `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` -- `tracestate` extends `traceparent` with vendor-specific data represented by a set of name/value pairs. Storing information in `tracestate` is optional. - -Tracing tools can provide two levels of compliant behavior interacting with trace context: - -- 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. -- 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. - -A tracing tool can choose to change this behavior for each individual request to a component it is monitoring. From c4cfacad7faba5378b5372e3a16adb913f436ccd Mon Sep 17 00:00:00 2001 From: Daniel Dyla Date: Wed, 27 Mar 2024 08:48:58 -0400 Subject: [PATCH 2/2] Consistent

--- index.html | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/index.html b/index.html index 0b8512a..5f0aae0 100644 --- a/index.html +++ b/index.html @@ -108,13 +108,9 @@

Problem Statement

  • Cloud platform vendors, intermediaries and service providers, cannot guarantee to support trace context propagation as there is no standard to follow.
  • -

    - 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. -

    +

    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.

    -

    - This transformation of modern applications calls for a distributed tracing context propagation standard. -

    +

    This transformation of modern applications calls for a distributed tracing context propagation standard.