python-munin

Framework for writing munin plugins.


Install
pip install python-munin==0.3.2

Documentation

Installation

pip install python-munin

Examples

First Plugin

import munin

category = 'system'
fields = [
    'load1',
    'load5',
    'load15',
]
vlabel = 'load'

def values():
    with open('/proc/loadavg') as f:
        data = f.read()
    load1, load5, load15 = [float(s) for s in data.split()[:3]]
    return {
        'load1': load1,
        'load5': load5,
        'load15': load15,
    }
        
if __name__ == '__main__':
    munin.main()

Setting Thresholds

from munin import Field
import munin

category = 'system'
fields = [
    Field('load1', warning=4, critical=6),
    Field('load5', warning=4, critical=6),
    Field('load15', warning=4, critical=6),
]
vlabel = 'load'

def values():
    with open('/proc/loadavg') as f:
        data = f.read()
    load1, load5, load15 = [float(s) for s in data.split()[:3]]
    return {
        'load1': load1,
        'load5': load5,
        'load15': load15,
    }

if __name__ == '__main__':
    munin.main()

Dynamic Fields

import munin
import os

category = 'system'
vlabel = 'load'

def fields():
    files = os.listdir('/sys/devices/system/cpu')
    return [f for f in files if f.startswith('cpu') and f[3:].isdigit()]

def values():
    for cpu in fields():
        path = os.path.join('/sys/devices/system/cpu', cpu, 'cpufreq', 'cpuinfo_cur_freq')
        with open(path) as f:
            freq = int(f.read())
        yield cpu, freq

if __name__ == '__main__':
    munin.main()