Other docs

Contributing

We welcome contributions to Munin. Here are the main ways to help:

Code Contributions

Munin is hosted on GitHub. To contribute code:

  1. Fork the repository.

  2. Create a feature branch.

  3. Make your changes with tests.

  4. Submit a pull request.

See Munin development environment for instructions on setting up a development environment.

Documentation

The Munin Guide is written in reStructuredText and built with Sphinx. You can edit pages directly on GitHub and submit a pull request. See Documenting Munin for details.

Project Resources

Dirty Config

The “dirty config” optimization allows plugins to output both configuration and data values in a single config call, eliminating the need for a separate fetch. This can halve the execution time for expensive plugins.

How it works

Normally, munin-update calls config <plugin> and then fetch <plugin> for each plugin on every run. Plugins that do expensive work to gather their numbers end up doing that work twice.

With dirty config, a plugin outputs its values as part of the config response. munin-update detects this (the config output contains .value lines) and skips the separate fetch call.

Implementation

The master advertises the capability with cap dirtyconfig. If the node supports it, it sets the environment variable MUNIN_CAP_DIRTYCONFIG before running plugins.

A plugin that supports dirty config checks this variable and, if set, includes its values in the config output. Plugins that don’t support dirty config continue to work normally — old masters simply ignore the extra output during config and call fetch as usual.

See Protocol extension: dirtyconfig for the protocol details.