diff --git a/README.md b/README.md index 78e3c801a5..7c0df1434e 100644 --- a/README.md +++ b/README.md @@ -17,11 +17,10 @@ analysis in order to understand your software's performance and behavior. You can export and analyze them using [Prometheus], [Jaeger], and other observability tools. -*Compiler support: [requires `rustc` 1.70+][msrv]* +*[Supported Rust Versions](#supported-rust-versions)* [Prometheus]: https://prometheus.io [Jaeger]: https://www.jaegertracing.io -[msrv]: #supported-rust-versions ## Project Status diff --git a/opentelemetry-appender-log/src/lib.rs b/opentelemetry-appender-log/src/lib.rs index 69f4eabeed..b792aa220e 100644 --- a/opentelemetry-appender-log/src/lib.rs +++ b/opentelemetry-appender-log/src/lib.rs @@ -2,6 +2,8 @@ //! //! This library implements a log appender for the [`log`] crate using the [Logs Bridge API]. //! +//! *[Supported Rust Versions](#supported-rust-versions)* +//! //! # Getting Started //! //! The bridge requires configuration on both the `log` and OpenTelemetry sides. @@ -93,6 +95,20 @@ //! - `with-serde`: Support complex values as attributes without stringifying them. //! //! [Logs Bridge API]: https://opentelemetry.io/docs/specs/otel/logs/bridge-api/ +//! +//! ## Supported Rust Versions +//! +//! OpenTelemetry is built against the latest stable release. The minimum +//! supported version is 1.70. The current OpenTelemetry version is not +//! guaranteed to build on Rust versions earlier than the minimum supported +//! version. +//! +//! The current stable Rust compiler and the three most recent minor versions +//! before it will always be supported. For example, if the current stable +//! compiler version is 1.49, the minimum supported version will not be +//! increased past 1.46, three minor versions prior. Increasing the minimum +//! supported compiler version is not considered a semver breaking change as +//! long as doing so complies with this policy. use log::{Level, Metadata, Record}; use opentelemetry::{ diff --git a/opentelemetry-appender-tracing/README.md b/opentelemetry-appender-tracing/README.md index b1764d58c3..c744bbd31b 100644 --- a/opentelemetry-appender-tracing/README.md +++ b/opentelemetry-appender-tracing/README.md @@ -32,3 +32,18 @@ management, and export of telemetry. A major goal of OpenTelemetry is that you can easily instrument your applications or systems, no matter their language, infrastructure, or runtime environment. Crucially, the storage and visualization of telemetry is intentionally left to other tools. + +*[Supported Rust Versions](#supported-rust-versions)* + +## Supported Rust Versions + +OpenTelemetry is built against the latest stable release. The minimum supported +version is 1.70. The current OpenTelemetry version is not guaranteed to build +on Rust versions earlier than the minimum supported version. + +The current stable Rust compiler and the three most recent minor versions +before it will always be supported. For example, if the current stable compiler +version is 1.49, the minimum supported version will not be increased past 1.46, +three minor versions prior. Increasing the minimum supported compiler version +is not considered a semver breaking change as long as doing so complies with +this policy. diff --git a/opentelemetry-http/README.md b/opentelemetry-http/README.md index 7ab8fe98bb..5eb17021de 100644 --- a/opentelemetry-http/README.md +++ b/opentelemetry-http/README.md @@ -28,3 +28,18 @@ management, and export of telemetry. A major goal of OpenTelemetry is that you can easily instrument your applications or systems, no matter their language, infrastructure, or runtime environment. Crucially, the storage and visualization of telemetry is intentionally left to other tools. + +*[Supported Rust Versions](#supported-rust-versions)* + +## Supported Rust Versions + +OpenTelemetry is built against the latest stable release. The minimum supported +version is 1.70. The current OpenTelemetry version is not guaranteed to build +on Rust versions earlier than the minimum supported version. + +The current stable Rust compiler and the three most recent minor versions +before it will always be supported. For example, if the current stable compiler +version is 1.49, the minimum supported version will not be increased past 1.46, +three minor versions prior. Increasing the minimum supported compiler version +is not considered a semver breaking change as long as doing so complies with +this policy. diff --git a/opentelemetry-jaeger-propagator/README.md b/opentelemetry-jaeger-propagator/README.md index 9098e96a6a..30f5d45da5 100644 --- a/opentelemetry-jaeger-propagator/README.md +++ b/opentelemetry-jaeger-propagator/README.md @@ -28,3 +28,18 @@ management, and export of telemetry. A major goal of OpenTelemetry is that you can easily instrument your applications or systems, no matter their language, infrastructure, or runtime environment. Crucially, the storage and visualization of telemetry is intentionally left to other tools. + +*[Supported Rust Versions](#supported-rust-versions)* + +## Supported Rust Versions + +OpenTelemetry is built against the latest stable release. The minimum supported +version is 1.70. The current OpenTelemetry version is not guaranteed to build +on Rust versions earlier than the minimum supported version. + +The current stable Rust compiler and the three most recent minor versions +before it will always be supported. For example, if the current stable compiler +version is 1.49, the minimum supported version will not be increased past 1.46, +three minor versions prior. Increasing the minimum supported compiler version +is not considered a semver breaking change as long as doing so complies with +this policy. diff --git a/opentelemetry-jaeger-propagator/src/lib.rs b/opentelemetry-jaeger-propagator/src/lib.rs index c8047eb11b..29921058a3 100644 --- a/opentelemetry-jaeger-propagator/src/lib.rs +++ b/opentelemetry-jaeger-propagator/src/lib.rs @@ -1,10 +1,9 @@ -//! *Compiler support: [requires `rustc` 1.64+][msrv]* +//! *[Supported Rust Versions](#supported-rust-versions)* //! //! [Jaeger Docs]: https://www.jaegertracing.io/docs/ //! [jaeger-deprecation]: https://github.com/open-telemetry/opentelemetry-specification/pull/2858/files //! [jaeger-otlp]: https://www.jaegertracing.io/docs/1.38/apis/#opentelemetry-protocol-stable //! [otlp-exporter]: https://docs.rs/opentelemetry-otlp/latest/opentelemetry_otlp/ -//! [msrv]: #supported-rust-versions //! [jaeger propagation format]: https://www.jaegertracing.io/docs/1.18/client-libraries/#propagation-format //! //! # Supported Rust Versions diff --git a/opentelemetry-otlp/README.md b/opentelemetry-otlp/README.md index ae157c6562..f06049a0b5 100644 --- a/opentelemetry-otlp/README.md +++ b/opentelemetry-otlp/README.md @@ -30,11 +30,10 @@ can easily instrument your applications or systems, no matter their language, infrastructure, or runtime environment. Crucially, the storage and visualization of telemetry is intentionally left to other tools. -*Compiler support: [requires `rustc` 1.71.1+][msrv]* +*[Supported Rust Versions](#supported-rust-versions)* [Prometheus]: https://prometheus.io [Jaeger]: https://www.jaegertracing.io -[msrv]: #supported-rust-versions ## Getting started diff --git a/opentelemetry-proto/README.md b/opentelemetry-proto/README.md index 6e0a920048..e46a07e4c1 100644 --- a/opentelemetry-proto/README.md +++ b/opentelemetry-proto/README.md @@ -6,5 +6,17 @@ This crate contains generated files from [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-proto) repository and transformation between types from generated files and types defined in [opentelemetry](https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry). +*[Supported Rust Versions](#supported-rust-versions)* -*Compiler support: [requires `rustc` 1.71.1+] \ No newline at end of file +## Supported Rust Versions + +OpenTelemetry is built against the latest stable release. The minimum supported +version is 1.71.1. The current OpenTelemetry version is not guaranteed to build +on Rust versions earlier than the minimum supported version. + +The current stable Rust compiler and the three most recent minor versions +before it will always be supported. For example, if the current stable compiler +version is 1.49, the minimum supported version will not be increased past 1.46, +three minor versions prior. Increasing the minimum supported compiler version +is not considered a semver breaking change as long as doing so complies with +this policy. \ No newline at end of file diff --git a/opentelemetry-sdk/README.md b/opentelemetry-sdk/README.md index f3c0e98c8e..cd965acf14 100644 --- a/opentelemetry-sdk/README.md +++ b/opentelemetry-sdk/README.md @@ -29,11 +29,10 @@ can easily instrument your applications or systems, no matter their language, infrastructure, or runtime environment. Crucially, the storage and visualization of telemetry is intentionally left to other tools. -*Compiler support: [requires `rustc` 1.70+][msrv]* +*[Supported Rust Versions](#supported-rust-versions)* [Prometheus]: https://prometheus.io [Jaeger]: https://www.jaegertracing.io -[msrv]: #supported-rust-versions ### What does this crate contain? @@ -104,7 +103,7 @@ See [docs](https://docs.rs/opentelemetry-sdk). ## Supported Rust Versions OpenTelemetry is built against the latest stable release. The minimum supported -version is 1.65. The current OpenTelemetry version is not guaranteed to build +version is 1.70. The current OpenTelemetry version is not guaranteed to build on Rust versions earlier than the minimum supported version. The current stable Rust compiler and the three most recent minor versions diff --git a/opentelemetry-sdk/src/lib.rs b/opentelemetry-sdk/src/lib.rs index 2c07f1c2ea..aeeaa229c7 100644 --- a/opentelemetry-sdk/src/lib.rs +++ b/opentelemetry-sdk/src/lib.rs @@ -1,6 +1,6 @@ //! Implements the [`SDK`] component of [OpenTelemetry]. //! -//! *Compiler support: [requires `rustc` 1.70+][msrv]* +//! *[Supported Rust Versions](#supported-rust-versions)* //! //! [`SDK`]: https://opentelemetry.io/docs/specs/otel/overview/#sdk //! [OpenTelemetry]: https://opentelemetry.io/docs/what-is-opentelemetry/ diff --git a/opentelemetry-semantic-conventions/README.md b/opentelemetry-semantic-conventions/README.md index 30cac21533..8c6e71294f 100644 --- a/opentelemetry-semantic-conventions/README.md +++ b/opentelemetry-semantic-conventions/README.md @@ -22,3 +22,18 @@ resources to help facilitate interoperability and compatibility with processing and visualization tools. [`opentelemetry`]: https://crates.io/crates/opentelemetry + +*[Supported Rust Versions](#supported-rust-versions)* + +## Supported Rust Versions + +OpenTelemetry is built against the latest stable release. The minimum supported +version is 1.70. The current OpenTelemetry version is not guaranteed to build +on Rust versions earlier than the minimum supported version. + +The current stable Rust compiler and the three most recent minor versions +before it will always be supported. For example, if the current stable compiler +version is 1.49, the minimum supported version will not be increased past 1.46, +three minor versions prior. Increasing the minimum supported compiler version +is not considered a semver breaking change as long as doing so complies with +this policy. \ No newline at end of file diff --git a/opentelemetry-stdout/README.md b/opentelemetry-stdout/README.md index 519bda2bd4..593f68186a 100644 --- a/opentelemetry-stdout/README.md +++ b/opentelemetry-stdout/README.md @@ -29,11 +29,10 @@ can easily instrument your applications or systems, no matter their language, infrastructure, or runtime environment. Crucially, the storage and visualization of telemetry is intentionally left to other tools. -*Compiler support: [requires `rustc` 1.70+][msrv]* +*[Supported Rust Versions](#supported-rust-versions)* [Prometheus]: https://prometheus.io [Jaeger]: https://www.jaegertracing.io -[msrv]: #supported-rust-versions ### What does this crate contain? @@ -50,7 +49,7 @@ See [docs](https://docs.rs/opentelemetry-stdout). ## Supported Rust Versions OpenTelemetry is built against the latest stable release. The minimum supported -version is 1.65. The current OpenTelemetry version is not guaranteed to build +version is 1.70. The current OpenTelemetry version is not guaranteed to build on Rust versions earlier than the minimum supported version. The current stable Rust compiler and the three most recent minor versions diff --git a/opentelemetry-zipkin/README.md b/opentelemetry-zipkin/README.md index bf2238413f..53a7e92fff 100644 --- a/opentelemetry-zipkin/README.md +++ b/opentelemetry-zipkin/README.md @@ -30,6 +30,8 @@ of telemetry is intentionally left to other tools. [`Zipkin`]: https://zipkin.io/ [`OpenTelemetry`]: https://crates.io/crates/opentelemetry +*[Supported Rust Versions](#supported-rust-versions)* + ## Quickstart First make sure you have a running version of the zipkin process you want to diff --git a/opentelemetry/README.md b/opentelemetry/README.md index d96e2851f2..9e686da66e 100644 --- a/opentelemetry/README.md +++ b/opentelemetry/README.md @@ -15,130 +15,6 @@ This crate contains the [OpenTelemetry](https://opentelemetry.io/) API for Rust. ## Overview -OpenTelemetry is an Observability framework and toolkit designed to create and -manage telemetry data such as traces, metrics, and logs. OpenTelemetry is -vendor- and tool-agnostic, meaning that it can be used with a broad variety of -Observability backends, including open source tools like [Jaeger] and -[Prometheus], as well as commercial offerings. - -OpenTelemetry is *not* an observability backend like Jaeger, Prometheus, or other -commercial vendors. OpenTelemetry is focused on the generation, collection, -management, and export of telemetry. A major goal of OpenTelemetry is that you -can easily instrument your applications or systems, no matter their language, -infrastructure, or runtime environment. Crucially, the storage and visualization -of telemetry is intentionally left to other tools. - -*Compiler support: [requires `rustc` 1.70+][msrv]* - -[Prometheus]: https://prometheus.io -[Jaeger]: https://www.jaegertracing.io -[msrv]: #supported-rust-versions - -### What does this crate contain? - -This crate is basic foundation for integrating OpenTelemetry into libraries and -applications, encompassing several aspects of OpenTelemetry, such as context -management and propagation, baggage, logging, tracing, and metrics. It follows -the [OpenTelemetry -specification](https://github.com/open-telemetry/opentelemetry-specification). -Here's a breakdown of its components: - -- **[Context - API](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/context/README.md):** - Provides a way to manage and propagate context, which is essential for keeping - track of trace execution across asynchronous tasks. -- **[Propagators - API](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/context/api-propagators.md):** - Defines how context can be shared across process boundaries, ensuring - continuity across microservices or distributed systems. -- **[Baggage - API](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/baggage/api.md):** - Allows for the attachment of metadata (baggage) to telemetry, which can be - used for sharing application-specific information across service boundaries. -- **[Logs Bridge - API](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/api.md):** - Allows to bridge existing logging mechanisms with OpenTelemetry logging. This - is **NOT** meant for end users to call, instead it is meant to enable writing - bridges/appenders for existing logging mechanisms such as - [log](https://crates.io/crates/log) or - [tracing](https://crates.io/crates/tracing). -- **[Tracing - API](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/api.md):** - Offers a set of primitives to produce distributed traces to understand the - flow of a request across system boundaries. -- **[Metrics - API](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/api.md):** - Offers a set of primitives to produce measurements of operational metrics like - latency, throughput, or error rates. - -This crate serves as a facade or no-op implementation, meaning it defines the -traits for instrumentation but does not itself implement the processing or -exporting of telemetry data. This separation of concerns allows library authors -to depend on the API crate without tying themselves to a specific -implementation. - -Actual implementation and the heavy lifting of telemetry data collection, -processing, and exporting are delegated to the -[opentelemetry-sdk](https://crates.io/crates/opentelemetry-sdk) crate and -various exporter crates such as -[opentelemetry-otlp](https://crates.io/crates/opentelemetry-otlp). This -architecture ensures that the final application can light up the instrumentation -by integrating an SDK implementation. - -Library authors are recommended to depend on this crate *only*. This approach is -also aligned with the design philosophy of existing telemetry solutions in the -Rust ecosystem, like `tracing` or `log`, where these crates only offer a facade -and the actual functionality is enabled through additional crates. - -### Related crates - -Unless you are a library author, you will almost always need to use additional -crates along with this. Given this crate has no-op implementation only, an -OpenTelemetry SDK is always required. -[opentelemetry-sdk](https://crates.io/crates/opentelemetry-sdk) is the official -SDK implemented by OpenTelemetry itself, though it is possible to use a -different sdk. - -Additionally one or more exporters are also required to export telemetry to a -destination. OpenTelemetry provides the following exporters: - -- **[opentelemetry-stdout](https://crates.io/crates/opentelemetry-stdout):** - Prints telemetry to stdout, primarily used for learning/debugging purposes. -- **[opentelemetry-otlp](https://crates.io/crates/opentelemetry-otlp):** Exports - telemetry (logs, metrics and traces) in the [OTLP - format](https://github.com/open-telemetry/opentelemetry-specification/tree/main/specification/protocol) - to an endpoint accepting OTLP. This could be the [OTel - Collector](https://github.com/open-telemetry/opentelemetry-collector), - telemetry backends like [Jaeger](https://www.jaegertracing.io/), - [Prometheus](https://prometheus.io/docs/prometheus/latest/feature_flags/#otlp-receiver) - or [vendor specific endpoints](https://opentelemetry.io/ecosystem/vendors/). -- **[opentelemetry-zipkin](https://crates.io/crates/opentelemetry-zipkin):** - Exports telemetry (traces only) to Zipkin following [OpenTelemetry to Zipkin - specification](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/sdk_exporters/zipkin.md) -- **[opentelemetry-prometheus](https://crates.io/crates/opentelemetry-prometheus):** - Exports telemetry (metrics only) to Prometheus following [OpenTelemetry to - Prometheus - specification](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/prometheus.md) - -OpenTelemetry Rust also has a [contrib -repo](https://github.com/open-telemetry/opentelemetry-rust-contrib), where -additional exporters could be found. Check [OpenTelemetry -Registry](https://opentelemetry.io/ecosystem/registry/?language=rust) for -additional exporters and other related components as well. - -## Getting started - See [docs](https://docs.rs/opentelemetry). -## Supported Rust Versions - -OpenTelemetry is built against the latest stable release. The minimum supported -version is 1.65. The current OpenTelemetry version is not guaranteed to build -on Rust versions earlier than the minimum supported version. -The current stable Rust compiler and the three most recent minor versions -before it will always be supported. For example, if the current stable compiler -version is 1.49, the minimum supported version will not be increased past 1.46, -three minor versions prior. Increasing the minimum supported compiler version -is not considered a semver breaking change as long as doing so complies with -this policy. diff --git a/opentelemetry/src/lib.rs b/opentelemetry/src/lib.rs index 77ff1974cc..bab7e1a6cf 100644 --- a/opentelemetry/src/lib.rs +++ b/opentelemetry/src/lib.rs @@ -1,11 +1,121 @@ //! Implements the [`API`] component of [OpenTelemetry]. //! -//! *Compiler support: [requires `rustc` 1.64+][msrv]* +//! *[Supported Rust Versions](#supported-rust-versions)* +//! *[Supported Rust Versions](#supported-rust-versions)* //! //! [`API`]: https://opentelemetry.io/docs/specs/otel/overview/#api //! [OpenTelemetry]: https://opentelemetry.io/docs/what-is-opentelemetry/ -//! [msrv]: #supported-rust-versions //! +//! [Jaeger]: https://www.jaegertracing.io/ +//! [Prometheus]: https://www.prometheus.io/ +//! +//! # Overview + +//! OpenTelemetry is an Observability framework and toolkit designed to create and +//! manage telemetry data such as traces, metrics, and logs. OpenTelemetry is +//! vendor- and tool-agnostic, meaning that it can be used with a broad variety of +//! Observability backends, including open source tools like [Jaeger] and +//! [Prometheus], as well as commercial offerings. + +//! OpenTelemetry is *not* an observability backend like Jaeger, Prometheus, or other +//! commercial vendors. OpenTelemetry is focused on the generation, collection, +//! management, and export of telemetry. A major goal of OpenTelemetry is that you +//! can easily instrument your applications or systems, no matter their language, +//! infrastructure, or runtime environment. Crucially, the storage and visualization +//! of telemetry is intentionally left to other tools. +//! +//! ## What does this crate contain? + +//! This crate is basic foundation for integrating OpenTelemetry into libraries and +//! applications, encompassing several aspects of OpenTelemetry, such as context +//! management and propagation, baggage, logging, tracing, and metrics. It follows +//! the [OpenTelemetry +//! specification](https://github.com/open-telemetry/opentelemetry-specification). +//! Here's a breakdown of its components: +//! +//! - **[Context +//! API](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/context/README.md):** +//! Provides a way to manage and propagate context, which is essential for keeping +//! track of trace execution across asynchronous tasks. +//! - **[Propagators +//! API](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/context/api-propagators.md):** +//! Defines how context can be shared across process boundaries, ensuring +//! continuity across microservices or distributed systems. +//! - **[Baggage +//! API](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/baggage/api.md):** +//! Allows for the attachment of metadata (baggage) to telemetry, which can be +//! used for sharing application-specific information across service boundaries. +//! - **[Logs Bridge +//! API](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/api.md):** +//! Allows to bridge existing logging mechanisms with OpenTelemetry logging. This +//! is **NOT** meant for end users to call, instead it is meant to enable writing +//! bridges/appenders for existing logging mechanisms such as +//! [log](https://crates.io/crates/log) or +//! [tracing](https://crates.io/crates/tracing). +//! - **[Tracing +//! API](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/api.md):** +//! Offers a set of primitives to produce distributed traces to understand the +//! flow of a request across system boundaries. +//! - **[Metrics +//! API](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/api.md):** +//! Offers a set of primitives to produce measurements of operational metrics like +//! latency, throughput, or error rates. +//! +//! This crate serves as a facade or no-op implementation, meaning it defines the +//! traits for instrumentation but does not itself implement the processing or +//! exporting of telemetry data. This separation of concerns allows library authors +//! to depend on the API crate without tying themselves to a specific +//! implementation. +//! +//! Actual implementation and the heavy lifting of telemetry data collection, +//! processing, and exporting are delegated to the +//! [opentelemetry-sdk](https://crates.io/crates/opentelemetry-sdk) crate and +//! various exporter crates such as +//! [opentelemetry-otlp](https://crates.io/crates/opentelemetry-otlp). This +//! architecture ensures that the final application can light up the instrumentation +//! by integrating an SDK implementation. +//! +//! Library authors are recommended to depend on this crate *only*. This approach is +//! also aligned with the design philosophy of existing telemetry solutions in the +//! Rust ecosystem, like `tracing` or `log`, where these crates only offer a facade +//! and the actual functionality is enabled through additional crates. +//! +//! ## Related crates + +//! Unless you are a library author, you will almost always need to use additional +//! crates along with this. Given this crate has no-op implementation only, an +//! OpenTelemetry SDK is always required. +//! [opentelemetry-sdk](https://crates.io/crates/opentelemetry-sdk) is the official +//! SDK implemented by OpenTelemetry itself, though it is possible to use a +//! different sdk. +//! +//! Additionally one or more exporters are also required to export telemetry to a +//! destination. OpenTelemetry provides the following exporters: +//! +//! - **[opentelemetry-stdout](https://crates.io/crates/opentelemetry-stdout):** +//! Prints telemetry to stdout, primarily used for learning/debugging purposes. +//! - **[opentelemetry-otlp](https://crates.io/crates/opentelemetry-otlp):** Exports +//! telemetry (logs, metrics and traces) in the [OTLP +//! format](https://github.com/open-telemetry/opentelemetry-specification/tree/main/specification/protocol) +//! to an endpoint accepting OTLP. This could be the [OTel +//! Collector](https://github.com/open-telemetry/opentelemetry-collector), +//! telemetry backends like [Jaeger](https://www.jaegertracing.io/), +//! [Prometheus](https://prometheus.io/docs/prometheus/latest/feature_flags/#otlp-receiver) +//! or [vendor specific endpoints](https://opentelemetry.io/ecosystem/vendors/). +//! - **[opentelemetry-zipkin](https://crates.io/crates/opentelemetry-zipkin):** +//! Exports telemetry (traces only) to Zipkin following [OpenTelemetry to Zipkin +//! specification](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/sdk_exporters/zipkin.md) +//! - **[opentelemetry-prometheus](https://crates.io/crates/opentelemetry-prometheus):** +//! Exports telemetry (metrics only) to Prometheus following [OpenTelemetry to +//! Prometheus +//! specification](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/sdk_exporters/prometheus.md) +//! +//! OpenTelemetry Rust also has a [contrib +//! repo](https://github.com/open-telemetry/opentelemetry-rust-contrib), where +//! additional exporters could be found. Check [OpenTelemetry +//! Registry](https://opentelemetry.io/ecosystem/registry/?language=rust) for +//! additional exporters and other related components as well. +//! //! # Getting Started //! //! ```no_run @@ -25,7 +135,7 @@ //! //! [examples]: https://github.com/open-telemetry/opentelemetry-rust/tree/main/examples //! -//! # Traces +//! ## Traces //! //! The [`trace`] module includes types for tracking the progression of a single //! request while it is handled by services that make up an application. A trace @@ -33,7 +143,7 @@ //! by individual services or components involved in a request as it flows //! through a system. //! -//! ### Creating and exporting spans +//! ### Creating spans //! //! ``` //! # #[cfg(feature = "trace")] @@ -61,7 +171,7 @@ //! //! [`Span`]: crate::trace::Span //! -//! # Metrics +//! ## Metrics //! //! //! The [`metrics`] module includes types for recording measurements about a @@ -89,7 +199,7 @@ //! managing instruments. //! //! -//! # Logs +//! ## Logs //! //! The [`logs`] module contains the Logs Bridge API. It is not intended to be //! called by application developers directly. It is provided for logging @@ -103,15 +213,16 @@ //! [`opentelemetry-appender-tracing`](https://crates.io/crates/opentelemetry-appender-tracing) //! crates. //! -//! ## Crate Feature Flags +//! ## Feature Flags //! //! The following core crate feature flags are available: //! //! * `trace`: Includes the trace API. //! * `metrics`: Includes the metrics API. //! * `logs`: Includes the logs bridge API. +//! * `internal-logs`: Enables internal logging via `tracing`. //! -//! The default feature flags are ["trace", "metrics", "logs"] +//! The default feature flags are ["trace", "metrics", "logs", "internal-logs"]. //! //! The following feature flags provides additional configuration for `logs`: //! * `spec_unstable_logs_enabled`: Allow users to control the log level @@ -119,32 +230,6 @@ //! The following feature flags enable APIs defined in OpenTelemetry specification that is in experimental phase: //! * `otel_unstable`: Includes unstable APIs. //! -//! ## Related Crates -//! -//! In addition to `opentelemetry`, the [`open-telemetry/opentelemetry-rust`] -//! repository contains several additional crates designed to be used with the -//! `opentelemetry` ecosystem. This includes exporters, samplers, as well as -//! utility and adapter crates to assist in propagating context and -//! instrumenting applications. -//! -//! In particular, the following crates are likely to be of interest: -//! -//! - [`opentelemetry_sdk`] provides the OpenTelemetry SDK used to configure providers. -//! - [`opentelemetry-http`] provides an interface for injecting and extracting -//! trace information from [`http`] headers. -//! - [`opentelemetry-otlp`] exporter for sending telemetry in the -//! OTLP format. -//! - [`opentelemetry-prometheus`] provides a pipeline and exporter for sending -//! metrics information to [`Prometheus`]. -//! - [`opentelemetry-zipkin`] provides a pipeline and exporter for sending -//! trace information to [`Zipkin`]. -//! -//! In addition, there are several other useful crates in the [OTel Rust -//! Contrib -//! repo](https://github.com/open-telemetry/opentelemetry-rust-contrib). A lot -//! of crates maintained outside OpenTelemetry owned repos can be found in the -//! [OpenTelemetry -//! Registry](https://opentelemetry.io/ecosystem/registry/?language=rust). //! //! [`http`]: https://crates.io/crates/http //! [`open-telemetry/opentelemetry-rust`]: https://github.com/open-telemetry/opentelemetry-rust @@ -159,9 +244,12 @@ //! ## Supported Rust Versions //! //! OpenTelemetry is built against the latest stable release. The minimum -//! supported version is 1.64. The current OpenTelemetry version is not +//! supported version is 1.70. The current OpenTelemetry version is not //! guaranteed to build on Rust versions earlier than the minimum supported //! version. +//! This crate is built against the latest stable release. The minimum supported +//! version is 1.70. The current version is not guaranteed to build on Rust +//! versions earlier than the minimum supported version. //! //! The current stable Rust compiler and the three most recent minor versions //! before it will always be supported. For example, if the current stable