Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

OpenTelemetry AWS

OpenTelemetry — An observability framework for cloud-native software.

Status
Stability beta
Owners Jonathan Lee, Chinmay Chahar

Additional types for exporting OpenTelemetry data to AWS.

Crates.io: opentelemetry-aws Documentation Slack

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 AWS's telemetry platform.

Components

Component Feature Description
X-Ray Propagator trace Propagates trace context using the X-Amzn-Trace-Id header
X-Ray ID Generator trace Generates X-Ray-compatible trace and span IDs (time-based trace IDs)
X-Ray Exporter xray-exporter Exports OpenTelemetry spans as X-Ray segment documents
Lambda Resource Detector detector-aws-lambda Detects AWS Lambda resource attributes from the environment

Quick Start

Basic setup forwarding Segments to the local X-Ray daemon (requires xray-daemon-client feature):

use opentelemetry_aws::{
    trace::XrayIdGenerator,
    xray_exporter::{XrayExporter, daemon_client::XrayDaemonClient},
};
use opentelemetry_sdk::trace::SdkTracerProvider;
use opentelemetry::global;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Create a client that sends to the X-Ray daemon on localhost:2000 (UDP)
    let daemon_addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 2000);
    let client = XrayDaemonClient::new(daemon_addr)?;

    // Create the exporter
    let exporter = XrayExporter::new(client);

    // Build and register the tracer provider
    let provider = SdkTracerProvider::builder()
        .with_id_generator(XrayIdGenerator::default())
        .with_batch_exporter(exporter)
        .build();

    global::set_tracer_provider(provider);
    Ok(())
}

Feature Flags

Feature Default Description
trace Yes X-Ray propagator and ID generator
xray-exporter No X-Ray span exporter with SegmentTranslator and SegmentDocumentExporter trait
xray-daemon-client No XrayDaemonClient — UDP client for the X-Ray daemon
xray-stdout-client No StdoutClient — writes segment documents to stdout (useful for debugging)
subsegment-nesting No Enables subsegment nesting within parent segments during translation
detector-aws-lambda No AWS Lambda resource detector
internal-logs Yes Internal instrumentation via the tracing crate