diff --git a/.chloggen/mx-psi_featuregatestable.yaml b/.chloggen/mx-psi_featuregatestable.yaml new file mode 100644 index 000000000000..5c0918e03097 --- /dev/null +++ b/.chloggen/mx-psi_featuregatestable.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: breaking + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: resourcedetectionprocessor + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Move `processor.resourcedetection.hostCPUModelAndFamilyAsString` feature gate to stable. + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [29025] + +# (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/processor/resourcedetectionprocessor/internal/system/internal/metadata/resource_int_version.go b/processor/resourcedetectionprocessor/internal/system/internal/metadata/resource_int_version.go index 5864e85bf006..6337c1e41421 100644 --- a/processor/resourcedetectionprocessor/internal/system/internal/metadata/resource_int_version.go +++ b/processor/resourcedetectionprocessor/internal/system/internal/metadata/resource_int_version.go @@ -3,20 +3,6 @@ package metadata // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal/system/internal/metadata" -// SetHostCPUFamilyAsInt sets provided value as "host.cpu.family" attribute as int. -func (rb *ResourceBuilder) SetHostCPUFamilyAsInt(val int64) { - if rb.config.HostCPUFamily.Enabled { - rb.res.Attributes().PutInt("host.cpu.family", val) - } -} - -// SetHostCPUModelIDAsInt sets provided value as "host.cpu.model.id" attribute as int. -func (rb *ResourceBuilder) SetHostCPUModelIDAsInt(val int64) { - if rb.config.HostCPUModelID.Enabled { - rb.res.Attributes().PutInt("host.cpu.model.id", val) - } -} - // SetHostCPUSteppingAsInt sets provided value as "host.cpu.stepping" attribute as int. func (rb *ResourceBuilder) SetHostCPUSteppingAsInt(val int64) { if rb.config.HostCPUModelID.Enabled { diff --git a/processor/resourcedetectionprocessor/internal/system/system.go b/processor/resourcedetectionprocessor/internal/system/system.go index a8614584b330..1913733efaa7 100644 --- a/processor/resourcedetectionprocessor/internal/system/system.go +++ b/processor/resourcedetectionprocessor/internal/system/system.go @@ -8,7 +8,6 @@ import ( "errors" "fmt" "net" - "strconv" "strings" "github.com/shirou/gopsutil/v3/cpu" @@ -24,12 +23,12 @@ import ( ) var ( - hostCPUModelAndFamilyAsStringID = "processor.resourcedetection.hostCPUModelAndFamilyAsString" - hostCPUModelAndFamilyAsStringFeatureGate = featuregate.GlobalRegistry().MustRegister( - hostCPUModelAndFamilyAsStringID, - featuregate.StageBeta, + _ = featuregate.GlobalRegistry().MustRegister( + "processor.resourcedetection.hostCPUModelAndFamilyAsString", + featuregate.StageStable, featuregate.WithRegisterDescription("Change type of host.cpu.model.id and host.cpu.model.family to string."), featuregate.WithRegisterFromVersion("v0.89.0"), + featuregate.WithRegisterToVersion("v0.101.0"), featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/semantic-conventions/issues/495"), ) hostCPUSteppingAsStringID = "processor.resourcedetection.hostCPUSteppingAsString" @@ -154,10 +153,7 @@ func (d *Detector) Detect(ctx context.Context) (resource pcommon.Resource, schem d.rb.SetHostMac(hostMACAttribute) d.rb.SetOsDescription(osDescription) if len(cpuInfo) > 0 { - err = setHostCPUInfo(d, cpuInfo[0]) - if err != nil { - d.logger.Warn("failed to get host cpuinfo", zap.Error(err)) - } + setHostCPUInfo(d, cpuInfo[0]) } return d.rb.Emit(), conventions.SchemaURL, nil } @@ -201,42 +197,16 @@ func reverseLookupHost(d *Detector) (string, error) { return hostname, nil } -func setHostCPUInfo(d *Detector, cpuInfo cpu.InfoStat) error { +func setHostCPUInfo(d *Detector, cpuInfo cpu.InfoStat) { d.logger.Debug("getting host's cpuinfo", zap.String("coreID", cpuInfo.CoreID)) d.rb.SetHostCPUVendorID(cpuInfo.VendorID) - if hostCPUModelAndFamilyAsStringFeatureGate.IsEnabled() { - // https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/29025 - d.logger.Info("This attribute changed from int to string. Temporarily switch back to int using the feature gate.", - zap.String("attribute", "host.cpu.family"), - zap.String("feature gate", hostCPUModelAndFamilyAsStringID), - ) - d.rb.SetHostCPUFamily(cpuInfo.Family) - } else { - family, err := strconv.ParseInt(cpuInfo.Family, 10, 64) - if err != nil { - return fmt.Errorf("failed to convert cpuinfo family to integer: %w", err) - } - d.rb.SetHostCPUFamilyAsInt(family) - } + d.rb.SetHostCPUFamily(cpuInfo.Family) // For windows, this field is left blank. See https://github.com/shirou/gopsutil/blob/v3.23.9/cpu/cpu_windows.go#L113 // Skip setting modelId if the field is blank. // ISSUE: https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/27675 if cpuInfo.Model != "" { - if hostCPUModelAndFamilyAsStringFeatureGate.IsEnabled() { - // https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/29025 - d.logger.Info("This attribute changed from int to string. Temporarily switch back to int using the feature gate.", - zap.String("attribute", "host.cpu.model.id"), - zap.String("feature gate", hostCPUModelAndFamilyAsStringID), - ) - d.rb.SetHostCPUModelID(cpuInfo.Model) - } else { - model, err := strconv.ParseInt(cpuInfo.Model, 10, 64) - if err != nil { - return fmt.Errorf("failed to convert cpuinfo model to integer: %w", err) - } - d.rb.SetHostCPUModelIDAsInt(model) - } + d.rb.SetHostCPUModelID(cpuInfo.Model) } d.rb.SetHostCPUModelName(cpuInfo.ModelName) @@ -251,5 +221,4 @@ func setHostCPUInfo(d *Detector, cpuInfo cpu.InfoStat) error { d.rb.SetHostCPUSteppingAsInt(int64(cpuInfo.Stepping)) } d.rb.SetHostCPUCacheL2Size(int64(cpuInfo.CacheSize)) - return nil }