cilium/cilium · error

no health status found for the filter

Error message

no health status found for the filter

What it means

The 'cilium-dbg hive health' (or cilium health status) command queries the module health table with optional --prefix/--match filters. It throws this when the filters are set but the query returns no matching status entries, so there is nothing to display.

Source

Thrown at pkg/hive/health/command.go:98

			for i := range levels {
				levels[i] = strings.ToLower(levels[i])
			}

			w := s.LogWriter()
			if file != "" {
				p := s.Path(file)
				fd, err := os.Create(p)
				if err != nil {
					return nil, err
				}
				w = fd
			}

			ss := getHealth(db, table, prefix, match, levels)
			healthPkg.GetAndFormatModulesHealth(w, ss, true, "")

			if (prefix != "" || match != "") && len(ss) == 0 {
				return nil, errors.New("no health status found for the filter")
			}

			return nil, nil
		},
	)
}

func getHealth(db *statedb.DB, table statedb.Table[types.Status], prefix, match string, levels []string) []types.Status {
	tx := db.ReadTxn()
	results := table.Prefix(tx, StatusByID(types.HealthID(prefix)))
	ss := []types.Status{}
	for status := range results {
		if match != "" && !strings.Contains(status.ID.String(), match) {
			continue
		}
		if !slices.Contains(levels, strings.ToLower(status.Level.String())) {
			continue
		}

View on GitHub (pinned to ac7b90affa)

Solutions

  1. Check the module prefix/match string spelling and case
  2. Run without --prefix/--match to list all available health statuses and pick the correct name
  3. Verify the target module actually exists in this Cilium version

Example fix

# before
cilium-dbg hive health --prefix module.heatlh
# after
cilium-dbg hive health --prefix module.health
Defensive patterns

Strategy: validation

Validate before calling

statuses := getHealth(db, table, prefix, match, levels)
if (prefix != "" || match != "") && len(statuses) == 0 {
	fmt.Fprintln(os.Stderr, "no health status matched; run without filters to list modules")
	os.Exit(1)
}

Try / catch

if err := healthCmd.RunE(...); err != nil {
	if strings.Contains(err.Error(), "no health status found") {
		fmt.Fprintln(os.Stderr, "check module prefix spelling; list all with no --prefix/--match")
	}
	return err
}

Prevention

When it happens

Trigger: Running the hive health status command with a --prefix or --match filter that does not match any registered health module (getHealth returns an empty slice).

Common situations: Typo in the module prefix, querying a module from a different Cilium version that was renamed/removed, or the module hasn't registered status yet when the command runs.

Related errors


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