diff --git a/.chloggen/stanza-allow-setting-scope-2.yaml b/.chloggen/stanza-allow-setting-scope-2.yaml new file mode 100644 index 000000000000..96b1decc379f --- /dev/null +++ b/.chloggen/stanza-allow-setting-scope-2.yaml @@ -0,0 +1,27 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: enhancement + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: filelogreceiver + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Set scope name and version on scraped logs + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [31771] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [] diff --git a/.chloggen/stanza-allow-setting-scope.yaml b/.chloggen/stanza-allow-setting-scope.yaml new file mode 100644 index 000000000000..deeb3245406a --- /dev/null +++ b/.chloggen/stanza-allow-setting-scope.yaml @@ -0,0 +1,27 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: enhancement + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: pkg/stanza + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Add the option to set scope name and version + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [31771] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [] diff --git a/pkg/stanza/adapter/converter.go b/pkg/stanza/adapter/converter.go index ada2d75823b1..cc2d97ba6b60 100644 --- a/pkg/stanza/adapter/converter.go +++ b/pkg/stanza/adapter/converter.go @@ -15,6 +15,7 @@ import ( "sync" "github.com/cespare/xxhash/v2" + "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/plog" "go.uber.org/zap" @@ -71,13 +72,47 @@ type Converter struct { // when Stop() is called. wg sync.WaitGroup - logger *zap.Logger + logger *zap.Logger + buildInfo component.BuildInfo + packageName string } type converterOption interface { apply(*Converter) } +func withPackageName(name string) converterOption { + return packageNameOption{name} +} + +type packageNameOption struct { + name string +} + +func (o packageNameOption) apply(c *Converter) { + c.packageName = o.name +} + +type packageNameProvider interface { + PackageName() string +} + +func withBuildInfo(buildInfo component.BuildInfo) converterOption { + return buildInfoOption{buildInfo} +} + +type buildInfoOption struct { + buildInfo component.BuildInfo +} + +func (o buildInfoOption) apply(c *Converter) { + c.buildInfo = o.buildInfo +} + +type useBuildInfo interface { + UseBuildInfo() bool +} + func withWorkerCount(workerCount int) converterOption { return workerCountOption{workerCount} } @@ -162,6 +197,14 @@ func (c *Converter) workerLoop() { } else { sl = pLogs.ResourceLogs().At(resourceIdx).ScopeLogs().At(0) } + + if c.packageName != "" { + sl.Scope().SetName(c.packageName) + } + if c.buildInfo.Version != "" { + sl.Scope().SetVersion(c.buildInfo.Version) + } + convertInto(e, sl.LogRecords().AppendEmpty()) } diff --git a/pkg/stanza/adapter/factory.go b/pkg/stanza/adapter/factory.go index 34907b3d3951..55daa190ece0 100644 --- a/pkg/stanza/adapter/factory.go +++ b/pkg/stanza/adapter/factory.go @@ -62,6 +62,12 @@ func createLogsReceiver(logReceiverType LogReceiverType) rcvr.CreateLogsFunc { } converterOpts := []converterOption{} + if p, ok := logReceiverType.(packageNameProvider); ok { + converterOpts = append(converterOpts, withPackageName(p.PackageName())) + } + if p, ok := logReceiverType.(useBuildInfo); ok && p.UseBuildInfo() { + converterOpts = append(converterOpts, withBuildInfo(params.BuildInfo)) + } if baseCfg.numWorkers > 0 { converterOpts = append(converterOpts, withWorkerCount(baseCfg.numWorkers)) } diff --git a/receiver/filelogreceiver/filelog.go b/receiver/filelogreceiver/filelog.go index d79fb31e8572..b0a3eb7abcbb 100644 --- a/receiver/filelogreceiver/filelog.go +++ b/receiver/filelogreceiver/filelog.go @@ -28,6 +28,14 @@ func (f ReceiverType) Type() component.Type { return metadata.Type } +func (f ReceiverType) PackageName() string { + return "otelcol/filelogreceiver" +} + +func (f ReceiverType) UseBuildInfo() bool { + return true +} + // CreateDefaultConfig creates a config with type and version func (f ReceiverType) CreateDefaultConfig() component.Config { return createDefaultConfig()