fix(logging): fix traces export through opentelemetry (#1355)

This commit is contained in:
Ashok
2023-06-07 01:07:01 +05:30
committed by GitHub
parent 6730fe32cb
commit b2b9dc0b58
6 changed files with 38 additions and 28 deletions

31
Cargo.lock generated
View File

@ -3327,8 +3327,9 @@ dependencies = [
[[package]] [[package]]
name = "opentelemetry" name = "opentelemetry"
version = "0.18.0" version = "0.19.0"
source = "git+https://github.com/open-telemetry/opentelemetry-rust?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f4b8347cc26099d3aeee044065ecc3ae11469796b4d65d065a23a584ed92a6f"
dependencies = [ dependencies = [
"opentelemetry_api", "opentelemetry_api",
"opentelemetry_sdk", "opentelemetry_sdk",
@ -3336,8 +3337,9 @@ dependencies = [
[[package]] [[package]]
name = "opentelemetry-otlp" name = "opentelemetry-otlp"
version = "0.11.0" version = "0.12.0"
source = "git+https://github.com/open-telemetry/opentelemetry-rust?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8af72d59a4484654ea8eb183fea5ae4eb6a41d7ac3e3bae5f4d2a282a3a7d3ca"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"futures", "futures",
@ -3353,8 +3355,9 @@ dependencies = [
[[package]] [[package]]
name = "opentelemetry-proto" name = "opentelemetry-proto"
version = "0.1.0" version = "0.2.0"
source = "git+https://github.com/open-telemetry/opentelemetry-rust?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "045f8eea8c0fa19f7d48e7bc3128a39c2e5c533d5c61298c548dfefc1064474c"
dependencies = [ dependencies = [
"futures", "futures",
"futures-util", "futures-util",
@ -3365,23 +3368,25 @@ dependencies = [
[[package]] [[package]]
name = "opentelemetry_api" name = "opentelemetry_api"
version = "0.18.0" version = "0.19.0"
source = "git+https://github.com/open-telemetry/opentelemetry-rust?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed41783a5bf567688eb38372f2b7a8530f5a607a4b49d38dd7573236c23ca7e2"
dependencies = [ dependencies = [
"fnv", "fnv",
"futures-channel", "futures-channel",
"futures-util", "futures-util",
"indexmap", "indexmap",
"js-sys",
"once_cell", "once_cell",
"pin-project-lite 0.2.9", "pin-project-lite 0.2.9",
"thiserror", "thiserror",
"urlencoding",
] ]
[[package]] [[package]]
name = "opentelemetry_sdk" name = "opentelemetry_sdk"
version = "0.18.0" version = "0.19.0"
source = "git+https://github.com/open-telemetry/opentelemetry-rust?rev=44b90202fd744598db8b0ace5b8f0bad7ec45658#44b90202fd744598db8b0ace5b8f0bad7ec45658" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b3a2a91fdbfdd4d212c0dcc2ab540de2c2bcbbd90be17de7a7daf8822d010c1"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"crossbeam-channel", "crossbeam-channel",
@ -5326,9 +5331,9 @@ dependencies = [
[[package]] [[package]]
name = "tracing-opentelemetry" name = "tracing-opentelemetry"
version = "0.18.0" version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21ebb87a95ea13271332df069020513ab70bdb5637ca42d6e492dc3bbbad48de" checksum = "00a39dcf9bfc1742fa4d6215253b33a6e474be78275884c216fc2a06267b3600"
dependencies = [ dependencies = [
"once_cell", "once_cell",
"opentelemetry", "opentelemetry",

View File

@ -6,6 +6,3 @@ members = ["crates/*", "examples/*"]
strip = true strip = true
lto = true lto = true
codegen-units = 1 codegen-units = 1
[patch.crates-io]
opentelemetry = { git = "https://github.com/open-telemetry/opentelemetry-rust", rev = "44b90202fd744598db8b0ace5b8f0bad7ec45658" }

View File

@ -39,6 +39,7 @@ pool_size = 5
[secrets] [secrets]
admin_api_key = "test_admin" admin_api_key = "test_admin"
jwt_secret = "secret" jwt_secret = "secret"
master_enc_key = "73ad7bbbbc640c845a150f67d058b279849370cd2c1f3c67c4dd6c869213e13a"
[locker] [locker]
host = "" host = ""

View File

@ -11,8 +11,8 @@ license = "Apache-2.0"
config = { version = "0.13.3", features = ["toml"] } config = { version = "0.13.3", features = ["toml"] }
gethostname = "0.4.2" gethostname = "0.4.2"
once_cell = "1.17.1" once_cell = "1.17.1"
opentelemetry = { git = "https://github.com/open-telemetry/opentelemetry-rust/", rev = "44b90202fd744598db8b0ace5b8f0bad7ec45658", features = ["rt-tokio-current-thread", "metrics"] } opentelemetry = { version = "0.19.0", features = ["rt-tokio-current-thread", "metrics"] }
opentelemetry-otlp = { git = "https://github.com/open-telemetry/opentelemetry-rust/", rev = "44b90202fd744598db8b0ace5b8f0bad7ec45658", features = ["metrics"] } opentelemetry-otlp = { version = "0.12.0", features = ["metrics"] }
rustc-hash = "1.1" rustc-hash = "1.1"
serde = { version = "1.0.160", features = ["derive"] } serde = { version = "1.0.160", features = ["derive"] }
serde_json = "1.0.96" 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"] } time = { version = "0.3.20", default-features = false, features = ["formatting"] }
tokio = { version = "1.27.0" } tokio = { version = "1.27.0" }
tracing = { version = "=0.1.36" } 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-appender = { version = "0.2.2" }
tracing-attributes = "=0.1.22" 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"] } 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"] } vergen = { version = "8.1.1", optional = true, features = ["cargo", "git", "git2", "rustc"] }

View File

@ -8,7 +8,9 @@ use opentelemetry::{
export::metrics::aggregation::cumulative_temporality_selector, export::metrics::aggregation::cumulative_temporality_selector,
metrics::{controllers::BasicController, selectors::simple}, metrics::{controllers::BasicController, selectors::simple},
propagation::TraceContextPropagator, propagation::TraceContextPropagator,
trace, Resource, trace,
trace::BatchConfig,
Resource,
}, },
KeyValue, KeyValue,
}; };
@ -145,11 +147,16 @@ fn setup_tracing_pipeline(
if config.use_xray_generator { if config.use_xray_generator {
trace_config = trace_config.with_id_generator(trace::XrayIdGenerator::default()); 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() let traces_layer_result = opentelemetry_otlp::new_pipeline()
.tracing() .tracing()
.with_exporter(get_opentelemetry_exporter(config)) .with_exporter(get_opentelemetry_exporter(config))
.with_batch_config(batch_config)
.with_trace_config(trace_config) .with_trace_config(trace_config)
.install_simple() .install_batch(opentelemetry::runtime::TokioCurrentThread)
.map(|tracer| tracing_opentelemetry::layer().with_tracer(tracer)); .map(|tracer| tracing_opentelemetry::layer().with_tracer(tracer));
if config.ignore_errors { if config.ignore_errors {

View File

@ -84,7 +84,7 @@ services:
- POSTGRES_DB=hyperswitch_db - POSTGRES_DB=hyperswitch_db
migration_runner: 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'" 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 working_dir: /app
networks: networks:
@ -93,7 +93,7 @@ services:
- ./:/app - ./:/app
hyperswitch-server-init: hyperswitch-server-init:
image: rust:1.65 image: rust:1.70
command: cargo build --bin router command: cargo build --bin router
working_dir: /app working_dir: /app
networks: networks:
@ -105,7 +105,7 @@ services:
environment: environment:
- CARGO_TARGET_DIR=/cargo_build_cache - CARGO_TARGET_DIR=/cargo_build_cache
hyperswitch-server: hyperswitch-server:
image: rust:1.65 image: rust:1.70
command: /cargo_build_cache/debug/router -f ./config/docker_compose.toml command: /cargo_build_cache/debug/router -f ./config/docker_compose.toml
working_dir: /app working_dir: /app
ports: ports:
@ -132,7 +132,7 @@ services:
condition: service_completed_successfully condition: service_completed_successfully
hyperswitch-producer: hyperswitch-producer:
image: rust:1.65 image: rust:1.70
command: cargo run --bin scheduler -- -f ./config/docker_compose.toml command: cargo run --bin scheduler -- -f ./config/docker_compose.toml
working_dir: /app working_dir: /app
networks: networks:
@ -153,7 +153,7 @@ services:
logs: "promtail" logs: "promtail"
hyperswitch-consumer: hyperswitch-consumer:
image: rust:1.65 image: rust:1.70
command: cargo run --bin scheduler -- -f ./config/docker_compose.toml command: cargo run --bin scheduler -- -f ./config/docker_compose.toml
working_dir: /app working_dir: /app
networks: networks:
@ -270,7 +270,7 @@ services:
- "4317" # otlp grpc - "4317" # otlp grpc
restart: unless-stopped restart: unless-stopped
hyperswitch-drainer: hyperswitch-drainer:
image: rust:1.65 image: rust:1.70
command: cargo run --bin drainer -- -f ./config/docker_compose.toml command: cargo run --bin drainer -- -f ./config/docker_compose.toml
working_dir: /app working_dir: /app
deploy: deploy: