Skip to content

Commit d6a9c9c

Browse files
committed
move to own crate
1 parent 0972c2c commit d6a9c9c

File tree

6 files changed

+82
-48
lines changed

6 files changed

+82
-48
lines changed

Cargo.lock

Lines changed: 14 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
[workspace]
2-
members = ["crates/datastore", "crates/audit", "crates/ingress-rpc", "crates/maintenance", "crates/ingress-writer"]
2+
members = ["crates/datastore", "crates/audit", "crates/ingress-rpc", "crates/maintenance", "crates/ingress-writer", "crates/tracing"]
33
resolver = "2"
44

55
[workspace.dependencies]
66
tips-datastore = { path = "crates/datastore" }
77
tips-audit = { path = "crates/audit" }
88
tips-maintenance = { path = "crates/maintenance" }
99
tips-ingress-writer = { path = "crates/ingress-writer" }
10+
tips-tracing = { path = "crates/tracing" }
1011

1112

1213
# Reth

crates/ingress-rpc/Cargo.toml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ path = "src/main.rs"
1010
[dependencies]
1111
tips-datastore.workspace = true
1212
tips-audit.workspace = true
13+
tips-tracing.workspace = true
1314
jsonrpsee.workspace = true
1415
alloy-rpc-types-mev.workspace = true
1516
alloy-primitives.workspace = true
@@ -36,8 +37,4 @@ revm-context-interface.workspace = true
3637
alloy-signer-local.workspace = true
3738
reth-optimism-evm.workspace = true
3839
reth-errors.workspace = true
39-
opentelemetry.workspace = true
40-
opentelemetry-otlp.workspace = true
41-
opentelemetry_sdk.workspace = true
42-
tracing-opentelemetry.workspace = true
4340

crates/ingress-rpc/src/main.rs

Lines changed: 5 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,12 @@
11
use alloy_provider::{ProviderBuilder, RootProvider};
2-
use anyhow::Context as _;
32
use clap::Parser;
43
use jsonrpsee::server::Server;
54
use op_alloy_network::Optimism;
6-
use opentelemetry::trace::TracerProvider;
7-
use opentelemetry::{KeyValue, global};
8-
use opentelemetry_otlp::SpanExporter;
9-
use opentelemetry_otlp::WithExportConfig;
10-
use opentelemetry_sdk::Resource;
11-
use opentelemetry_sdk::propagation::TraceContextPropagator;
12-
use opentelemetry_sdk::trace::SdkTracerProvider;
135
use rdkafka::ClientConfig;
146
use rdkafka::producer::FutureProducer;
157
use std::net::IpAddr;
168
use tracing::{info, warn};
17-
use tracing_opentelemetry::OpenTelemetryLayer;
18-
use tracing_subscriber::filter::LevelFilter;
19-
use tracing_subscriber::filter::Targets;
9+
use tips_tracing::init_tracing;
2010
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
2111
use url::Url;
2212

@@ -114,35 +104,11 @@ async fn main() -> anyhow::Result<()> {
114104
mempool_url = %config.mempool_url
115105
);
116106

117-
// from https://github.com/flashbots/rollup-boost/blob/08ebd3e75a8f4c7ebc12db13b042dee04e132c05/crates/rollup-boost/src/tracing.rs#L127
118107
if config.tracing_enabled {
119-
global::set_text_map_propagator(TraceContextPropagator::new());
120-
let otlp_exporter = SpanExporter::builder()
121-
.with_tonic()
122-
.with_endpoint(&config.tracing_otlp_endpoint)
123-
.build()
124-
.context("Failed to create OTLP exporter")?;
125-
let provider_builder = SdkTracerProvider::builder()
126-
.with_batch_exporter(otlp_exporter)
127-
.with_resource(
128-
Resource::builder_empty()
129-
.with_attributes([
130-
KeyValue::new("service.name", env!("CARGO_PKG_NAME")),
131-
KeyValue::new("service.version", env!("CARGO_PKG_VERSION")),
132-
])
133-
.build(),
134-
);
135-
let provider = provider_builder.build();
136-
let tracer = provider.tracer(env!("CARGO_PKG_NAME"));
137-
138-
let trace_filter = Targets::new()
139-
.with_default(LevelFilter::OFF)
140-
.with_target(env!("CARGO_PKG_NAME"), LevelFilter::TRACE);
141-
142-
tracing::subscriber::set_global_default(
143-
tracing_subscriber::registry()
144-
.with(trace_filter)
145-
.with(OpenTelemetryLayer::new(tracer)),
108+
init_tracing(
109+
env!("CARGO_PKG_NAME").to_string(),
110+
env!("CARGO_PKG_VERSION").to_string(),
111+
config.tracing_otlp_endpoint,
146112
)?;
147113
}
148114

crates/tracing/Cargo.toml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[package]
2+
name = "tips-tracing"
3+
version = "0.1.0"
4+
edition = "2021"
5+
6+
[dependencies]
7+
anyhow.workspace = true
8+
opentelemetry.workspace = true
9+
opentelemetry-otlp.workspace = true
10+
opentelemetry_sdk.workspace = true
11+
tracing.workspace = true
12+
tracing-opentelemetry.workspace = true
13+
tracing-subscriber.workspace = true

crates/tracing/src/lib.rs

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
use anyhow::Context;
2+
use opentelemetry::{global, KeyValue};
3+
use opentelemetry_otlp::{SpanExporter, WithExportConfig};
4+
use opentelemetry_sdk::{propagation::TraceContextPropagator, trace::SdkTracerProvider, Resource};
5+
use tracing_opentelemetry::OpenTelemetryLayer;
6+
use tracing_subscriber::{filter::{LevelFilter, Targets}, layer::SubscriberExt};
7+
use opentelemetry::trace::TracerProvider;
8+
9+
pub fn init_tracing(
10+
service_name: String,
11+
service_version: String,
12+
otlp_endpoint: String,
13+
) -> anyhow::Result<()> {
14+
global::set_text_map_propagator(TraceContextPropagator::new());
15+
16+
let otlp_exporter = SpanExporter::builder()
17+
.with_tonic()
18+
.with_endpoint(otlp_endpoint)
19+
.build()
20+
.context("Failed to create OTLP exporter")?;
21+
22+
let provider_builder = SdkTracerProvider::builder()
23+
.with_batch_exporter(otlp_exporter)
24+
.with_resource(
25+
Resource::builder_empty()
26+
.with_attributes([
27+
KeyValue::new("service.name", service_name.clone()),
28+
KeyValue::new("service.version", service_version),
29+
])
30+
.build(),
31+
);
32+
33+
let provider = provider_builder.build();
34+
let tracer = provider.tracer(service_name.clone());
35+
36+
let trace_filter = Targets::new()
37+
.with_default(LevelFilter::OFF)
38+
.with_target(service_name, LevelFilter::TRACE);
39+
40+
tracing::subscriber::set_global_default(
41+
tracing_subscriber::registry()
42+
.with(trace_filter)
43+
.with(OpenTelemetryLayer::new(tracer)),
44+
)?;
45+
46+
Ok(())
47+
}

0 commit comments

Comments
 (0)