apollo-opentelemetry 0.8.0

OpenTelemetry configuration types for Apollo platform
Documentation
//! Exporter configuration types.
//!
//! This module provides first-class enum variants for exporters rather than
//! using OTel's `distribution` extension block.

mod console;
#[cfg(feature = "datadog")]
mod datadog;
#[cfg(feature = "datadog-otlp")]
mod datadog_otlp;
#[cfg(feature = "grafana-cloud")]
mod grafana_cloud;
#[cfg(feature = "honeycomb")]
mod honeycomb;
#[cfg(feature = "new-relic")]
mod new_relic;
#[cfg(feature = "otlp")]
mod otlp;

pub(crate) use console::ConsoleExporterConfig;
#[cfg(feature = "datadog")]
pub(crate) use datadog::DatadogNativeExporterConfig;
#[cfg(feature = "datadog-otlp")]
pub(crate) use datadog_otlp::{DatadogGrpcExporterConfig, DatadogHttpExporterConfig};
#[cfg(feature = "grafana-cloud")]
pub(crate) use grafana_cloud::GrafanaCloudHttpExporterConfig;
#[cfg(feature = "honeycomb")]
pub(crate) use honeycomb::{HoneycombGrpcExporterConfig, HoneycombHttpExporterConfig};
#[cfg(feature = "new-relic")]
pub(crate) use new_relic::{NewRelicGrpcExporterConfig, NewRelicHttpExporterConfig};
#[cfg(feature = "otlp")]
pub(crate) use otlp::Header;
#[cfg(feature = "otlp")]
pub(crate) use otlp::{
    HeadersList, OtlpGrpcExporterConfig, OtlpHttpExporterConfig, TemporalityPreference,
};

use apollo_configuration::configuration;

/// Span exporter configuration.
#[configuration]
pub(crate) enum SpanExporter {
    /// OTLP over HTTP (default port 4318).
    #[cfg(feature = "otlp")]
    OtlpHttp(OtlpHttpExporterConfig),
    /// OTLP over gRPC (default port 4317).
    #[cfg(feature = "otlp")]
    OtlpGrpc(OtlpGrpcExporterConfig),
    /// Datadog exporter.
    #[cfg(feature = "datadog")]
    Datadog(DatadogNativeExporterConfig),
    /// Datadog OTLP direct intake over HTTP (agentless).
    #[cfg(feature = "datadog-otlp")]
    DatadogOtlpHttp(DatadogHttpExporterConfig),
    /// Datadog OTLP direct intake over gRPC (agentless).
    #[cfg(feature = "datadog-otlp")]
    DatadogOtlpGrpc(DatadogGrpcExporterConfig),
    /// New Relic over HTTP.
    #[cfg(feature = "new-relic")]
    NewRelicHttp(NewRelicHttpExporterConfig),
    /// New Relic over gRPC.
    #[cfg(feature = "new-relic")]
    NewRelicGrpc(NewRelicGrpcExporterConfig),
    /// Honeycomb over HTTP.
    #[cfg(feature = "honeycomb")]
    HoneycombHttp(HoneycombHttpExporterConfig),
    /// Honeycomb over gRPC.
    #[cfg(feature = "honeycomb")]
    HoneycombGrpc(HoneycombGrpcExporterConfig),
    /// Grafana Cloud OTLP exporter.
    #[cfg(feature = "grafana-cloud")]
    GrafanaCloud(GrafanaCloudHttpExporterConfig),
    /// Console exporter for debugging.
    Console(ConsoleExporterConfig),
}

/// Metric exporter configuration.
#[configuration]
pub(crate) enum MetricExporter {
    /// OTLP over HTTP (default port 4318).
    #[cfg(feature = "otlp")]
    OtlpHttp(OtlpHttpExporterConfig),
    /// OTLP over gRPC (default port 4317).
    #[cfg(feature = "otlp")]
    OtlpGrpc(OtlpGrpcExporterConfig),
    /// Datadog OTLP direct intake over HTTP (agentless).
    #[cfg(feature = "datadog-otlp")]
    DatadogOtlpHttp(DatadogHttpExporterConfig),
    /// Datadog OTLP direct intake over gRPC (agentless).
    #[cfg(feature = "datadog-otlp")]
    DatadogOtlpGrpc(DatadogGrpcExporterConfig),
    /// New Relic over HTTP.
    #[cfg(feature = "new-relic")]
    NewRelicHttp(NewRelicHttpExporterConfig),
    /// New Relic over gRPC.
    #[cfg(feature = "new-relic")]
    NewRelicGrpc(NewRelicGrpcExporterConfig),
    /// Honeycomb over HTTP.
    #[cfg(feature = "honeycomb")]
    HoneycombHttp(HoneycombHttpExporterConfig),
    /// Honeycomb over gRPC.
    #[cfg(feature = "honeycomb")]
    HoneycombGrpc(HoneycombGrpcExporterConfig),
    /// Grafana Cloud OTLP exporter.
    #[cfg(feature = "grafana-cloud")]
    GrafanaCloud(GrafanaCloudHttpExporterConfig),
    /// Console exporter for debugging.
    Console(ConsoleExporterConfig),
}

/// Log exporter configuration.
#[configuration]
pub(crate) enum LogExporter {
    /// OTLP over HTTP (default port 4318).
    #[cfg(feature = "otlp")]
    OtlpHttp(OtlpHttpExporterConfig),
    /// OTLP over gRPC (default port 4317).
    #[cfg(feature = "otlp")]
    OtlpGrpc(OtlpGrpcExporterConfig),
    /// Datadog OTLP direct intake over HTTP (agentless).
    #[cfg(feature = "datadog-otlp")]
    DatadogOtlpHttp(DatadogHttpExporterConfig),
    /// Datadog OTLP direct intake over gRPC (agentless).
    #[cfg(feature = "datadog-otlp")]
    DatadogOtlpGrpc(DatadogGrpcExporterConfig),
    /// New Relic over HTTP.
    #[cfg(feature = "new-relic")]
    NewRelicHttp(NewRelicHttpExporterConfig),
    /// New Relic over gRPC.
    #[cfg(feature = "new-relic")]
    NewRelicGrpc(NewRelicGrpcExporterConfig),
    /// Honeycomb over HTTP.
    #[cfg(feature = "honeycomb")]
    HoneycombHttp(HoneycombHttpExporterConfig),
    /// Honeycomb over gRPC.
    #[cfg(feature = "honeycomb")]
    HoneycombGrpc(HoneycombGrpcExporterConfig),
    /// Grafana Cloud OTLP exporter.
    #[cfg(feature = "grafana-cloud")]
    GrafanaCloud(GrafanaCloudHttpExporterConfig),
    /// Console exporter for debugging.
    Console(ConsoleExporterConfig),
}