‹ Plugins / River Anomaly Detection
Data-write

River Anomaly Detection

Most anomaly detectors make you choose between tuning them constantly or accepting that they’ll drift out of relevance. The River Anomaly Detector for InfluxDB 3 skips that tradeoff. It learns incrementally from every observation, adapts its strategy as your data’s character changes, and persists its models across restarts. Create a trigger, point it at a table, and anomalies start appearing in _anomalies.{your_table} - no configuration required.

Configuration

Arguments can be passed inline (space-separated lists) or via TOML config file (native TOML lists). Parameter names are the same in both modes.

Argument Required Default Description
include_fields No ”” Fields to monitor (space-separated). If set, only these numeric fields are processed
exclude_fields No ”” Fields to exclude from detection (space-separated)
exclude_tables No ”” Tables to skip when using all_tables trigger (space-separated)
string_fields No ”” String columns that are fields, not tags (space-separated). All other strings become tags
rolling_std_threshold No 5.0 Standard deviations from the mean to flag as anomaly
ew_fading_factor No 0.3 Fading factor for exponentially weighted stats (lower = longer memory)
combination_mode No any How to combine detector votes: any (OR), majority, or all (AND)
enable_seasonal No ”” Force seasonal detection: true/false to override, empty = auto from profiler
enable_adwin No ”” Force ADWIN drift detection: true/false to override, empty = auto from profiler
detector_mode No ”” Explicitly set detector mode components (space-separated or TOML list). Overrides profiler’s mode recommendation.
adwin_delta No 0.002 ADWIN sensitivity parameter. Lower values = more sensitive to drift
seasonal_fading_factor No 0.1 Fading factor for seasonal bucket stats (lower = longer memory)
seasonal_period No ”” Seasonal bucket period: hourly (24 buckets, hour-of-day) or weekly (168 buckets, hour-of-week). Empty = auto from profiler, falls back to hourly
seasonal_threshold No 3.0 Std devs from seasonal bucket mean to flag as anomaly
min_seasonal_observations No 5 Min observations per bucket before contributing to anomaly detection
min_rolling_observations No 10 Min total observations per series before the rolling Z-score starts scoring (cold-start guard)
max_series No 1000 Max unique series to track (LRU eviction)
auto_tune No true Read per-series parameters from _meta.series_profiles (requires auto-profiler plugin)
tune_refresh_interval No 100 Observations per series between auto-tune refreshes from _meta.series_profiles
log_anomalies No true Log detected anomalies to server log
checkpoint_interval_seconds No 1800 Seconds between model checkpoints to the database
max_checkpoint_age_hours No 24 Ignore checkpoints older than this when restoring
min_checkpoint_observations No 10 Skip checkpointing models with fewer observations than this (avoids persisting cold-start state)
config_file_path No Path to TOML config file. Supports absolute paths or relative paths (resolved via PLUGIN_DIR)

Ready to get started?

Download InfluxDB 3 and have River Anomaly Detection running in minutes.