Skip to content

Commit 28c543e

Browse files
authored
fix: missing service label for otlp logs (#15639)
1 parent c8e3c20 commit 28c543e

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

src/common/tracing/src/init.rs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -72,17 +72,19 @@ pub fn inject_span_to_tonic_request<T>(msg: impl tonic::IntoRequest<T>) -> tonic
7272

7373
#[allow(dyn_drop)]
7474
pub fn init_logging(
75-
name: &str,
75+
log_name: &str,
7676
cfg: &Config,
77-
labels: BTreeMap<String, String>,
77+
mut labels: BTreeMap<String, String>,
7878
) -> Vec<Box<dyn Drop + Send + Sync + 'static>> {
7979
let mut guards: Vec<Box<dyn Drop + Send + Sync + 'static>> = Vec::new();
80-
let log_name = name;
80+
if !labels.contains_key("service") {
81+
labels.insert("service".to_string(), log_name.to_string());
82+
}
8183
let trace_name = match labels.get("node_id") {
82-
None => name.to_string(),
84+
None => log_name.to_string(),
8385
Some(node_id) => format!(
8486
"{}@{}",
85-
name,
87+
log_name,
8688
if node_id.len() >= 7 {
8789
&node_id[0..7]
8890
} else {
@@ -105,8 +107,8 @@ pub fn init_logging(
105107
"service.name",
106108
trace_name.clone(),
107109
));
108-
for (k, v) in labels {
109-
kvs.push(opentelemetry::KeyValue::new(k, v));
110+
for (k, v) in &labels {
111+
kvs.push(opentelemetry::KeyValue::new(k.to_string(), v.to_string()));
110112
}
111113
let exporter = match cfg.tracing.otlp.protocol {
112114
OTLPProtocol::Grpc => opentelemetry_otlp::new_exporter()
@@ -201,7 +203,7 @@ pub fn init_logging(
201203

202204
// OpenTelemetry logger
203205
if cfg.otlp.on {
204-
let logger = OpenTelemetryLogger::new(log_name, "system", &cfg.otlp.endpoint);
206+
let logger = OpenTelemetryLogger::new(log_name, "system", &cfg.otlp.endpoint, &labels);
205207
let dispatch = fern::Dispatch::new()
206208
.level(cfg.otlp.level.parse().unwrap_or(LevelFilter::Info))
207209
.format(formatter("json"))
@@ -233,7 +235,7 @@ pub fn init_logging(
233235
query_logger = query_logger.chain(Box::new(query_log_file) as Box<dyn Write + Send>);
234236
}
235237
if let Some(endpoint) = &cfg.query.otlp {
236-
let logger = OpenTelemetryLogger::new(log_name, "query", endpoint);
238+
let logger = OpenTelemetryLogger::new(log_name, "query", endpoint, &labels);
237239
query_logger = query_logger.chain(Box::new(logger) as Box<dyn Log>);
238240
}
239241
}
@@ -248,7 +250,7 @@ pub fn init_logging(
248250
profile_logger.chain(Box::new(profile_log_file) as Box<dyn Write + Send>);
249251
}
250252
if let Some(endpoint) = &cfg.profile.otlp {
251-
let logger = OpenTelemetryLogger::new(log_name, "profile", endpoint);
253+
let logger = OpenTelemetryLogger::new(log_name, "profile", endpoint, &labels);
252254
profile_logger = profile_logger.chain(Box::new(logger) as Box<dyn Log>);
253255
}
254256
}

src/common/tracing/src/loggers.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15+
use std::collections::BTreeMap;
1516
use std::fmt;
1617
use std::io::BufWriter;
1718
use std::path::Path;
@@ -98,6 +99,7 @@ impl OpenTelemetryLogger {
9899
name: impl ToString,
99100
category: impl ToString,
100101
config: &OTLPEndpointConfig,
102+
labels: &BTreeMap<String, String>,
101103
) -> Self {
102104
let exporter = match config.protocol {
103105
OTLPProtocol::Grpc => {
@@ -144,6 +146,9 @@ impl OpenTelemetryLogger {
144146
"category",
145147
category.to_string(),
146148
));
149+
for (k, v) in labels {
150+
kvs.push(opentelemetry::KeyValue::new(k.to_string(), v.to_string()));
151+
}
147152
let provider = opentelemetry_sdk::logs::LoggerProvider::builder()
148153
.with_batch_exporter(exporter, opentelemetry_sdk::runtime::Tokio)
149154
.with_config(

0 commit comments

Comments
 (0)