Mera Munin

Pillade med en maskin idag på EC2 där en del saknades i munin-väg. För att se vilka plugins som vill, kan eller inte vill vara med i matchen körs munin-node-configure --suggest som ger en fin lista, t ex

Plugin                     | Used | Suggestions                            
------                     | ---- | -----------
ntp_offset                 | no   | no [no ntpq program]                   
nvidia_                    | no   | no [no nvclock executable at /usr/bin/nvclock, please configure]
open_files                 | yes  | yes                                    
open_inodes                | yes  | yes                                    
postfix_mailqueue          | no   | no                                     
postfix_mailvolume         | no   | no [postfix not found]                 
postgres_bgwriter          | no   | yes

För att få med JMX (mot en miljö) så behövs paketet (under Ubuntu) munin-java-plugins, Postgres-prylarna var fortfarande inte på banan och ett litet test med perl -MDBD::Pg -e 1 säger just

Can’t locate DBD/Pg.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .).

För detta behövdes libdbd-pg-perl.

När väl allt verkar OK, kör munin-node-configure --shell | sh för att konfigurera in modulerna.

Minimal munin-plugin

På jobbet används en npa201e från Ping Communications till att svara på anrop från porttelefoni, dvs någon som vill in.

Dessvärre har denna inte varit helt tillförlitlig. Den första analoga telefon vi använde drog lite ström från linan för att kunna visa en display. Detta orsakade en hel del huvudbry och bara första samtalet gick fram. För att göra en lång historia kort – nu ligger den och övervakas och en av formerna för detta är med hjälp av munin. Eftersom det är trivialt att skriva enkla munin-pluginner så dokumenterar jag här minimi med ett fungerande exempel:

#!/bin/sh
 
if test "x$1" = "xconfig" ; then
	echo "graph_title Ping Com IP-dosa
graph_category network
graph_info Network status on npa201e
graph_vlabel On / Off
status.label Status"
	exit 0;
fi
 
EXPECTED=/opt/pingcom-watch/expected-output.txt
TEMP=/tmp/pingcom-test
 
echo -n "" | netcat 10.20.10.11 9699 > $TEMP
diff -q $TEMP $EXPECTED > /dev/null
D=$?
 
echo -n "status.value "
echo $D

Munin template update

I like to have day, week and month in one view.

/etc/munin/templates/munin-nodeview.tmpl
<tr>
  <td><a href="<TMPL_VAR NAME="URLX">"><img <TMPL_IF NAME="STATE_WARNING">class="warn"</TMPL_IF><TMPL_IF NAME="STATE_CRITICAL">class="crit"</TMPL
  <td><a href="<TMPL_VAR NAME="URLX">"><img <TMPL_IF NAME="STATE_WARNING">class="warn"</TMPL_IF> <TMPL_IF NAME="STATE_CRITICAL">class="crit"</TMP
+ <td><a href="<TMPL_VAR NAME="URLX">"><img <TMPL_IF NAME="STATE_WARNING">class="warn"</TMPL_IF> <TMPL_IF NAME="STATE_CRITICAL">class="crit"</TMP
</tr>
</TMPL_LOOP><!-- End of SERVICES loop -->
</table>