Bump to opentelemetry 0.31
This commit is contained in:
@@ -43,10 +43,10 @@ x509-parser = "0.18"
|
||||
pem = "3.0"
|
||||
chrono = { version = "0.4", features = ["serde"] }
|
||||
hyper = { version = "1.0.1", features = ["server", "http1", "http2"] }
|
||||
opentelemetry = { version = "0.29" }
|
||||
opentelemetry_sdk = { version = "0.29" }
|
||||
opentelemetry-otlp = { version = "0.29", default-features = false, features = ["reqwest-client", "http-proto", "trace", "metrics", "logs", "internal-logs", "grpc-tonic", "tls-roots", "reqwest-rustls"] }
|
||||
opentelemetry-semantic-conventions = { version = "0.29.0" }
|
||||
opentelemetry = { git = "https://github.com/stalwartlabs/opentelemetry-rust" }
|
||||
opentelemetry_sdk = { git = "https://github.com/stalwartlabs/opentelemetry-rust" }
|
||||
opentelemetry-otlp = { git = "https://github.com/stalwartlabs/opentelemetry-rust", default-features = false, features = ["reqwest-client", "http-proto", "trace", "metrics", "logs", "internal-logs", "grpc-tonic", "tls-aws-lc", "tls-roots", "reqwest-rustls"] }
|
||||
opentelemetry-semantic-conventions = { git = "https://github.com/stalwartlabs/opentelemetry-rust" }
|
||||
prometheus = { version = "0.14", default-features = false }
|
||||
imagesize = "0.14"
|
||||
sha1 = "0.11"
|
||||
@@ -64,7 +64,7 @@ pwhash = "1.0.0"
|
||||
xxhash-rust = { version = "0.8.5", features = ["xxh3"] }
|
||||
psl = "2"
|
||||
aes-gcm-siv = "0.11.1"
|
||||
biscuit = "0.7.0"
|
||||
biscuit = "0.8.0"
|
||||
rsa = "0.9.2"
|
||||
p256 = { version = "0.13", features = ["ecdh"] }
|
||||
p384 = { version = "0.13", features = ["ecdh"] }
|
||||
|
||||
@@ -8,15 +8,11 @@ use crate::config::storage::Storage;
|
||||
use ahash::{AHashMap, AHashSet};
|
||||
use base64::{Engine, engine::general_purpose::STANDARD};
|
||||
use hyper::HeaderMap;
|
||||
use opentelemetry::{InstrumentationScope, KeyValue, logs::LoggerProvider};
|
||||
use opentelemetry::{InstrumentationScope, KeyValue};
|
||||
use opentelemetry_otlp::{
|
||||
LogExporter, MetricExporter, SpanExporter, WithExportConfig, WithHttpConfig,
|
||||
};
|
||||
use opentelemetry_sdk::{
|
||||
Resource,
|
||||
logs::{SdkLogger, SdkLoggerProvider},
|
||||
metrics::Temporality,
|
||||
};
|
||||
use opentelemetry_sdk::{Resource, metrics::Temporality};
|
||||
use opentelemetry_semantic_conventions::resource::SERVICE_VERSION;
|
||||
use registry::schema::{
|
||||
enums::{EventPolicy, LogRotateFrequency},
|
||||
@@ -57,7 +53,6 @@ pub struct OtelTracer {
|
||||
pub span_exporter: SpanExporter,
|
||||
pub span_exporter_enable: bool,
|
||||
pub log_exporter: LogExporter,
|
||||
pub log_provider: SdkLogger,
|
||||
pub log_exporter_enable: bool,
|
||||
pub throttle: Duration,
|
||||
}
|
||||
@@ -307,9 +302,6 @@ impl Tracers {
|
||||
throttle: tracer.throttle.into_inner(),
|
||||
span_exporter_enable: tracer.enable_span_exporter,
|
||||
log_exporter_enable: tracer.enable_log_exporter,
|
||||
log_provider: SdkLoggerProvider::builder()
|
||||
.build()
|
||||
.logger("stalwart"),
|
||||
})
|
||||
}
|
||||
(Err(err), _) => {
|
||||
@@ -356,9 +348,6 @@ impl Tracers {
|
||||
throttle: tracer.throttle.into_inner(),
|
||||
span_exporter_enable: tracer.enable_span_exporter,
|
||||
log_exporter_enable: tracer.enable_log_exporter,
|
||||
log_provider: SdkLoggerProvider::builder()
|
||||
.build()
|
||||
.logger("stalwart"),
|
||||
})
|
||||
}
|
||||
(Err(err), _) => {
|
||||
|
||||
@@ -8,8 +8,8 @@ use crate::config::telemetry::OtelMetrics;
|
||||
use opentelemetry_sdk::metrics::{
|
||||
Temporality,
|
||||
data::{
|
||||
Gauge, GaugeDataPoint, Histogram, HistogramDataPoint, Metric, ResourceMetrics,
|
||||
ScopeMetrics, Sum, SumDataPoint,
|
||||
AggregatedMetrics, Gauge, GaugeDataPoint, Histogram, HistogramDataPoint, Metric,
|
||||
MetricData, ResourceMetrics, ScopeMetrics, Sum, SumDataPoint,
|
||||
},
|
||||
exporter::PushMetricExporter,
|
||||
};
|
||||
@@ -23,78 +23,64 @@ impl OtelMetrics {
|
||||
|
||||
// Add counters
|
||||
for counter in Collector::collect_counters(is_enterprise) {
|
||||
metrics.push(Metric {
|
||||
name: counter.id().as_str().into(),
|
||||
description: counter.id().description().into(),
|
||||
unit: "events".into(),
|
||||
data: Box::new(Sum {
|
||||
data_points: vec![SumDataPoint {
|
||||
attributes: vec![],
|
||||
value: counter.value(),
|
||||
exemplars: vec![],
|
||||
}],
|
||||
temporality: Temporality::Cumulative,
|
||||
is_monotonic: true,
|
||||
metrics.push(Metric::new(
|
||||
counter.id().as_str(),
|
||||
counter.id().description(),
|
||||
"events",
|
||||
AggregatedMetrics::U64(MetricData::Sum(Sum::new(
|
||||
vec![SumDataPoint::new(vec![], counter.value(), vec![])],
|
||||
start_time,
|
||||
time,
|
||||
}),
|
||||
});
|
||||
Temporality::Cumulative,
|
||||
true,
|
||||
))),
|
||||
));
|
||||
}
|
||||
|
||||
// Add gauges
|
||||
for gauge in Collector::collect_gauges(is_enterprise) {
|
||||
metrics.push(Metric {
|
||||
name: gauge.id().as_str().into(),
|
||||
description: gauge.id().description().into(),
|
||||
unit: gauge.id().unit().into(),
|
||||
data: Box::new(Gauge {
|
||||
data_points: vec![GaugeDataPoint {
|
||||
attributes: vec![],
|
||||
value: gauge.get(),
|
||||
exemplars: vec![],
|
||||
}],
|
||||
start_time: start_time.into(),
|
||||
metrics.push(Metric::new(
|
||||
gauge.id().as_str(),
|
||||
gauge.id().description(),
|
||||
gauge.id().unit(),
|
||||
AggregatedMetrics::U64(MetricData::Gauge(Gauge::new(
|
||||
vec![GaugeDataPoint::new(vec![], gauge.get(), vec![])],
|
||||
Some(start_time),
|
||||
time,
|
||||
}),
|
||||
});
|
||||
))),
|
||||
));
|
||||
}
|
||||
|
||||
// Add histograms
|
||||
for histogram in Collector::collect_histograms(is_enterprise) {
|
||||
metrics.push(Metric {
|
||||
name: histogram.id().as_str().into(),
|
||||
description: histogram.id().description().into(),
|
||||
unit: histogram.id().unit().into(),
|
||||
data: Box::new(Histogram {
|
||||
data_points: vec![HistogramDataPoint {
|
||||
attributes: vec![],
|
||||
count: histogram.count(),
|
||||
bounds: histogram.upper_bounds_vec(),
|
||||
bucket_counts: histogram.buckets_vec(),
|
||||
min: histogram.min(),
|
||||
max: histogram.max(),
|
||||
sum: histogram.sum(),
|
||||
exemplars: vec![],
|
||||
}],
|
||||
temporality: Temporality::Cumulative,
|
||||
metrics.push(Metric::new(
|
||||
histogram.id().as_str(),
|
||||
histogram.id().description(),
|
||||
histogram.id().unit(),
|
||||
AggregatedMetrics::U64(MetricData::Histogram(Histogram::new(
|
||||
vec![HistogramDataPoint::new(
|
||||
vec![],
|
||||
histogram.count(),
|
||||
histogram.upper_bounds_vec(),
|
||||
histogram.buckets_vec(),
|
||||
histogram.min(),
|
||||
histogram.max(),
|
||||
histogram.sum(),
|
||||
vec![],
|
||||
)],
|
||||
start_time,
|
||||
time,
|
||||
}),
|
||||
});
|
||||
Temporality::Cumulative,
|
||||
))),
|
||||
));
|
||||
}
|
||||
|
||||
// Export metrics
|
||||
if let Err(err) = self
|
||||
.exporter
|
||||
.export(&mut ResourceMetrics {
|
||||
resource: self.resource.clone(),
|
||||
scope_metrics: vec![ScopeMetrics {
|
||||
scope: self.instrumentation.clone(),
|
||||
metrics,
|
||||
}],
|
||||
})
|
||||
.await
|
||||
{
|
||||
let rm = ResourceMetrics::new(
|
||||
self.resource.clone(),
|
||||
vec![ScopeMetrics::new(self.instrumentation.clone(), metrics)],
|
||||
);
|
||||
if let Err(err) = self.exporter.export(&rm).await {
|
||||
trc::event!(
|
||||
Telemetry(TelemetryEvent::OtelMetricsExporterError),
|
||||
Reason = err.to_string(),
|
||||
|
||||
@@ -171,6 +171,7 @@ where
|
||||
),
|
||||
dropped_attributes_count: 0,
|
||||
parent_span_id: 0.into(),
|
||||
parent_span_is_remote: false,
|
||||
name: start_span.inner.typ.as_str().into(),
|
||||
start_time: UNIX_EPOCH + Duration::from_secs(start_span.inner.timestamp),
|
||||
end_time: UNIX_EPOCH + Duration::from_secs(end_span.inner.timestamp),
|
||||
@@ -186,9 +187,8 @@ where
|
||||
impl OtelTracer {
|
||||
fn build_log_record(&self, event: &Event<EventDetails>) -> SdkLogRecord {
|
||||
use opentelemetry::logs::LogRecord;
|
||||
use opentelemetry::logs::Logger;
|
||||
|
||||
let mut record = self.log_provider.create_log_record();
|
||||
let mut record = SdkLogRecord::new();
|
||||
record.set_event_name(event.inner.typ.as_str());
|
||||
record.set_severity_number(match event.inner.level {
|
||||
Level::Trace => Severity::Trace,
|
||||
|
||||
Reference in New Issue
Block a user