@@ -52,6 +52,15 @@ dependencies = [
"winapi 0.3.9",
]
+[[package]]
+name = "ansi_term"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
+dependencies = [
+ "winapi 0.3.9",
+]
+
[[package]]
name = "anyhow"
version = "1.0.42"
@@ -690,7 +699,7 @@ version = "2.33.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002"
dependencies = [
- "ansi_term",
+ "ansi_term 0.11.0",
"atty",
"bitflags",
"strsim 0.8.0",
@@ -865,6 +874,9 @@ dependencies = [
"toml",
"tonic",
"tower",
+ "tracing",
+ "tracing-opentelemetry",
+ "tracing-subscriber",
"util",
"workspace",
]
@@ -4252,6 +4264,15 @@ dependencies = [
"digest 0.10.3",
]
+[[package]]
+name = "sharded-slab"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
+dependencies = [
+ "lazy_static",
+]
+
[[package]]
name = "shlex"
version = "1.0.0"
@@ -4814,9 +4835,9 @@ checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820"
[[package]]
name = "thread_local"
-version = "1.1.3"
+version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd"
+checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180"
dependencies = [
"once_cell",
]
@@ -5167,11 +5188,12 @@ dependencies = [
[[package]]
name = "tracing-core"
-version = "0.1.18"
+version = "0.1.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052"
+checksum = "f54c8ca710e81886d498c2fd3331b56c93aa248d49de2222ad2742247c60072f"
dependencies = [
"lazy_static",
+ "valuable",
]
[[package]]
@@ -5184,6 +5206,44 @@ dependencies = [
"tracing",
]
+[[package]]
+name = "tracing-log"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"
+dependencies = [
+ "lazy_static",
+ "log",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-opentelemetry"
+version = "0.17.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f9378e96a9361190ae297e7f3a8ff644aacd2897f244b1ff81f381669196fa6"
+dependencies = [
+ "opentelemetry",
+ "tracing",
+ "tracing-core",
+ "tracing-log",
+ "tracing-subscriber",
+]
+
+[[package]]
+name = "tracing-subscriber"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4bc28f93baff38037f64e6f43d34cfa1605f27a49c34e8a04c5e78b0babf2596"
+dependencies = [
+ "ansi_term 0.12.1",
+ "sharded-slab",
+ "smallvec",
+ "thread_local",
+ "tracing-core",
+ "tracing-log",
+]
+
[[package]]
name = "tree-sitter"
version = "0.20.4"
@@ -5483,6 +5543,12 @@ dependencies = [
"getrandom 0.2.2",
]
+[[package]]
+name = "valuable"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+
[[package]]
name = "value-bag"
version = "1.0.0-alpha.8"
@@ -37,12 +37,15 @@ scrypt = "0.7"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
sha-1 = "0.9"
+time = "0.2"
tokio = { version = "1", features = ["full"] }
tokio-tungstenite = "0.17"
tonic = "0.6"
tower = "0.4"
-time = "0.2"
toml = "0.5.8"
+tracing = "0.1"
+tracing-opentelemetry = "0.17"
+tracing-subscriber = "0.3"
[dependencies.sqlx]
version = "0.5.2"
@@ -6,10 +6,6 @@ mod rpc;
use axum::{body::Body, http::StatusCode, response::IntoResponse, Router};
use db::{Db, PostgresDb};
-use opentelemetry::{
- trace::{get_active_span, Tracer},
- KeyValue,
-};
use serde::Deserialize;
use std::{
net::{SocketAddr, TcpListener},
@@ -60,13 +56,11 @@ async fn main() -> Result<()> {
init_tracing(&config);
let state = AppState::new(&config).await?;
- let tracer = opentelemetry::global::tracer("");
- tracer.in_span("testing", |_| {
- get_active_span(|span| {
- span.set_attribute(KeyValue::new("foo", "bar"));
- });
- log::info!("testing in span");
- });
+ {
+ let root = tracing::span!(tracing::Level::TRACE, "testing_1", work_units = 2_i32);
+ let _enter = root.enter();
+ tracing::error!("test_error_1");
+ }
let listener = TcpListener::bind(&format!("0.0.0.0:{}", config.http_port))
.expect("failed to bind TCP listener");
@@ -128,7 +122,11 @@ impl std::fmt::Display for Error {
}
pub fn init_tracing(config: &Config) -> Option<()> {
+ use opentelemetry::KeyValue;
use opentelemetry_otlp::WithExportConfig;
+ use tracing_opentelemetry::OpenTelemetryLayer;
+ use tracing_subscriber::layer::SubscriberExt;
+
let (honeycomb_api_key, honeycomb_dataset) = config
.honeycomb_api_key
.clone()
@@ -136,8 +134,7 @@ pub fn init_tracing(config: &Config) -> Option<()> {
let mut metadata = tonic::metadata::MetadataMap::new();
metadata.insert("x-honeycomb-team", honeycomb_api_key.parse().unwrap());
- metadata.insert("x-honeycomb-dataset", honeycomb_dataset.parse().unwrap());
- opentelemetry_otlp::new_pipeline()
+ let tracer = opentelemetry_otlp::new_pipeline()
.tracing()
.with_exporter(
opentelemetry_otlp::new_exporter()
@@ -146,10 +143,19 @@ pub fn init_tracing(config: &Config) -> Option<()> {
.with_metadata(metadata),
)
.with_trace_config(opentelemetry::sdk::trace::config().with_resource(
- opentelemetry::sdk::Resource::new(vec![KeyValue::new("service.name", "collab")]),
+ opentelemetry::sdk::Resource::new(vec![KeyValue::new(
+ "service.name",
+ honeycomb_dataset,
+ )]),
))
.install_batch(opentelemetry::runtime::Tokio)
.expect("failed to initialize tracing");
+ let subscriber = tracing_subscriber::Registry::default()
+ .with(OpenTelemetryLayer::new(tracer))
+ .with(tracing_subscriber::fmt::layer());
+
+ tracing::subscriber::set_global_default(subscriber).unwrap();
+
None
}