Skip to content

Commit 873cb63

Browse files
committed
add opentelemetry exporter
1 parent 289d6bc commit 873cb63

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

src/bin/agent.rs

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,18 @@ use {
55
Result,
66
},
77
clap::Parser,
8+
opentelemetry::KeyValue,
9+
opentelemetry_otlp::WithExportConfig,
810
pyth_agent::agent::{
911
config::Config,
1012
Agent,
1113
},
1214
std::{
1315
io::IsTerminal,
1416
path::PathBuf,
17+
time::Duration,
1518
},
19+
tracing_subscriber::prelude::*,
1620
};
1721

1822
#[derive(Parser, Debug)]
@@ -31,18 +35,38 @@ struct Arguments {
3135
#[tokio::main]
3236
async fn main() -> Result<()> {
3337
// Initialize a Tracing Subscriber
34-
let fmt_builder = tracing_subscriber::fmt()
38+
let fmt_layer = tracing_subscriber::fmt::layer()
3539
.with_file(false)
3640
.with_line_number(true)
3741
.with_thread_ids(true)
38-
.with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
42+
.with_target(true)
3943
.with_ansi(std::io::stderr().is_terminal());
4044

45+
// Set up the OpenTelemetry exporter, defaults to 127.0.0.1:4317
46+
let otlp_exporter = opentelemetry_otlp::new_exporter()
47+
.tonic()
48+
.with_timeout(Duration::from_secs(3));
49+
50+
// Set up the OpenTelemetry tracer
51+
let tracer = opentelemetry_otlp::new_pipeline()
52+
.tracing()
53+
.with_exporter(otlp_exporter)
54+
.with_trace_config(opentelemetry_sdk::trace::config().with_resource(
55+
opentelemetry_sdk::Resource::new(vec![KeyValue::new("service.name", "pyth-agent")]),
56+
))
57+
.install_batch(opentelemetry_sdk::runtime::Tokio)
58+
.map_err(|e| anyhow::anyhow!("Error initializing open telemetry: {}", e))?;
59+
60+
// Set up the telemetry layer
61+
let telemetry = tracing_opentelemetry::layer().with_tracer(tracer);
62+
63+
let registry = tracing_subscriber::registry().with(telemetry);
64+
4165
// Use the compact formatter if we're in a terminal, otherwise use the JSON formatter.
4266
if std::io::stderr().is_terminal() {
43-
tracing::subscriber::set_global_default(fmt_builder.compact().finish())?;
67+
registry.with(fmt_layer.compact()).init();
4468
} else {
45-
tracing::subscriber::set_global_default(fmt_builder.json().finish())?;
69+
registry.with(fmt_layer.json()).init();
4670
}
4771

4872
let args = Arguments::parse();

0 commit comments

Comments
 (0)