prometheus/node_exporter · error

--collector.filesystem.fs-types-exclude and…

Error message

--collector.filesystem.fs-types-exclude and --collector.filesystem.fs-types-include are mutually exclusive

What it means

Validation guard in newFSTypeFilter: both --collector.filesystem.fs-types-exclude and --collector.filesystem.fs-types-include were supplied. Exclude and include filters are mutually exclusive; the collector cannot decide whether inclusion takes precedence, so it aborts construction of the filesystem collector.

Solutions

  1. Choose one mode: drop fs-types-include if you want to exclude some types, or drop fs-types-exclude if you want to whitelist types.
  2. If both behaviors are needed, run a second node_exporter instance with a different web.listen-address and one filter each.
  3. Audit deployment tooling (Helm charts, systemd units, scripts) that may append both flags unconditionally.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at collector/filesystem_common.go:288 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of prometheus/node_exporter@17ddd77c59 (2026-09-07). Data as JSON: /api/errors/cddf32bf1b1b9cee. Report an issue: GitHub.

Appendix: source

Thrown at collector/filesystem_common.go:288

}

func newFSTypeFilter(logger *slog.Logger) (deviceFilter, error) {
	if *oldFSTypesExcluded != "" {
		if !fsTypesExcludeSet {
			logger.Warn("--collector.filesystem.ignored-fs-types is DEPRECATED and will be removed in 2.0.0, use --collector.filesystem.fs-types-exclude")
			*fsTypesExclude = *oldFSTypesExcluded
		} else {
			return deviceFilter{}, errors.New("--collector.filesystem.ignored-fs-types and --collector.filesystem.fs-types-exclude are mutually exclusive")
		}
	}

	if *fsTypesInclude != "" && !fsTypesExcludeSet {
		logger.Debug("fs-types-exclude flag not set when fs-types-include flag is set, assuming include is desired")
		*fsTypesExclude = ""
	}

	if *fsTypesExclude != "" && *fsTypesInclude != "" {
		return deviceFilter{}, errors.New("--collector.filesystem.fs-types-exclude and --collector.filesystem.fs-types-include are mutually exclusive")
	}

	if *fsTypesExclude != "" {
		logger.Info("Parsed flag --collector.filesystem.fs-types-exclude", "flag", *fsTypesExclude)
	}
	if *fsTypesInclude != "" {
		logger.Info("Parsed flag --collector.filesystem.fs-types-include", "flag", *fsTypesInclude)
	}

	return newDeviceFilter(*fsTypesExclude, *fsTypesInclude), nil
}

View on GitHub (pinned to 17ddd77c59)