# Commented Scrutiny Configuration File # # The default location for this file is /opt/scrutiny/config/collector.yaml. # In some cases to improve clarity default values are specified, # uncommented. Other example values are commented out. # # When this file is parsed by Scrutiny, all configuration file keys are # lowercased automatically. As such, Configuration keys are case-insensitive, # and should be lowercase in this file to be consistent with usage. # ###################################################################### # Environment Variable Overrides # # Any configuration key can be overridden via environment variables using # the COLLECTOR_ prefix. Dots and dashes in key names become underscores. # # Pattern: COLLECTOR_ # # Examples: # commands.metrics_smartctl_bin -> COLLECTOR_COMMANDS_METRICS_SMARTCTL_BIN # commands.metrics_scan_args -> COLLECTOR_COMMANDS_METRICS_SCAN_ARGS # commands.metrics_info_args -> COLLECTOR_COMMANDS_METRICS_INFO_ARGS # commands.metrics_smart_args -> COLLECTOR_COMMANDS_METRICS_SMART_ARGS # commands.metrics_smartctl_wait -> COLLECTOR_COMMANDS_METRICS_SMARTCTL_WAIT # api.endpoint -> COLLECTOR_API_ENDPOINT # api.timeout -> COLLECTOR_API_TIMEOUT # api.token -> COLLECTOR_API_TOKEN # host.id -> COLLECTOR_HOST_ID # allow_listed_devices -> COLLECTOR_ALLOW_LISTED_DEVICES # log.level -> COLLECTOR_LOG_LEVEL # log.file -> COLLECTOR_LOG_FILE # # Environment variables take precedence over config file values. ###################################################################### ###################################################################### # Version # # version specifies the version of this configuration file schema, not # the scrutiny binary. There is only 1 version available at the moment version: 1 # The host id is a label used for identifying groups of disks running on the same host # Primiarly used for hub/spoke deployments (can be left empty if using all-in-one image). host: id: "" # This block allows you to override/customize the settings for devices detected by # Scrutiny via `smartctl --scan` # See the "--device=TYPE" section of https://linux.die.net/man/8/smartctl # type can be a 'string' or a 'list' devices: # # example for forcing device type detection for a single disk # - device: /dev/sda # type: 'sat' # # # example for using `-d sat,auto`, notice the square brackets (workaround for #418) # - device: /dev/sda # type: ['sat,auto'] # # # example to show how to ignore a specific disk/device. # - device: /dev/sda # ignore: true # # # examples showing how to force smartctl to detect disks inside a raid array/virtual disk # - device: /dev/bus/0 # type: # - megaraid,14 # - megaraid,15 # - megaraid,18 # - megaraid,19 # - megaraid,20 # - megaraid,21 # # - device: /dev/twa0 # type: # - 3ware,0 # - 3ware,1 # - 3ware,2 # - 3ware,3 # - 3ware,4 # - 3ware,5 # # # example for setting a custom label for a device. # # This label will be applied on every collector run, making it ideal # # for environments where disks may be swapped (the label follows the slot/path). # # Config labels take precedence over labels set in the web UI. # - device: /dev/sda # label: 'NAS Pool - Disk 1' # # # example combining label with type override # - device: /dev/sdb # type: 'sat' # label: 'Backup Drive' # # # example to show how to override the smartctl command args (per device), see below for how to override these globally. # - device: /dev/sda # commands: # metrics_info_args: '--info --json -T permissive' # used to determine device unique ID & register device with Scrutiny # metrics_smart_args: '--xall --json -T permissive' # used to retrieve smart data for each device. # Valid log levels (case-insensitive, highest to lowest severity): # PANIC, FATAL, ERROR, WARN, INFO (default), DEBUG, TRACE # Setting a level includes all messages at that level and above. # Example: WARN shows WARN, ERROR, FATAL, and PANIC messages. #log: # file: '' #absolute or relative paths allowed, eg. web.log # level: INFO # #api: # endpoint: 'http://localhost:8080' # endpoint: 'http://localhost:8080/custombasepath' # if you need to use a custom base path (for a reverse proxy), you can add a suffix to the endpoint. # See docs/TROUBLESHOOTING_REVERSE_PROXY.md for more info, # timeout: 60 # HTTP timeout in seconds for API requests (default: 60) # token: '' # API token for authenticating with the Scrutiny server. # Required when web.auth.enabled is true on the server. # Must match the web.auth.token value in scrutiny.yaml. # Environment variable: COLLECTOR_API_TOKEN # example to show how to override the smartctl command args globally #commands: # metrics_smartctl_bin: 'smartctl' # change to provide custom `smartctl` binary path, eg. `/usr/sbin/smartctl` # metrics_scan_args: '--scan --json' # used to detect devices # metrics_info_args: '--info --json' # used to determine device unique ID & register device with Scrutiny # metrics_smart_args: '--xall --json' # used to retrieve smart data for each device. # metrics_smartctl_wait: 0 # time to wait in seconds between each disk's check # metrics_api_retry_count: 2 # number of retries for transient API publish failures after the first attempt # metrics_api_retry_delay: 2 # initial delay in seconds before retrying a transient API publish failure; later retries back off exponentially # metrics_farm_enabled: false # Enable Seagate FARM log collection (requires smartmontools 7.4+). # # Collects tamper-proof reliability data from Seagate Exos, IronWolf, # # IronWolf Pro, and BarraCuda drives. Non-Seagate drives are skipped # # automatically. Environment variable: COLLECTOR_COMMANDS_METRICS_FARM_ENABLED # metrics_farm_args: '-l farm --json' # smartctl arguments for FARM log collection ######################################################################################################################## # Performance Benchmarking (collector-performance binary) # # These settings configure the fio-based performance benchmark collector. # The performance collector is a separate binary (scrutiny-collector-performance) # that must be run independently from the SMART metrics collector. # # Environment variable overrides: # performance.enabled -> COLLECTOR_PERFORMANCE_ENABLED # performance.profile -> COLLECTOR_PERFORMANCE_PROFILE # performance.temp_file_size -> COLLECTOR_PERFORMANCE_TEMP_FILE_SIZE # commands.performance_fio_bin -> COLLECTOR_COMMANDS_PERFORMANCE_FIO_BIN # ######################################################################################################################## #performance: # enabled: false # Set to true to enable performance benchmarking # profile: 'quick' # 'quick' (~60s per device) or 'comprehensive' (~300s per device) # allow_direct_device_io: false # Benchmark raw block device (/dev/sdX) directly. Read-only (write tests skipped for safety). # temp_file_size: '256M' # Size of temp file for benchmarks (used in quick profile) #commands: # performance_fio_bin: 'fio' # Path to fio binary ######################################################################################################################## # MDADM RAID Monitoring (collector-mdadm binary) # # MDADM monitoring is handled by a separate binary (`scrutiny-collector-mdadm`). # It is not part of the SMART metrics collector or the fio performance collector. # # Config file behavior: # - preferred config: /opt/scrutiny/config/collector-mdadm.yaml # - fallback config: /opt/scrutiny/config/collector.yaml # # Common environment variable overrides: # api.endpoint -> COLLECTOR_MDADM_API_ENDPOINT # api.token -> COLLECTOR_MDADM_API_TOKEN # log.file -> COLLECTOR_MDADM_LOG_FILE # debug -> COLLECTOR_MDADM_DEBUG # # Docker scheduling for the standalone/containerized MDADM collector: # COLLECTOR_MDADM_CRON_SCHEDULE # COLLECTOR_MDADM_RUN_STARTUP # COLLECTOR_MDADM_RUN_STARTUP_SLEEP # # See docs/MDADM_MONITORING.md for required mounts, capabilities, compose examples, # and validation steps. ######################################################################################################################## #api: # endpoint: 'http://localhost:8080' # token: '' ######################################################################################################################## # Built-in Cron Scheduling # # The collector can run on a recurring schedule without an external cron daemon. # When a schedule is configured, the process stays alive and collects on each tick. # Without a schedule, the collector runs once and exits (default behavior). # # Environment variable overrides: # cron.schedule -> COLLECTOR_CRON_SCHEDULE # cron.run_on_startup -> COLLECTOR_RUN_STARTUP # cron.startup_sleep_secs -> COLLECTOR_RUN_STARTUP_SLEEP # ######################################################################################################################## #cron: # schedule: "0 * * * *" # Standard 5-field cron expression. Leave empty to run once and exit. # run_on_startup: false # Run an immediate collection on startup before the first scheduled tick. # startup_sleep_secs: 0 # Seconds to sleep before the startup run (useful for letting the system settle). ######################################################################################################################## # FEATURES COMING SOON # # The following commented out sections are a preview of additional configuration options that will be available soon. # ######################################################################################################################## #collect: # long: # enable: false # command: '' # short: # enable: false # command: ''