prometheus/node_exporter · error

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

Error message

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

What it means

Validation guard in newFSTypeFilter: collector startup fails when the deprecated --collector.filesystem.ignored-fs-types flag and its replacement --collector.filesystem.fs-types-exclude are both set, because two overlapping fs-type exclusion regexes would be ambiguous.

Solutions

  1. Remove --collector.filesystem.ignored-fs-types and use only --collector.filesystem.fs-types-exclude.
  2. Migrate by moving the old regex value into fs-types-exclude verbatim, then drop the deprecated flag.
  3. If only the deprecated flag is set (fs-types-exclude unset), no error occurs; only fix the flag combination that sets both.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at collector/filesystem_common.go:278 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/8eaed193936e8621. Report an issue: GitHub.

Appendix: source

Thrown at collector/filesystem_common.go:278

	}

	if *mountPointsExclude != "" {
		logger.Info("Parsed flag --collector.filesystem.mount-points-exclude", "flag", *mountPointsExclude)
	}
	if *mountPointsInclude != "" {
		logger.Info("Parsed flag --collector.filesystem.mount-points-include", "flag", *mountPointsInclude)
	}

	return newDeviceFilter(*mountPointsExclude, *mountPointsInclude), nil
}

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)
	}

View on GitHub (pinned to 17ddd77c59)