Skip to content

Commit 52e40c6

Browse files
authored
feat: upgrade otel (#17)
1 parent dfb9d59 commit 52e40c6

File tree

4 files changed

+27
-49
lines changed

4 files changed

+27
-49
lines changed

crates/metrics/Cargo.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ edition = "2021"
66
[dependencies]
77
pin-project = "1"
88
prometheus = "0.13"
9-
opentelemetry = { version = "0.19", features = ["metrics", "rt-tokio"] }
10-
opentelemetry-prometheus = "0.12"
9+
opentelemetry = { version = "0.22.0", features = ["metrics"] }
10+
opentelemetry_sdk = { version = "0.22.1", features = ["metrics", "rt-tokio"] }
11+
opentelemetry-prometheus = "0.15"
1112
once_cell = "1.17"
1213
smallvec = "1.11"

crates/metrics/src/lib.rs

Lines changed: 16 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
11
pub use {future::*, once_cell::sync::Lazy, opentelemetry as otel, task::*};
22
use {
3-
opentelemetry::{
4-
metrics::{Meter, MeterProvider},
5-
sdk::{
6-
export::metrics::aggregation,
7-
metrics::{processors, selectors},
8-
},
9-
},
10-
opentelemetry_prometheus::PrometheusExporter,
11-
prometheus::{Error as PrometheusError, TextEncoder},
3+
opentelemetry_sdk::metrics::SdkMeterProvider,
4+
otel::metrics::{Meter, MeterProvider},
5+
prometheus::{Error as PrometheusError, Registry, TextEncoder},
126
std::{
137
sync::{Arc, Mutex},
148
time::Duration,
@@ -26,35 +20,26 @@ static SERVICE_NAME: Mutex<Option<&str>> = Mutex::new(None);
2620
static METRICS_CORE: Lazy<Arc<ServiceMetrics>> = Lazy::new(|| {
2721
let service_name = SERVICE_NAME.lock().unwrap().unwrap_or(DEFAULT_SERVICE_NAME);
2822

29-
let controller = otel::sdk::metrics::controllers::basic(processors::factory(
30-
selectors::simple::histogram(vec![]),
31-
aggregation::cumulative_temporality_selector(),
32-
))
33-
.with_resource(otel::sdk::Resource::new(vec![otel::KeyValue::new(
34-
"service_name",
35-
service_name,
36-
)]))
37-
.build();
38-
39-
let prometheus_exporter = opentelemetry_prometheus::exporter(controller).init();
40-
let meter = prometheus_exporter
41-
.meter_provider()
42-
.unwrap()
43-
.meter(service_name);
44-
45-
Arc::new(ServiceMetrics {
46-
meter,
47-
prometheus_exporter,
48-
})
23+
let registry = Registry::new();
24+
let prometheus_exporter = opentelemetry_prometheus::exporter()
25+
.with_registry(registry.clone())
26+
.build()
27+
.unwrap();
28+
let provider = SdkMeterProvider::builder()
29+
.with_reader(prometheus_exporter)
30+
.build();
31+
let meter = provider.meter(service_name);
32+
33+
Arc::new(ServiceMetrics { registry, meter })
4934
});
5035

5136
/// Global application metrics access.
5237
///
5338
/// The main functionality is to provide global access to opentelemetry's
5439
/// [`Meter`].
5540
pub struct ServiceMetrics {
41+
registry: Registry,
5642
meter: Meter,
57-
prometheus_exporter: PrometheusExporter,
5843
}
5944

6045
impl ServiceMetrics {
@@ -81,7 +66,7 @@ impl ServiceMetrics {
8166

8267
/// Generates export data in Prometheus format, serialized into string.
8368
pub fn export() -> Result<String, PrometheusError> {
84-
let data = Self::get().prometheus_exporter.registry().gather();
69+
let data = Self::get().registry.gather();
8570
TextEncoder::new().encode_to_string(&data)
8671
}
8772

crates/metrics/src/macros.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ macro_rules! gauge {
1919
}};
2020

2121
($name:expr, $value:expr, $tags:expr) => {{
22-
$crate::gauge!($name).observe(&$crate::otel::Context::new(), $value as u64, $tags);
22+
$crate::gauge!($name).observe($value as u64, $tags);
2323
}};
2424
}
2525

@@ -39,7 +39,7 @@ macro_rules! histogram {
3939
}};
4040

4141
($name:expr, $value:expr, $tags:expr) => {{
42-
$crate::histogram!($name).record(&$crate::otel::Context::new(), $value as f64, $tags);
42+
$crate::histogram!($name).record($value as f64, $tags);
4343
}};
4444
}
4545

@@ -59,6 +59,6 @@ macro_rules! counter {
5959
}};
6060

6161
($name:expr, $value:expr, $tags:expr) => {{
62-
$crate::counter!($name).add(&$crate::otel::Context::new(), $value as u64, $tags);
62+
$crate::counter!($name).add($value as u64, $tags);
6363
}};
6464
}

crates/metrics/src/task.rs

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,7 @@ impl OtelTaskMetricsRecorder {
9999

100100
impl TaskMetricsRecorder for OtelTaskMetricsRecorder {
101101
fn record_task_started(&self) {
102-
self.inner
103-
.tasks_started
104-
.add(&otel::Context::new(), 1, &self.combine_attributes());
102+
self.inner.tasks_started.add(1, &self.combine_attributes());
105103
}
106104

107105
fn record_task_finished(
@@ -117,18 +115,12 @@ impl TaskMetricsRecorder for OtelTaskMetricsRecorder {
117115
let mut attrs = self.combine_attributes();
118116
attrs.push(otel::KeyValue::new("completed", completed));
119117

120-
let ctx = otel::Context::new();
121-
122-
self.inner
123-
.total_duration
124-
.record(&ctx, total_duration_ms, &attrs);
118+
self.inner.total_duration.record(total_duration_ms, &attrs);
125119

126-
self.inner
127-
.poll_duration
128-
.record(&ctx, poll_duration_ms, &attrs);
120+
self.inner.poll_duration.record(poll_duration_ms, &attrs);
129121

130-
self.inner.poll_entries.add(&ctx, poll_entries, &attrs);
131-
self.inner.tasks_finished.add(&ctx, 1, &attrs);
122+
self.inner.poll_entries.add(poll_entries, &attrs);
123+
self.inner.tasks_finished.add(1, &attrs);
132124
}
133125
}
134126

0 commit comments

Comments
 (0)