I'm using munin to monitor my server.

I've been able to write plugins for it, but only if the graph type is GAUGE. When I try COUNTER or DERIVE, no data is logged or graphed.

The plugin i'm currently stuck on is for monitoring bandwidth usage, and is as follows:



if [ "$1" = "config" ]; then
    echo 'graph_title Bandwidth Usage 2'
    echo 'graph_vlabel Bandwidth'
    echo 'graph_scale no'
    echo 'graph_category network'
    echo 'graph_info Bandwidth usage.'

    echo 'used.label Used'
    echo 'used.info Bandwidth used so far this month.'
    echo 'used.type DERIVE'
    echo 'used.min 0'

    echo 'remain.label Remaining'
    echo 'remain.info Bandwidth remaining this month.'
    echo 'remain.type DERIVE'
    echo 'remain.min 0'

    exit 0

cat /var/log/zen.log

The contents of /var/log/zen.log are:

used.value 61.3251953125
remain.value 20.0146484375

And the resulting database is:

<!-- Round Robin Database Dump --><rrd> <version> 0003 </version>
    <step> 300 </step> <!-- Seconds -->
    <lastupdate> 1269936605 </lastupdate> <!-- 2010-03-30 09:10:05 BST -->

            <name> 42 </name>
            <type> DERIVE </type>
            <minimal_heartbeat> 600 </minimal_heartbeat>
            <min> 0.0000000000e+00 </min>
            <max> NaN </max>

            <!-- PDP Status -->
            <last_ds> 61.3251953125 </last_ds>
            <value> NaN </value>
            <unknown_sec> 5 </unknown_sec>

<!-- Round Robin Archives -->   <rra>
            <cf> AVERAGE </cf>
            <pdp_per_row> 1 </pdp_per_row> <!-- 300 seconds -->

            <xff> 5.0000000000e-01 </xff>
                    <primary_value> NaN </primary_value>
                    <secondary_value> NaN </secondary_value>
                    <value> NaN </value>
                    <unknown_datapoints> 0 </unknown_datapoints>
                    <!-- 2010-03-28 09:15:00 BST / 1269764100 --> <row><v> NaN </v></row>
                    <!-- 2010-03-28 09:20:00 BST / 1269764400 --> <row><v> NaN </v></row>
                    <!-- 2010-03-28 09:25:00 BST / 1269764700 --> <row><v> NaN </v></row>

The value for last_ds is correct, it just doesn't seem to make it into the actual database.

If I change DERIVE to GAUGE, it works as expected.

munin-run bandwidth2 

outputs the contents of /var/log/zen.log

I've been all over the (sparse) docs for munin plugins, and can't find my mistake. Modifying an existing plugin didn't work for me either.


I think DERIVED values must be integer values, so either round them or use GAUGE.


Why not use GAUGE? You want to measure the bandwidth used over the month, that's a GAUGE.

DERIVE/COUNTER is for values where you are interested in its value compared to the time. eg. if you want so see bytes per second in your case

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.