diff --git a/input/otlp/logs.go b/input/otlp/logs.go index 78748b36..835cc6b7 100644 --- a/input/otlp/logs.go +++ b/input/otlp/logs.go @@ -119,7 +119,7 @@ func (c *Consumer) convertLogRecord( event := baseEvent.CloneVT() initEventLabels(event) - translateScopeMetadata(scope, event) + translateLogScopeMetadata(scope, event) if record.Timestamp() == 0 { event.Timestamp = modelpb.FromTime(record.ObservedTimestamp().AsTime().Add(timeDelta)) diff --git a/input/otlp/metadata.go b/input/otlp/metadata.go index 2a1e854c..db9baab3 100644 --- a/input/otlp/metadata.go +++ b/input/otlp/metadata.go @@ -456,7 +456,7 @@ func translateResourceMetadata(resource pcommon.Resource, out *modelpb.APMEvent) } } -func translateScopeMetadata(scope pcommon.InstrumentationScope, out *modelpb.APMEvent) { +func translateScopeCommonMetadata(scope pcommon.InstrumentationScope, out *modelpb.APMEvent) { scope.Attributes().Range(func(k string, v pcommon.Value) bool { switch k { // data_stream.* @@ -473,7 +473,9 @@ func translateScopeMetadata(scope pcommon.InstrumentationScope, out *modelpb.APM } return true }) +} +func translateScopeFrameworkMetadata(scope pcommon.InstrumentationScope, out *modelpb.APMEvent) { if name := scope.Name(); name != "" { if out.Service == nil { out.Service = &modelpb.Service{} @@ -485,6 +487,32 @@ func translateScopeMetadata(scope pcommon.InstrumentationScope, out *modelpb.APM } } +func translateLogScopeMetadata(scope pcommon.InstrumentationScope, out *modelpb.APMEvent) { + translateScopeCommonMetadata(scope, out) + if version := scope.Version(); version != "" { + // If the version is set, we assume the name is an instrumentation library name + translateScopeFrameworkMetadata(scope, out) + } else { + // If the version is not set, we assume the name is a logger name + if name := scope.Name(); name != "" { + if out.Log == nil { + out.Log = &modelpb.Log{} + } + out.Log.Logger = name + } + } +} + +func translateSpanScopeMetadata(scope pcommon.InstrumentationScope, out *modelpb.APMEvent) { + translateScopeCommonMetadata(scope, out) + translateScopeFrameworkMetadata(scope, out) +} + +func translateMetricsScopeMetadata(scope pcommon.InstrumentationScope, out *modelpb.APMEvent) { + translateScopeCommonMetadata(scope, out) + translateScopeFrameworkMetadata(scope, out) +} + func cleanServiceName(name string) string { return serviceNameInvalidRegexp.ReplaceAllString(truncate(name), "_") } diff --git a/input/otlp/metrics.go b/input/otlp/metrics.go index 796fbd36..ef10f75f 100644 --- a/input/otlp/metrics.go +++ b/input/otlp/metrics.go @@ -159,7 +159,7 @@ func (c *Consumer) handleScopeMetrics( for key, ms := range ms { event := baseEvent.CloneVT() - translateScopeMetadata(in.Scope(), event) + translateMetricsScopeMetadata(in.Scope(), event) event.Timestamp = modelpb.FromTime(key.timestamp.Add(timeDelta)) metrs := make([]*modelpb.MetricsetSample, 0, len(ms.samples)) diff --git a/input/otlp/traces.go b/input/otlp/traces.go index cbb2f522..071d47fb 100644 --- a/input/otlp/traces.go +++ b/input/otlp/traces.go @@ -178,7 +178,7 @@ func (c *Consumer) convertSpan( representativeCount := getRepresentativeCountFromTracestateHeader(otelSpan.TraceState().AsRaw()) event := baseEvent.CloneVT() - translateScopeMetadata(otelLibrary, event) + translateSpanScopeMetadata(otelLibrary, event) initEventLabels(event) event.Timestamp = modelpb.FromTime(startTime.Add(timeDelta))