Netflix/chaosmonkey · error

unsupported error counter: %s

Error message

unsupported error counter: %s

What it means

getNullErrorCounter is the default factory for the monkey's error counter. Any non-empty cfg.ErrorCounter() value is rejected because only the built-in null (no-op) error counter exists; no third-party error counters are supported. The error names the unsupported kind via %s.

Source

Thrown at errorcounter/errorcounter.go:41

// Netflix uses Atlas for tracking error events.
// In the open-source build, we currently only support a null (no-op) error
// counter

type nullErrorCounter struct{}

func (n nullErrorCounter) Increment() error {
	return nil
}

func init() {
	deps.GetErrorCounter = getNullErrorCounter
}

func getNullErrorCounter(cfg *config.Monkey) (chaosmonkey.ErrorCounter, error) {
	kind := cfg.ErrorCounter()
	if kind != "" {
		return nil, errors.Errorf("unsupported error counter: %s", kind)
	}

	return nullErrorCounter{}, nil
}

View on GitHub (pinned to eaa28fb761)

Solutions

  1. Remove the error counter setting from the monkey config so it stays empty and the nullErrorCounter is used
  2. If a real counter is needed, implement a chaosmonkey.ErrorCounter and wire it via deps.GetErrorCounter instead of the config kind
  3. Check the config file/flags for a stray error_counter value copied from another setup

Example fix

// before (config)
error_counter: "datadog"
// after
// remove the error_counter key entirely (empty means use nullErrorCounter)
Defensive patterns

Strategy: validation

Validate before calling

if kind := cfg.ErrorCounter(); kind != "" {
    return fmt.Errorf("this build only supports the null error counter; got %q", kind)
}

Try / catch

if _, err := getNullErrorCounter(cfg); err != nil {
    log.Fatalf("error counter config invalid: %v", err)
}

Prevention

When it happens

Trigger: Setting an error counter config value (e.g. error_counter in the monkey config) to any non-empty string while using this library, since no alternative error counter kinds are implemented.

Common situations: Copying config from a fork or docs that mention error counters (e.g. 'datadog', 'prometheus') that this build does not support; typo intended to disable the counter instead of leaving it empty.

Related errors


AI-assisted analysis of Netflix/chaosmonkey@eaa28fb761 (2026-09-03). Data as JSON: /api/errors/a3e2c49749d3628f. Report an issue: GitHub.