apollo-opentelemetry 0.8.0

OpenTelemetry configuration types for Apollo platform
Documentation
//! Meter provider configuration.
//!
//! See the [OpenTelemetry Metrics SDK specification](https://opentelemetry.io/docs/specs/otel/metrics/sdk/)
//! for details.

mod reader;
mod view;

pub(crate) use reader::MetricReader;
pub(crate) use view::ViewConfig;

use apollo_configuration::configuration;

/// Meter provider configuration.
#[configuration]
pub(crate) struct MeterProviderConfig {
    /// Metric readers for collecting and exporting metrics.
    pub(crate) readers: Vec<MetricReader>,

    /// Views for customizing metric aggregation.
    pub(crate) views: Vec<ViewConfig>,
}

#[cfg(test)]
mod tests {
    use apollo_configuration::parse_yaml;

    use crate::config::OpenTelemetryConfig;

    #[test]
    fn parse_meter_provider() {
        let config: OpenTelemetryConfig = parse_yaml(
            indoc::indoc! {"
                meter_provider:
                  readers:
                    - periodic:
                        exporter:
                          console: {}
                        interval: 60000
            "},
            &Default::default(),
        )
        .unwrap();

        assert_eq!(config.meter_provider.readers.len(), 1);
    }
}