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
- Remove the error counter setting from the monkey config so it stays empty and the nullErrorCounter is used
- If a real counter is needed, implement a chaosmonkey.ErrorCounter and wire it via deps.GetErrorCounter instead of the config kind
- 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
- Keep error counter config empty unless you have implemented a custom counter
- Validate all config keys against a known schema before startup
- Search configs inherited from forks for unsupported keys
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
- unknown outage provider: %s
- retrieve cloud provider failed
- %s not specified
- unknown group: %v
- schedule already exists
AI-assisted analysis of Netflix/chaosmonkey@eaa28fb761 (2026-09-03).
Data as JSON: /api/errors/a3e2c49749d3628f.
Report an issue: GitHub.