4 releases (breaking)

0.4.0 Oct 26, 2023
0.3.0 Mar 26, 2023
0.2.0 Sep 13, 2022
0.1.0 Jan 22, 2022

#85 in #open-telemetry

Apache-2.0

1MB
20K SLoC

OpenTelemetry — An observability framework for cloud-native software.

Dynatrace

This is the last release of the crate!

Dynatrace supports native OpenTelemetry protocol (OTLP) ingest for traces, metrics and logs. All signals can be sent directly to Dynatrace via OTLP protobuf over HTTP using the built-in OTLP/HTTP Exporter available in the OpenTelemetry Rust SDK. More information on configuring your Rust applications to use the OTLP exporter can be found in the Dynatrace documentation.

Dynatrace OpenTelemetry Metrics Exporter for Rust

Static Badge Crates.io: opentelemetry-dynatrace Documentation LICENSE GitHub Actions CI Slack

Warning Dynatrace supports native OpenTelemetry protocol (OTLP) ingest for traces, metrics and logs. Therefore, the proprietary Dynatrace OpenTelemetry metrics exporter is deprecated in favor of exporting via OTLP/HTTP.

The exporter is still available but after the end of 2023, no support, updates, or compatibility with newer OTel versions will be provided.

Please refer to the migration guide for instructions on how to migrate to the OTLP HTTP exporter, as well as reasoning and benefits for this transition.

For an example on how to configure the OTLP exporter in a Rust application, check out the Rust integration walk-through page in the Dynatrace documentation.

Overview

OpenTelemetry is a collection of tools, APIs, and SDKs used to instrument, generate, collect, and export telemetry data (metrics, logs, and traces) for analysis in order to understand your software's performance and behavior. This crate provides additional propagators and exporters for sending telemetry data to Dynatrace.

Exporter features

This exporter only supports the ingestion of metric data. For trace data, use opentelemetry-otlp as described in the Dynatrace documentation for Rust. This exporter is based on the OpenTelemetry Metrics SDK for Rust, which is currently in an alpha state and neither considered stable nor complete as of this writing. As such, this exporter is not intended for production use until the underlying OpenTelemetry Metrics API and SDK are stable. See open-telemetry/opentelemetry-rust for the current state of the OpenTelemetry SDK for Rust.

Examples

The examples directory contains an advanced example showing the ingestion of trace data and metric data together.

Performance

For optimal performance, a batch exporter is used. You can enable the rt-tokio feature flag to use the tokio runtime, or enable the rt-async-std feature flag to use the async-std runtime to have a batch exporter configured for you automatically.

Choosing an HTTP client

The HTTP client that this exporter will use can be overridden with feature flags. By default the reqwest-client feature flag is enabled which will use the reqwest http client.

  • reqwest-client (enabled by default): use the reqwest http client to send metric data.
  • reqwest-tls (enabled by default): use the reqwest http client with rustls to enable TLS support.
  • reqwest-blocking-client: use the reqwest blocking http client to send metric data.
  • isahc-client: use the isahc http client to send metric data.
  • surf-client: use the surf http client to send metric data.

You can also configure your own http client implementation using the HttpClient trait.

WebAssembly

WebAssembly support can be enabled with the wasm feature flag.

Dependencies

~3–20MB
~297K SLoC