Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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:

/etc/munin/plugins/bandwidth2

#!/bin/sh

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
fi

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 -->

    <ds>
            <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>
    </ds>

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

            <params>
            <xff> 5.0000000000e-01 </xff>
            </params>
            <cdp_prep>
                    <ds>
                    <primary_value> NaN </primary_value>
                    <secondary_value> NaN </secondary_value>
                    <value> NaN </value>
                    <unknown_datapoints> 0 </unknown_datapoints>
                    </ds>
            </cdp_prep>
            <database>
                    <!-- 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>
                    <snip>

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.

share|improve this question

2 Answers 2

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

share|improve this answer

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

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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