fix(tvix/store): set service.name
While this can be influenced with `OTEL_SERVICE_NAME` or `OTEL_RESOURCE_ATTRIBUTES`, "unknown_service" is an annoying name. Let's pick tvix.store as a default. Change-Id: I9b5c45703d9546775bb9266b29ab54daf7c54a9f Reviewed-on: https://cl.tvl.fyi/c/depot/+/10524 Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su>
This commit is contained in:
parent
9abe735061
commit
a82214b3ad
1 changed files with 42 additions and 22 deletions
|
|
@ -2,17 +2,15 @@ use clap::Parser;
|
||||||
use clap::Subcommand;
|
use clap::Subcommand;
|
||||||
|
|
||||||
use futures::future::try_join_all;
|
use futures::future::try_join_all;
|
||||||
use tonic::transport::Server;
|
|
||||||
use tracing::info;
|
|
||||||
use tracing::Level;
|
|
||||||
|
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use tokio_listener::Listener;
|
use tokio_listener::Listener;
|
||||||
use tokio_listener::SystemOptions;
|
use tokio_listener::SystemOptions;
|
||||||
use tokio_listener::UserOptions;
|
use tokio_listener::UserOptions;
|
||||||
|
use tonic::transport::Server;
|
||||||
use tracing_subscriber::prelude::*;
|
use tracing::info;
|
||||||
|
use tracing::Level;
|
||||||
|
use tracing_subscriber::fmt::writer::MakeWriterExt;
|
||||||
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
|
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
|
||||||
|
|
||||||
use tvix_castore::proto::blob_service_server::BlobServiceServer;
|
use tvix_castore::proto::blob_service_server::BlobServiceServer;
|
||||||
|
|
@ -29,6 +27,15 @@ use tvix_store::pathinfoservice::make_fs;
|
||||||
#[cfg(feature = "fuse")]
|
#[cfg(feature = "fuse")]
|
||||||
use tvix_castore::fs::fuse::FuseDaemon;
|
use tvix_castore::fs::fuse::FuseDaemon;
|
||||||
|
|
||||||
|
#[cfg(feature = "otlp")]
|
||||||
|
use opentelemetry::KeyValue;
|
||||||
|
#[cfg(feature = "otlp")]
|
||||||
|
use opentelemetry_sdk::{
|
||||||
|
resource::{ResourceDetector, SdkProvidedResourceDetector},
|
||||||
|
trace::BatchConfig,
|
||||||
|
Resource,
|
||||||
|
};
|
||||||
|
|
||||||
#[cfg(feature = "virtiofs")]
|
#[cfg(feature = "virtiofs")]
|
||||||
use tvix_castore::fs::virtiofs::start_virtiofs_daemon;
|
use tvix_castore::fs::virtiofs::start_virtiofs_daemon;
|
||||||
|
|
||||||
|
|
@ -177,24 +184,37 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
// layer into the type of the registry.
|
// layer into the type of the registry.
|
||||||
#[cfg(feature = "otlp")]
|
#[cfg(feature = "otlp")]
|
||||||
{
|
{
|
||||||
let opentelemetry_layer = {
|
subscriber
|
||||||
let otlp_exporter = opentelemetry_otlp::new_exporter().tonic();
|
.with({
|
||||||
// TODO: re-add once https://github.com/open-telemetry/opentelemetry-rust/pull/1252 is solved.
|
let tracer = opentelemetry_otlp::new_pipeline()
|
||||||
// let mut metadata = tonic::metadata::MetadataMap::new();
|
.tracing()
|
||||||
// metadata.insert("service.name", "tvix.store".parse()?);
|
.with_exporter(opentelemetry_otlp::new_exporter().tonic())
|
||||||
// otlp_exporter.with_metadata(metadata),
|
.with_batch_config(BatchConfig::default())
|
||||||
|
.with_trace_config(opentelemetry_sdk::trace::config().with_resource({
|
||||||
|
// use SdkProvidedResourceDetector.detect to detect resources,
|
||||||
|
// but replace the default service name with our default.
|
||||||
|
// https://github.com/open-telemetry/opentelemetry-rust/issues/1298
|
||||||
|
let resources =
|
||||||
|
SdkProvidedResourceDetector.detect(std::time::Duration::from_secs(0));
|
||||||
|
|
||||||
let tracer = opentelemetry_otlp::new_pipeline()
|
// SdkProvidedResourceDetector currently always sets
|
||||||
.tracing()
|
// `service.name`, but we don't like its default.
|
||||||
.with_exporter(otlp_exporter)
|
if resources.get("service.name".into()).unwrap() == "unknown_service".into()
|
||||||
.install_batch(opentelemetry_sdk::runtime::Tokio)?;
|
{
|
||||||
|
resources.merge(&Resource::new([KeyValue::new(
|
||||||
|
"service.name",
|
||||||
|
"tvix.store",
|
||||||
|
)]))
|
||||||
|
} else {
|
||||||
|
resources
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
.install_batch(opentelemetry_sdk::runtime::Tokio)?;
|
||||||
|
|
||||||
// Create a tracing layer with the configured tracer
|
// Create a tracing layer with the configured tracer
|
||||||
tracing_opentelemetry::layer().with_tracer(tracer)
|
tracing_opentelemetry::layer().with_tracer(tracer)
|
||||||
};
|
})
|
||||||
|
.try_init()?;
|
||||||
let subscriber = subscriber.with(opentelemetry_layer);
|
|
||||||
subscriber.try_init()?;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Init the registry (when otlp is not enabled)
|
// Init the registry (when otlp is not enabled)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue