Skip to content

Commit e670785

Browse files
committed
run successful otlp example
1 parent 169d57a commit e670785

File tree

1 file changed

+59
-15
lines changed

1 file changed

+59
-15
lines changed

server/examples/try_opentelemetry.rs

+59-15
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/*
12
use opentelemetry::{global, Key, KeyValue};
23
use opentelemetry_otlp::{ExportConfig, Protocol, WithExportConfig};
34
use opentelemetry_sdk::{
@@ -174,18 +175,22 @@ async fn foo() {
174175
175176
tracing::info!(histogram.baz = 10, "histogram example",);
176177
}
177-
/*
178-
use opentelemetry::KeyValue;
178+
179+
*/
180+
181+
use opentelemetry::{global, Key, KeyValue};
179182
use opentelemetry_otlp::{ExportConfig, Protocol, TonicExporterBuilder, WithExportConfig};
180183
use opentelemetry_resource_detectors::{OsResourceDetector, ProcessResourceDetector};
181184
use opentelemetry_sdk::metrics::reader::DefaultAggregationSelector;
182185
use opentelemetry_sdk::resource::{
183186
ResourceDetector, SdkProvidedResourceDetector, TelemetryResourceDetector,
184187
};
185188
use opentelemetry_sdk::trace::config;
186-
use opentelemetry_sdk::Resource;
189+
use opentelemetry_sdk::{Resource, runtime};
187190
use opentelemetry_semantic_conventions::resource;
188191
use std::time::Duration;
192+
use opentelemetry_sdk::metrics::{Aggregation, Instrument, MeterProviderBuilder, PeriodicReader, SdkMeterProvider, Stream};
193+
use opentelemetry_stdout::MetricsExporter;
189194
use tracing::{debug, error, info, instrument, warn, Level};
190195
use tracing_opentelemetry::OpenTelemetryLayer;
191196
use tracing_subscriber::layer::SubscriberExt;
@@ -216,7 +221,7 @@ fn otlp_exporter() -> TonicExporterBuilder {
216221
protocol: Protocol::Grpc,
217222
};
218223
opentelemetry_otlp::new_exporter().tonic()
219-
//.with_export_config(export_config)
224+
.with_export_config(export_config)
220225
}
221226

222227
#[tokio::main]
@@ -225,14 +230,45 @@ async fn main() -> anyhow::Result<()> {
225230
.tracing()
226231
.with_exporter(otlp_exporter())
227232
.with_trace_config(config().with_resource(resource()))
228-
.install_batch(opentelemetry_sdk::runtime::Tokio)?;
233+
.install_batch(runtime::Tokio)?;
234+
235+
236+
237+
238+
// does not work for metrics
239+
// let metrics = opentelemetry_otlp::new_pipeline()
240+
// .metrics(runtime::Tokio)
241+
// .with_exporter(otlp_exporter())
242+
// .with_period(Duration::from_secs(3))
243+
// .with_resource(resource())
244+
// .with_aggregation_selector(DefaultAggregationSelector::new())
245+
// .build()?;
246+
247+
248+
249+
let stdout_reader = PeriodicReader::builder(
250+
MetricsExporter::default(),
251+
runtime::Tokio,
252+
)
253+
.build();
254+
255+
let metrics = {
256+
let reader =
257+
PeriodicReader::builder(MetricsExporter::default(), runtime::Tokio)
258+
.with_interval(Duration::from_secs(3))
259+
.build();
260+
SdkMeterProvider::builder()
261+
.with_resource(resource())
262+
.with_reader(reader)
263+
.with_reader(stdout_reader)
264+
.build()
265+
};
266+
267+
268+
global::set_meter_provider(metrics.clone());
269+
270+
229271

230-
let metrics = opentelemetry_otlp::new_pipeline()
231-
.metrics(opentelemetry_sdk::runtime::Tokio)
232-
.with_exporter(otlp_exporter())
233-
.with_resource(resource())
234-
.with_aggregation_selector(DefaultAggregationSelector::new())
235-
.build()?;
236272

237273
let filter = EnvFilter::builder()
238274
.with_default_directive(Level::INFO.into())
@@ -245,20 +281,28 @@ async fn main() -> anyhow::Result<()> {
245281
.with(OpenTelemetryLayer::new(tracer)) // traces_layer
246282
.init();
247283

248-
for _ in 1..5 {
249-
test_instrument().await;
284+
for _ in 1..10 {
285+
test_instrument2().await;
250286
}
251287

288+
let _ = tokio::time::sleep(Duration::from_secs(2)).await;
252289
println!("finish");
253290
Ok(())
254291
}
255292

293+
#[instrument]
294+
async fn test_instrument2() {
295+
tokio::time::sleep(Duration::from_secs(1)).await;
296+
info!(monotonic_counter.baz = 1,"info log");
297+
298+
}
299+
256300
#[instrument]
257301
async fn test_instrument() {
258302
debug!("test debug");
259303
info!("test info");
260304
warn!("test warn");
261-
error!("test error");
305+
error!("test error");
262306
tokio::time::sleep(Duration::from_secs(1)).await;
263307
info!(
264308
monotonic_counter.foo = 1_u64,
@@ -269,4 +313,4 @@ async fn test_instrument() {
269313

270314
info!(histogram.baz = 10, "histogram example",);
271315
}
272-
*/
316+

0 commit comments

Comments
 (0)