How to correctly use DERIVE or COUNTER in munin plugins
- by Johan
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.