cilium/cilium · warning

failed to collect cilium-operator profiles: %w

Error message

failed to collect cilium-operator profiles: %w

What it means

Returned when profiling is enabled and SubmitStreamProfilingGopsSubtasks for cilium-operator pods fails. This submits tasks that stream gops profiling data from the operator container on the gops port (ciliumdef.GopsPortOperator). Failure means operator profiling data could not be collected.

Source

Thrown at cilium-cli/sysdump/sysdump.go:1401

			Task: func(_ context.Context) error {
				if err := c.submitCiliumBugtoolTasks(c.CiliumPods); err != nil {
					return fmt.Errorf("failed to collect 'cilium-bugtool': %w", err)
				}
				return nil
			},
		},
		{
			CreatesSubtasks: true,
			Description:     "Collecting profiling data from Cilium Operator pods",
			Quick:           false,
			Task: func(_ context.Context) error {
				if !c.Options.Profiling {
					return nil
				}

				err := c.SubmitStreamProfilingGopsSubtasks(c.CiliumOperatorPods, ciliumOperatorContainerName, ciliumdef.GopsPortOperator)
				if err != nil {
					return fmt.Errorf("failed to collect cilium-operator profiles: %w", err)
				}
				return nil
			},
		},
		{
			CreatesSubtasks: true,
			Description:     "Collecting logs from Cilium pods",
			Quick:           false,
			Task: func(_ context.Context) error {
				if err := c.SubmitLogsTasks(c.CiliumPods, c.Options.LogsSinceTime, c.Options.LogsLimitBytes); err != nil {
					return fmt.Errorf("failed to collect logs from Cilium pods")
				}
				return nil
			},
		},
		{
			CreatesSubtasks: true,
			Description:     "Collecting logs from crashing Cilium pods",

View on GitHub (pinned to ac7b90affa)

Solutions

  1. Confirm the cilium-operator is started with gops/profiling enabled on the default port
  2. Check the operator container name matches what the CLI expects
  3. Disable profiling (--profiling=false) if operator profiles are not required

Example fix

// before
cilium-cli sysdump --profiling
// after (skip profiling when gops is not enabled)
cilium-cli sysdump
Defensive patterns

Strategy: fallback

Validate before calling

// confirm the operator gops port is listening before enabling profiling
conn, err := net.DialTimeout("tcp", fmt.Sprintf("%s:%d", operatorIP, 9890), 2*time.Second)
if err != nil { log.Printf("gops port not reachable; disable --profiling") } else { conn.Close() }

Try / catch

if err := c.SubmitStreamProfilingGopsSubtasks(pods, containerName, gopsPort); err != nil {
    log.Printf("profiling collection failed (%v); continuing without profiles", err)
}

Prevention

When it happens

Trigger: sysdump.Run with Options.Profiling=true and SubmitStreamProfilingSubtasks(c.CiliumOperatorPods, ciliumOperatorContainerName, ciliumdef.GopsPortOperator) returning an error — wrong container name, or gops agent not reachable on the operator's expected port.

Common situations: Operator deployed with profiling disabled or a non-default gops port; operator container renamed in custom deployments; network policy blocking pod-to-pod access to the gops port.

Related errors


AI-assisted analysis of cilium/cilium@ac7b90affa (2026-08-31). Data as JSON: /api/errors/5117840393fef978. Report an issue: GitHub.