From 01fea75c0f3aea040dd66a604f4f37b4307ec807 Mon Sep 17 00:00:00 2001 From: Yoshiyuki Nakahara Date: Thu, 28 Jul 2011 07:37:51 +0200 Subject: [PATCH] Initial version --- plugins/other/ultramonkey-l7 | 135 +++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100755 plugins/other/ultramonkey-l7 diff --git a/plugins/other/ultramonkey-l7 b/plugins/other/ultramonkey-l7 new file mode 100755 index 00000000..b9e87798 --- /dev/null +++ b/plugins/other/ultramonkey-l7 @@ -0,0 +1,135 @@ +#!/usr/bin/env perl + +use strict; +use warnings; + +# must be run as root +my $L7VSADM = q{ /usr/sbin/l7vsadm }; + +if ( defined $ARGV[0] and $ARGV[0] eq 'autoconf' ) { + get_autoconf(); +} +elsif ( defined $ARGV[0] and $ARGV[0] eq 'config' ) { + get_config(); +} +else { + get_value(); +} +exit 0; + +# -------------------------------------------------------------------------- # + +sub get_autoconf +{ + `$L7VSADM`; + if ( $? ) { + print qq{no ($L7VSADM something wrong ...)\n}; + exit 1; + } + + print qq{yes\n}; +} + + +sub get_config +{ + my %l7vsadm = get_l7vsadm(); + + # print graph config + my $graph_order = join q{ }, keys %l7vsadm; + print << "END_graph_"; +graph_title Connections +graph_args --base 1000 -l 0 +graph_vlabel connections / sec +graph_info UltraMonkey-L7 Connections +graph_category Ultramonkey-L7 +graph_order $graph_order +END_graph_ + + # print graph config detail each hosts + foreach my $host ( sort keys %l7vsadm ) { + print << "END_hosts_"; +$host.label $host +$host.type COUNTER +$host.draw AREASTACK +END_hosts_ + } +} + + +sub get_value +{ + my %l7vsadm = get_l7vsadm(); + + foreach my $host ( sort keys %l7vsadm ) { + my $value = $l7vsadm{$host}->{InactConn}; + print qq{$host.value $value\n}; + } +} + + +sub get_l7vsadm +{ + my @l7vsadm_output = `$L7VSADM`; + my @lines = map { s{ \s* -> \s* }{}xms; $_ } grep /->/, @l7vsadm_output; + my $header = shift @lines; + my @header_columns = split /\s+/, $header; + shift @header_columns; + + my %l7vsadm = (); + foreach ( @lines ) { + my ( $host, @values ) = split /\s+/, $_; + my %value_hash = (); + @value_hash{ @header_columns } = @values; + $l7vsadm{$host} = \%value_hash; + } + + %l7vsadm; +} + + +__END__ +# -------------------------------------------------------------------------- # +This program must be run as root. +add settings like below. + +--- /etc/munin/plugin-conf.d/munin-node --- +[ultramonkeyl7] +user root +--- /etc/munin/plugin-conf.d/munin-node --- + +# -------------------------------------------------------------------------- # +get_l7vsadm : l7vsadm output to hash + +--- l7vsadm output --- +Layer-7 Virtual Server version 3.0.1 +Prot LocalAddress:Port ProtoMod Scheduler + -> RemoteAddress:Port Forward Weight ActiveConn InactConn +TCP ldb001:mysql sessionless lc + -> db002:mysql Masq 1 0 2796 + -> db003:mysql Masq 1 0 259 + -> db004:mysql Masq 1 0 6 +--- l7vsadm output --- + +--- hash --- +$VAR1 = { + 'db002:mysql' => { + 'ActiveConn' => '0', + 'Forward' => 'Masq', + 'InactConn' => '2796', + 'Weight' => '1' + }, + 'db003:mysql' => { + 'ActiveConn' => '0', + 'Forward' => 'Masq', + 'InactConn' => '259', + 'Weight' => '1' + }, + 'db004:mysql' => { + 'ActiveConn' => '0', + 'Forward' => 'Masq', + 'InactConn' => '6', + 'Weight' => '1' + }, +--- hash --- +