diff --git a/src/lib.rs b/src/lib.rs index 0c997d8..b1925da 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -12,7 +12,7 @@ use clap::Parser; use log::{error, info}; use tokio::{select, sync::oneshot}; -use crate::utils::{instance, observability::init_observability}; +use crate::utils::observability::init_observability; /// Git hash of the aisix core at build time. pub const GIT_HASH: &str = env!("VERGEN_GIT_SHA"); @@ -38,8 +38,6 @@ pub async fn run(config_file: Option) -> Result<()> { let (ob_shutdown_signal, ob_shutdown_task) = init_observability().context("failed to initialize observability")?; - instance::init().context("failed to initialize instance")?; - let config = match config::load(config_file).context("failed to load configuration") { Ok(c) => Arc::new(c), Err(e) => { diff --git a/src/main.rs b/src/main.rs index 15cd121..43b3a4f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,12 @@ use aisix::{Args, run}; -use anyhow::Result; +use anyhow::{Context, Result}; use clap::Parser; #[tokio::main] async fn main() -> Result<()> { let args = Args::parse(); + + aisix::utils::instance::init().context("failed to initialize instance")?; + run(args.config).await } diff --git a/src/proxy/middlewares/trace.rs b/src/proxy/middlewares/trace.rs index d7fd2b2..be2adf7 100644 --- a/src/proxy/middlewares/trace.rs +++ b/src/proxy/middlewares/trace.rs @@ -29,6 +29,11 @@ use crate::utils::future::WithSpan; pub const TRACEPARENT_HEADER: &str = "traceparent"; +mod attributes { + pub const AISIX_INSTANCE_ID: &str = "aisix.instance_id"; + pub const AISIX_INSTANCE_RUN_ID: &str = "aisix.instance_run_id"; +} + pub struct TimedBody { start_time: Instant, inner: Body, @@ -134,6 +139,14 @@ pub async fn trace(mut req: Request, next: Next) -> Response { root_span.add_properties(|| { [ + ( + attributes::AISIX_INSTANCE_ID, + crate::utils::instance::instance_id(), + ), + ( + attributes::AISIX_INSTANCE_RUN_ID, + crate::utils::instance::run_id(), + ), (HTTP_REQUEST_METHOD, method.to_string()), (URL_PATH, path.clone()), ] diff --git a/src/utils/observability/mod.rs b/src/utils/observability/mod.rs index 087c224..b67d9b1 100644 --- a/src/utils/observability/mod.rs +++ b/src/utils/observability/mod.rs @@ -67,11 +67,7 @@ pub fn init_observability_trace( .build() .context("failed to initialize otlp exporter")?, }, - Cow::Owned( - Resource::builder() - .with_service_name(INSTRUMENTATION_NAME) - .build(), - ), + Cow::Owned(get_resource()), InstrumentationScope::builder(INSTRUMENTATION_NAME) .with_version(env!("CARGO_PKG_VERSION")) .build(), @@ -99,6 +95,7 @@ pub fn init_observability_metric( .with_interval(std::time::Duration::from_secs(15)) .build(), ) + .with_resource(get_resource()) .build(); let meter = meter_provider.meter(INSTRUMENTATION_NAME); @@ -132,3 +129,9 @@ pub fn init_observability() -> Result<(oneshot::Sender<()>, tokio::task::JoinHan let _ = log_shutdown_handle.await; })) } + +fn get_resource() -> Resource { + Resource::builder() + .with_service_name(INSTRUMENTATION_NAME) + .build() +}