Skip to content

Commit 725997c

Browse files
committed
add OpenTelemetry example
1 parent e60e19f commit 725997c

File tree

2 files changed

+80
-0
lines changed

2 files changed

+80
-0
lines changed

server/Cargo.toml

+8
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,14 @@ flate2 = "1.0"
4646
# tokio trace and log
4747
tracing = "0.1.21"# sync with warp
4848
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
49+
50+
#tracing-opentelemetry = "0.24"
51+
#opentelemetry = "0.23"
52+
#opentelemetry_sdk = { version = "0.23", features = ["rt-tokio", "metrics"] }
53+
#opentelemetry-otlp = {version = "0.16", features = ["default", "metrics"]}
54+
#opentelemetry-resource-detectors = {version = "0.2"}
55+
#opentelemetry-semantic-conventions = { version = "0.15"}
56+
4957
# tokio cron
5058
delay_timer = "0.11.6" # dashmap is same
5159

server/examples/try_opentelemetry.rs

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
fn main() {
2+
3+
}
4+
/*
5+
use std::time::Duration;
6+
use opentelemetry::KeyValue;
7+
use opentelemetry_otlp::{ExportConfig, Protocol, TonicExporterBuilder, WithExportConfig};
8+
use opentelemetry_resource_detectors::{OsResourceDetector, ProcessResourceDetector};
9+
use opentelemetry_sdk::{Resource};
10+
use opentelemetry_sdk::metrics::reader::DefaultAggregationSelector;
11+
use tracing::{Level};
12+
use tracing_subscriber::layer::SubscriberExt;
13+
use tracing_subscriber::util::SubscriberInitExt;
14+
use opentelemetry_sdk::resource::{ResourceDetector, SdkProvidedResourceDetector, TelemetryResourceDetector};
15+
use opentelemetry_sdk::trace::config;
16+
use opentelemetry_semantic_conventions::resource;
17+
use tracing_subscriber::EnvFilter;
18+
19+
fn resource() -> Resource{
20+
let os_resource = OsResourceDetector.detect(Duration::from_secs(0));
21+
let process_resource = ProcessResourceDetector.detect(Duration::from_secs(0));
22+
let telemetry_resource = TelemetryResourceDetector.detect(Duration::from_secs(0));
23+
let sdk_resource = SdkProvidedResourceDetector.detect(Duration::from_secs(0));
24+
25+
let provided = Resource::new(vec![
26+
KeyValue::new(resource::SERVICE_NAME, "spa-server"),
27+
KeyValue::new(resource::SERVICE_VERSION, env!("CARGO_PKG_VERSION")),
28+
]);
29+
30+
sdk_resource
31+
.merge(&provided)
32+
.merge(&telemetry_resource)
33+
.merge(&os_resource)
34+
.merge(&process_resource)
35+
}
36+
fn otlp_exporter() -> TonicExporterBuilder {
37+
let export_config = ExportConfig {
38+
endpoint: "http://localhost:4317".to_string(),
39+
timeout: Duration::from_secs(3),
40+
protocol: Protocol::Grpc
41+
};
42+
opentelemetry_otlp::new_exporter().tonic()
43+
.with_export_config(export_config)
44+
}
45+
46+
#[tokio::main]
47+
async fn main() -> anyhow::Result<()>{
48+
let tracer = opentelemetry_otlp::new_pipeline()
49+
.tracing()
50+
.with_exporter(otlp_exporter())
51+
.with_trace_config(config().with_resource(resource()))
52+
.install_batch(opentelemetry_sdk::runtime::Tokio)?;
53+
54+
let metrics = opentelemetry_otlp::new_pipeline().metrics(opentelemetry_sdk::runtime::Tokio)
55+
.with_exporter(otlp_exporter())
56+
.with_resource(resource())
57+
.with_aggregation_selector(DefaultAggregationSelector::new()).build()?;
58+
59+
let filter = EnvFilter::builder()
60+
.with_default_directive(Level::INFO.into())
61+
.from_env_lossy();
62+
63+
tracing_subscriber::registry()
64+
.with(filter)
65+
.with(tracing_subscriber::fmt::layer().compact())// stdout_layer
66+
.with(tracing_opentelemetry::MetricsLayer::new(metrics))
67+
.with(tracing_opentelemetry::layer().with_tracer(tracer)) // traces_layer
68+
.init();
69+
70+
Ok(())
71+
}
72+
*/

0 commit comments

Comments
 (0)