Sauna configuration is made of a single yaml file. By default it loads sauna.yml in the current directory. You can load another configuration file with the --config switch:

$ sauna --config /etc/sauna.yml


This configuration file might end up containing secrets to access your monitoring server. It is a good idea not to make it world readable. Only the user running sauna needs to be able to read it.


Sometimes simply editing a configuration file feels easier than reading documentation. You can generate a default configuration file:

$ sauna sample
Created file ./sauna-sample.yml

You can adapt this default configuration to fit your needs, when you are ready rename it and launch sauna:

$ mv sauna-sample.yml sauna.yml


The configuration yaml file contains three parts:

  • Generic parameters
  • Active consumers
  • Active plugins

Generic parameters

All these parameters can be left out, in this case they take their default value.

How often, in seconds, will checks be run. The default value of 120 means that sauna will run all checks every two minutes. Individual checks that need to run more or less often can override their periodicity parameter.
The name of the host that will be reported to monitoring servers. The default value is the fully qualified domain name of your host.
A list of directories where additional plugins can be found. Defaults to no extra directory, meaning it does not load plugins beyond the core ones.
A path containing other configuration files to include. It can be used to separate each plugin in its own configuration file. File globs are expanded, example /etc/sauna.d/*.yml.
How many threads can process the checks at the same time. The default value of 1 means sauna will run checks one by one. Note that activating the concurrency system will, by default, only allow 1 check with the same name to run at the same time.
Sauna writes logs to the standard output by default. The logging parameter allows to pass a custom logging configuration to change the log format, write logs to files, send them to syslog and much more. Check the logging syntax for the details.


periodicity: 10
  - /opt/sauna_plugins

Active consumers

A list of the consumers you want to process your checks. It defines how sauna will interact with your monitoring server(s).



  - type: NSCA
    server: receiver.shinken.tld
    port: 5667
    timeout: 10

Many consumers can be active at the same time and a consumer may be used more than once.

Active plugins

A list of plugins and associated checks.



# Usage of disks
- type: Disk
    - type: used_percent
      warn: 80%
      crit: 90%
    - type: used_inodes_percent
      warn: 80%
      crit: 90%
      periodicity: 300

A plugin may be defined many times in the list. This allows to run the same checks with different configurations parameters.

Plugin parameters

Some plugins accept additional configuration options, for example:

- type: Redis
  checks: ...
    host: localhost
    port: 6379

Unfortunately the parameters accepted by each plugins are not yet documented.

Check parameters

The kind of check as defined by the plugin. All types available are listed by the command sauna list-available-checks.
The warning threshold for the check.
The critical threshold for the check.
Optional, overrides the default generated name of the check which is in the form plugin_type. It becomes necessary to override the name when more than one checks of the same plugin and type are defined simultaneously.
Optional, overrides the global periodicity for this check. Used to run a check at a different frequency than the others.

Logging syntax

By default Sauna writes logs with the level WARNING or the level passed by the --level flag in the command line to the standard output.

To further customize how logs are processed, Sauna can also leverage Python dictConfig. This allows the user to modify every aspect of the logging system, for instance:

  • Storing the logs in a file rotating every week
  • Silencing some log message but not others
  • Forwarding logs to syslog
  • Modifying the format of the logs

To do that a dictionary configuration must be passed in the logging parameter of the configuration file. For example to remove the date from the record and write the message to stderr:

  version: 1
      format: '%(message)s'
      class: logging.StreamHandler
      formatter: simple
      stream: ext://sys.stderr
    level: DEBUG
    handlers: [console]

Make sure to read the Python logging documentation to go further.