From b2b9dc0b58d737ea114d078fe02271a10accaefa Mon Sep 17 00:00:00 2001 From: Ashok <60601612+ashokkjag@users.noreply.github.com> Date: Wed, 7 Jun 2023 01:07:01 +0530 Subject: [PATCH] fix(logging): fix traces export through opentelemetry (#1355) --- Cargo.lock | 31 ++++++++++++++++----------- Cargo.toml | 3 --- config/docker_compose.toml | 1 + crates/router_env/Cargo.toml | 8 +++---- crates/router_env/src/logger/setup.rs | 11 ++++++++-- docker-compose.yml | 12 +++++------ 6 files changed, 38 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 50173a250e..54d49ab4f3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3327,8 +3327,9 @@ dependencies = [ [[package]] name = "opentelemetry" -version = "0.18.0" -source = "git+https://github.com/open-telemetry/opentelemetry-rust?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4b8347cc26099d3aeee044065ecc3ae11469796b4d65d065a23a584ed92a6f" dependencies = [ "opentelemetry_api", "opentelemetry_sdk", @@ -3336,8 +3337,9 @@ dependencies = [ [[package]] name = "opentelemetry-otlp" -version = "0.11.0" -source = "git+https://github.com/open-telemetry/opentelemetry-rust?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8af72d59a4484654ea8eb183fea5ae4eb6a41d7ac3e3bae5f4d2a282a3a7d3ca" dependencies = [ "async-trait", "futures", @@ -3353,8 +3355,9 @@ dependencies = [ [[package]] name = "opentelemetry-proto" -version = "0.1.0" -source = "git+https://github.com/open-telemetry/opentelemetry-rust?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "045f8eea8c0fa19f7d48e7bc3128a39c2e5c533d5c61298c548dfefc1064474c" dependencies = [ "futures", "futures-util", @@ -3365,23 +3368,25 @@ dependencies = [ [[package]] name = "opentelemetry_api" -version = "0.18.0" -source = "git+https://github.com/open-telemetry/opentelemetry-rust?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed41783a5bf567688eb38372f2b7a8530f5a607a4b49d38dd7573236c23ca7e2" dependencies = [ "fnv", "futures-channel", "futures-util", "indexmap", - "js-sys", "once_cell", "pin-project-lite 0.2.9", "thiserror", + "urlencoding", ] [[package]] name = "opentelemetry_sdk" -version = "0.18.0" -source = "git+https://github.com/open-telemetry/opentelemetry-rust?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b3a2a91fdbfdd4d212c0dcc2ab540de2c2bcbbd90be17de7a7daf8822d010c1" dependencies = [ "async-trait", "crossbeam-channel", @@ -5326,9 +5331,9 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.18.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21ebb87a95ea13271332df069020513ab70bdb5637ca42d6e492dc3bbbad48de" +checksum = "00a39dcf9bfc1742fa4d6215253b33a6e474be78275884c216fc2a06267b3600" dependencies = [ "once_cell", "opentelemetry", diff --git a/Cargo.toml b/Cargo.toml index 1063e706bc..cc7cc81548 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,6 +6,3 @@ members = ["crates/*", "examples/*"] strip = true lto = true codegen-units = 1 - -[patch.crates-io] -opentelemetry = { git = "https://github.com/open-telemetry/opentelemetry-rust", rev = "44b90202fd744598db8b0ace5b8f0bad7ec45658" } diff --git a/config/docker_compose.toml b/config/docker_compose.toml index 3efbdcd021..23432aa2dd 100644 --- a/config/docker_compose.toml +++ b/config/docker_compose.toml @@ -39,6 +39,7 @@ pool_size = 5 [secrets] admin_api_key = "test_admin" jwt_secret = "secret" +master_enc_key = "73ad7bbbbc640c845a150f67d058b279849370cd2c1f3c67c4dd6c869213e13a" [locker] host = "" diff --git a/crates/router_env/Cargo.toml b/crates/router_env/Cargo.toml index a7bca49ea5..c023c1e7ea 100644 --- a/crates/router_env/Cargo.toml +++ b/crates/router_env/Cargo.toml @@ -11,8 +11,8 @@ license = "Apache-2.0" config = { version = "0.13.3", features = ["toml"] } gethostname = "0.4.2" once_cell = "1.17.1" -opentelemetry = { git = "https://github.com/open-telemetry/opentelemetry-rust/", rev = "44b90202fd744598db8b0ace5b8f0bad7ec45658", features = ["rt-tokio-current-thread", "metrics"] } -opentelemetry-otlp = { git = "https://github.com/open-telemetry/opentelemetry-rust/", rev = "44b90202fd744598db8b0ace5b8f0bad7ec45658", features = ["metrics"] } +opentelemetry = { version = "0.19.0", features = ["rt-tokio-current-thread", "metrics"] } +opentelemetry-otlp = { version = "0.12.0", features = ["metrics"] } rustc-hash = "1.1" serde = { version = "1.0.160", features = ["derive"] } serde_json = "1.0.96" @@ -21,10 +21,10 @@ strum = { version = "0.24.1", features = ["derive"] } time = { version = "0.3.20", default-features = false, features = ["formatting"] } tokio = { version = "1.27.0" } tracing = { version = "=0.1.36" } -tracing-actix-web = { version = "0.7.4", features = ["opentelemetry_0_18"], optional = true } +tracing-actix-web = { version = "0.7.4", features = ["opentelemetry_0_19"], optional = true } tracing-appender = { version = "0.2.2" } tracing-attributes = "=0.1.22" -tracing-opentelemetry = { version = "0.18.0" } +tracing-opentelemetry = { version = "0.19.0" } tracing-subscriber = { version = "0.3.16", default-features = true, features = ["env-filter", "json", "registry"] } vergen = { version = "8.1.1", optional = true, features = ["cargo", "git", "git2", "rustc"] } diff --git a/crates/router_env/src/logger/setup.rs b/crates/router_env/src/logger/setup.rs index eb70e58da2..9bcb8736d8 100644 --- a/crates/router_env/src/logger/setup.rs +++ b/crates/router_env/src/logger/setup.rs @@ -8,7 +8,9 @@ use opentelemetry::{ export::metrics::aggregation::cumulative_temporality_selector, metrics::{controllers::BasicController, selectors::simple}, propagation::TraceContextPropagator, - trace, Resource, + trace, + trace::BatchConfig, + Resource, }, KeyValue, }; @@ -145,11 +147,16 @@ fn setup_tracing_pipeline( if config.use_xray_generator { trace_config = trace_config.with_id_generator(trace::XrayIdGenerator::default()); } + + // Change the default export interval from 5 seconds to 1 second + let batch_config = BatchConfig::default().with_scheduled_delay(Duration::from_millis(1000)); + let traces_layer_result = opentelemetry_otlp::new_pipeline() .tracing() .with_exporter(get_opentelemetry_exporter(config)) + .with_batch_config(batch_config) .with_trace_config(trace_config) - .install_simple() + .install_batch(opentelemetry::runtime::TokioCurrentThread) .map(|tracer| tracing_opentelemetry::layer().with_tracer(tracer)); if config.ignore_errors { diff --git a/docker-compose.yml b/docker-compose.yml index bff24e4fee..1d13d55853 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -84,7 +84,7 @@ services: - POSTGRES_DB=hyperswitch_db migration_runner: - image: rust:1.65 + image: rust:1.70 command: "bash -c 'cargo install diesel_cli --no-default-features --features \"postgres\" && diesel migration --database-url postgres://db_user:db_pass@pg:5432/hyperswitch_db run'" working_dir: /app networks: @@ -93,7 +93,7 @@ services: - ./:/app hyperswitch-server-init: - image: rust:1.65 + image: rust:1.70 command: cargo build --bin router working_dir: /app networks: @@ -105,7 +105,7 @@ services: environment: - CARGO_TARGET_DIR=/cargo_build_cache hyperswitch-server: - image: rust:1.65 + image: rust:1.70 command: /cargo_build_cache/debug/router -f ./config/docker_compose.toml working_dir: /app ports: @@ -132,7 +132,7 @@ services: condition: service_completed_successfully hyperswitch-producer: - image: rust:1.65 + image: rust:1.70 command: cargo run --bin scheduler -- -f ./config/docker_compose.toml working_dir: /app networks: @@ -153,7 +153,7 @@ services: logs: "promtail" hyperswitch-consumer: - image: rust:1.65 + image: rust:1.70 command: cargo run --bin scheduler -- -f ./config/docker_compose.toml working_dir: /app networks: @@ -270,7 +270,7 @@ services: - "4317" # otlp grpc restart: unless-stopped hyperswitch-drainer: - image: rust:1.65 + image: rust:1.70 command: cargo run --bin drainer -- -f ./config/docker_compose.toml working_dir: /app deploy: