Skip to content

Commit 3f5c230

Browse files
pitoniak32cijothomas
andauthoredOct 14, 2024
Chore/metrics advanced (#2204)
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
1 parent 42685e8 commit 3f5c230

File tree

5 files changed

+48
-56
lines changed

5 files changed

+48
-56
lines changed
 

‎examples/metrics-advanced/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ publish = false
88
[dependencies]
99
opentelemetry = { path = "../../opentelemetry", features = ["metrics"] }
1010
opentelemetry_sdk = { path = "../../opentelemetry-sdk", features = ["metrics", "rt-tokio"] }
11-
opentelemetry-stdout = { path = "../../opentelemetry-stdout", features = ["metrics"]}
11+
opentelemetry-stdout = { path = "../../opentelemetry-stdout", features = ["metrics"] }
1212
tokio = { workspace = true, features = ["full"] }
1313
serde_json = { workspace = true }

‎examples/metrics-advanced/src/main.rs

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use opentelemetry::global;
22
use opentelemetry::Key;
33
use opentelemetry::KeyValue;
4+
use opentelemetry_sdk::metrics::reader::DeltaTemporalitySelector;
45
use opentelemetry_sdk::metrics::{
56
Aggregation, Instrument, PeriodicReader, SdkMeterProvider, Stream,
67
};
@@ -44,7 +45,11 @@ fn init_meter_provider() -> opentelemetry_sdk::metrics::SdkMeterProvider {
4445
}
4546
};
4647

47-
let exporter = opentelemetry_stdout::MetricsExporterBuilder::default().build();
48+
// Build exporter using Delta Temporality.
49+
let exporter = opentelemetry_stdout::MetricsExporterBuilder::default()
50+
.with_temporality_selector(DeltaTemporalitySelector::new())
51+
.build();
52+
4853
let reader = PeriodicReader::builder(exporter, runtime::Tokio).build();
4954
let provider = SdkMeterProvider::builder()
5055
.with_reader(reader)

‎opentelemetry-otlp/src/metric.rs

+2-31
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use opentelemetry_sdk::{
1414
metrics::{
1515
data::{ResourceMetrics, Temporality},
1616
exporter::PushMetricsExporter,
17-
reader::{DefaultTemporalitySelector, TemporalitySelector},
17+
reader::{DefaultTemporalitySelector, DeltaTemporalitySelector, TemporalitySelector},
1818
InstrumentKind, PeriodicReader, SdkMeterProvider,
1919
},
2020
runtime::Runtime,
@@ -169,7 +169,7 @@ where
169169
///
170170
/// [exporter-docs]: https://github.com/open-telemetry/opentelemetry-specification/blob/a1c13d59bb7d0fb086df2b3e1eaec9df9efef6cc/specification/metrics/sdk_exporters/otlp.md#additional-configuration
171171
pub fn with_delta_temporality(self) -> Self {
172-
self.with_temporality_selector(DeltaTemporalitySelector)
172+
self.with_temporality_selector(DeltaTemporalitySelector::new())
173173
}
174174
}
175175

@@ -237,35 +237,6 @@ impl<RT, EB: Debug> Debug for OtlpMetricPipeline<RT, EB> {
237237
}
238238
}
239239

240-
/// A temporality selector that returns [`Delta`][Temporality::Delta] for all
241-
/// instruments except `UpDownCounter` and `ObservableUpDownCounter`.
242-
///
243-
/// This temporality selector is equivalent to OTLP Metrics Exporter's
244-
/// `Delta` temporality preference (see [its documentation][exporter-docs]).
245-
///
246-
/// [exporter-docs]: https://github.com/open-telemetry/opentelemetry-specification/blob/a1c13d59bb7d0fb086df2b3e1eaec9df9efef6cc/specification/metrics/sdk_exporters/otlp.md#additional-configuration
247-
#[derive(Debug)]
248-
struct DeltaTemporalitySelector;
249-
250-
impl TemporalitySelector for DeltaTemporalitySelector {
251-
#[rustfmt::skip]
252-
fn temporality(&self, kind: InstrumentKind) -> Temporality {
253-
match kind {
254-
InstrumentKind::Counter
255-
| InstrumentKind::Histogram
256-
| InstrumentKind::ObservableCounter
257-
| InstrumentKind::Gauge
258-
| InstrumentKind::ObservableGauge => {
259-
Temporality::Delta
260-
}
261-
InstrumentKind::UpDownCounter
262-
| InstrumentKind::ObservableUpDownCounter => {
263-
Temporality::Cumulative
264-
}
265-
}
266-
}
267-
}
268-
269240
/// An interface for OTLP metrics clients
270241
#[async_trait]
271242
pub trait MetricsClient: fmt::Debug + Send + Sync + 'static {

