Skip to content

Commit

Permalink
feat(o11y): add opentelemetry-stdout feature
Browse files Browse the repository at this point in the history
  • Loading branch information
ymgyt committed Mar 31, 2024
1 parent dd7d23e commit 765c036
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 5 deletions.
2 changes: 1 addition & 1 deletion .helix/languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ diagnostics.disabled = ["inactive-code"]
hover.actions.enable = false

[language-server.rust-analyzer.config.cargo]
features = ["introspection", "integration"]
features = ["introspection", "integration", "opentelemetry-stdout"]

[language-server.rust-analyzer.config.check]
command = "clippy"
Expand Down
5 changes: 5 additions & 0 deletions crates/synd_o11y/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,19 @@ opentelemetry-appender-tracing = { version = "0.3.0", default-features = fal
opentelemetry-http = { version = "0.11.0" }
opentelemetry-otlp = { version = "0.15.0", default-features = false, features = ["trace", "metrics", "logs", "grpc-tonic"] }
opentelemetry-semantic-conventions = { version = "0.14.0" }
opentelemetry-stdout = { version = "0.3.0", optional = true, default-features = false, features = ["metrics"] }
opentelemetry_sdk = { version = "0.22.1", features = ["logs", "rt-tokio"] }
rand = { workspace = true }
reqwest = { workspace = true }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true, optional = true }
tracing = { workspace = true }
tracing-opentelemetry = { version = "0.23.0" }
tracing-subscriber = { workspace = true }

[features]
opentelemetry-stdout = ["dep:opentelemetry-stdout", "dep:serde_json"]

[lints]
workspace = true

Expand Down
23 changes: 19 additions & 4 deletions crates/synd_o11y/src/tracing_subscriber/otel_metrics/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,27 @@ fn init_meter_provider(endpoint: impl Into<String>, resource: Resource) -> impl
.build();

let view = view();

let meter_provider = SdkMeterProvider::builder()
let meter_provider_builder = SdkMeterProvider::builder()
.with_resource(resource)
.with_reader(reader)
.with_view(view)
.build();
.with_view(view);

#[cfg(feature = "opentelemetry-stdout")]
let stdout_reader = {
let exporter = opentelemetry_stdout::MetricsExporterBuilder::default()
.with_encoder(|writer, data| {
serde_json::to_writer_pretty(writer, &data).unwrap();
Ok(())
})
.build();
PeriodicReader::builder(exporter, runtime::Tokio)
.with_interval(Duration::from_secs(60))
.build()
};
#[cfg(feature = "opentelemetry-stdout")]
let meter_provider_builder = meter_provider_builder.with_reader(stdout_reader);

let meter_provider = meter_provider_builder.build();

global::set_meter_provider(meter_provider.clone());

Expand Down

0 comments on commit 765c036

Please sign in to comment.