From d4ed008abba30664217640a550452acd7f5b8436 Mon Sep 17 00:00:00 2001 From: Sascha Grunert Date: Tue, 11 Oct 2022 11:44:42 +0200 Subject: [PATCH] Add conmon-rs process ID to tracing output Signed-off-by: Sascha Grunert --- Cargo.lock | 10 ++++++++++ conmon-rs/server/Cargo.toml | 1 + conmon-rs/server/src/server.rs | 26 ++++++++++++++++---------- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d255b60f84..652a9361e0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -368,6 +368,7 @@ dependencies = [ "notify", "opentelemetry", "opentelemetry-otlp", + "opentelemetry-semantic-conventions", "prctl", "regex", "sendfd", @@ -1379,6 +1380,15 @@ dependencies = [ "tonic-build", ] +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b02e0230abb0ab6636d18e2ba8fa02903ea63772281340ccac18e0af3ec9eeb" +dependencies = [ + "opentelemetry", +] + [[package]] name = "opentelemetry_api" version = "0.18.0" diff --git a/conmon-rs/server/Cargo.toml b/conmon-rs/server/Cargo.toml index 9bc2586b9f..bb7563ae1d 100644 --- a/conmon-rs/server/Cargo.toml +++ b/conmon-rs/server/Cargo.toml @@ -24,6 +24,7 @@ nix = "0.25.0" notify = "5.0.0" opentelemetry = { version = "0.18.0", features = ["rt-tokio"] } opentelemetry-otlp = "0.11.0" +opentelemetry-semantic-conventions = "0.10.0" prctl = "1.0.0" regex = "1.6.0" sendfd = { version = "0.4.3", features = ["tokio"] } diff --git a/conmon-rs/server/src/server.rs b/conmon-rs/server/src/server.rs index 9207bbc47a..e5bba26930 100644 --- a/conmon-rs/server/src/server.rs +++ b/conmon-rs/server/src/server.rs @@ -20,7 +20,7 @@ use nix::{ errno, libc::_exit, sys::signal::Signal, - unistd::{fork, ForkResult}, + unistd::{fork, gethostname, ForkResult}, }; use opentelemetry::{ global, @@ -30,9 +30,9 @@ use opentelemetry::{ trace::{self, Tracer}, Resource, }, - KeyValue, }; use opentelemetry_otlp::{ExportConfig, Protocol, WithExportConfig}; +use opentelemetry_semantic_conventions::resource::{HOST_NAME, PROCESS_PID, SERVICE_NAME}; use std::{fs::File, io::Write, path::Path, process, str::FromStr, sync::Arc, time::Duration}; use tokio::{ fs, @@ -170,14 +170,20 @@ impl Server { timeout: Duration::from_secs(3), protocol: Protocol::Grpc, }); - let tracer = - opentelemetry_otlp::new_pipeline() - .tracing() - .with_exporter(exporter) - .with_trace_config(trace::config().with_resource(Resource::new(vec![ - KeyValue::new("service.name", crate_name!()), - ]))) - .install_batch(Tokio)?; + let hostname = gethostname() + .context("get hostname")? + .to_str() + .context("convert hostname to string")? + .to_string(); + let tracer = opentelemetry_otlp::new_pipeline() + .tracing() + .with_exporter(exporter) + .with_trace_config(trace::config().with_resource(Resource::new(vec![ + SERVICE_NAME.string(crate_name!()), + PROCESS_PID.i64(process::id() as i64), + HOST_NAME.string(hostname), + ]))) + .install_batch(Tokio)?; Ok(tracing_opentelemetry::layer().with_tracer(tracer).into()) }