Munin-C

Munin C is a C rewrite of various munin components. The node is a rewrite of munin-node, and the plugins are a rewrite of commonly used munin plugins a single binary.

Purpose

  • reducing resource usage
    • disk space: the binary is smaller than the plugins together
    • more diskspace: it has no dependencies on other programs
    • less forks: it does not fork internally
    • faster startup: it doesn’t start perl or shell
    • less memory: just a small C program
    • less file accesses: one binary for many plugins
  • no need for Perl
  • everything can be run from inetd

It makes it very useful for machines without native support for Perl scripting, mostly because of restricted resources like embedded machines.

Limits

  • You lose flexibility as it is compiled code
    • plugin modification is not that easy
    • you have to create and distribute binaries
    • you have to care about portability across architectures.
  • Not all the features are implemented
    • root uid is not supported. All plugins are run with a single user, usually nobody.
    • no socket is opened. Everything runs from inetd.

What plugins are included?

cpu entropy forks fw_packets interrupts load open_files open_inodes processes swap uptime memory

Install

After compiling there will be a binary named munin-plugins-c. You can just replace the symlinks in /etc/munin/plugins/ with symlinks to this binary.

Note that the C version of the plugins do not need the C version of the node. It is just recommended as it gives you the full benefits at no added cost.