‎opentelemetry-sdk/benches/metric.rs

+1-23
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use opentelemetry_sdk::{
1010
metrics::{
1111
data::{ResourceMetrics, Temporality},
1212
new_view,
13-
reader::{MetricReader, TemporalitySelector},
13+
reader::{DeltaTemporalitySelector, MetricReader, TemporalitySelector},
1414
Aggregation, Instrument, InstrumentKind, ManualReader, Pipeline, SdkMeterProvider, Stream,
1515
View,
1616
},
@@ -44,28 +44,6 @@ impl MetricReader for SharedReader {
4444
}
4545
}
4646

47-
/// Configure delta temporality for all [InstrumentKind]
48-
///
49-
/// [Temporality::Delta] will be used for all instrument kinds if this
50-
/// [TemporalitySelector] is used.
51-
#[derive(Clone, Default, Debug)]
52-
pub struct DeltaTemporalitySelector {
53-
pub(crate) _private: (),
54-
}
55-
56-
impl DeltaTemporalitySelector {
57-
/// Create a new default temporality selector.
58-
pub fn new() -> Self {
59-
Self::default()
60-
}
61-
}
62-
63-
impl TemporalitySelector for DeltaTemporalitySelector {
64-
fn temporality(&self, _kind: InstrumentKind) -> Temporality {
65-
Temporality::Delta
66-
}
67-
}
68-
6947
// * Summary *
7048

7149
// rustc 1.68.0 (2c8cc3432 2023-03-06)

‎opentelemetry-sdk/src/metrics/reader.rs

+38
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,41 @@ impl TemporalitySelector for DefaultTemporalitySelector {
8686
Temporality::Cumulative
8787
}
8888
}
89+
90+
/// A temporality selector that returns [`Delta`][Temporality::Delta] for all
91+
/// instruments except `UpDownCounter` and `ObservableUpDownCounter`.
92+
///
93+
/// This temporality selector is equivalent to OTLP Metrics Exporter's
94+
/// `Delta` temporality preference (see [its documentation][exporter-docs]).
95+
///
96+
/// [exporter-docs]: https://github.com/open-telemetry/opentelemetry-specification/blob/a1c13d59bb7d0fb086df2b3e1eaec9df9efef6cc/specification/metrics/sdk_exporters/otlp.md#additional-configuration
97+
#[derive(Clone, Default, Debug)]
98+
pub struct DeltaTemporalitySelector {
99+
pub(crate) _private: (),
100+
}
101+
102+
impl DeltaTemporalitySelector {
103+
/// Create a new default temporality selector.
104+
pub fn new() -> Self {
105+
Self::default()
106+
}
107+
}
108+
109+
impl TemporalitySelector for DeltaTemporalitySelector {
110+
#[rustfmt::skip]
111+
fn temporality(&self, kind: InstrumentKind) -> Temporality {
112+
match kind {
113+
InstrumentKind::Counter
114+
| InstrumentKind::Histogram
115+
| InstrumentKind::ObservableCounter
116+
| InstrumentKind::Gauge
117+
| InstrumentKind::ObservableGauge => {
118+
Temporality::Delta
119+
}
120+
InstrumentKind::UpDownCounter
121+
| InstrumentKind::ObservableUpDownCounter => {
122+
Temporality::Cumulative
123+
}
124+
}
125+
}
126+
}

0 commit comments

Comments
 (0)