Skip to content
Open
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .chloggen/fix-aix-crash.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
change_type: bug_fix
component: pkg/service
note: "Fix panic in process metrics on unsupported OSes (e.g. AIX)"
issues: [14307]
14 changes: 12 additions & 2 deletions service/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ import (
"go.opentelemetry.io/collector/service/telemetry"
)

const osAIX = "aix"

// This feature gate is deprecated and will be removed in 1.40.0. Views can now be configured.
var _ = featuregate.GlobalRegistry().MustRegister(
"telemetry.disableHighCardinalityMetrics",
Expand Down Expand Up @@ -234,8 +236,16 @@ func New(ctx context.Context, set Settings, cfg Config) (_ *Service, resultErr e
return nil, err
}

if err := proctelemetry.RegisterProcessMetrics(srv.telemetrySettings); err != nil {
return nil, fmt.Errorf("failed to register process metrics: %w", err)
// Only register process metrics on supported OSes.
if runtime.GOOS == osAIX {
// AIX is currently unsupported for process metrics, so we skip it to avoid crashing.
// We log this so the user is aware that metrics are disabled.
srv.telemetrySettings.Logger.Info("Skipping process metrics registration on unsupported OS", zap.String("os", runtime.GOOS))
} else {
// For other OSes, we want to fail fast if registration fails.
if err := proctelemetry.RegisterProcessMetrics(srv.telemetrySettings); err != nil {
return nil, err
}
}
return srv, nil
}
Expand Down
Loading