From 6a9971094a116d3d2fd636a4fa305214e4fa1f74 Mon Sep 17 00:00:00 2001 From: lookshe Date: Tue, 3 Feb 2015 15:53:16 +0100 Subject: added munin script for vhost access and bandwith --- vhost_access | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ vhost_bandwith | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 vhost_access create mode 100644 vhost_bandwith diff --git a/vhost_access b/vhost_access new file mode 100644 index 0000000..cc45df0 --- /dev/null +++ b/vhost_access @@ -0,0 +1,54 @@ +#!/usr/bin/perl -w +use strict; + +# copied and modified from: https://github.com/munin-monitoring/contrib/tree/master/plugins/apache/apache_byprojects + +my $server = 'Apache'; + +my $statepath = '/var/lib/munin/plugin-state'; +my $logtail = '/usr/sbin/logtail'; + +my @logfiles = `ls /var/log/ispconfig/httpd/*/access.log`; + +my $logs = {}; + +foreach (@logfiles) { + my $actFile = $_; + chomp($actFile); + (my $actLabel = $actFile) =~ s:.*/([^/]*)/access\.log:$1:; + (my $actId = $actLabel) =~ s/[^a-zA-Z0-9]/_/g; + $logs->{$actId}{'label'} = $actLabel; + $logs->{$actId}{'file'} = $actFile; +} + +if(defined($ARGV[0])) { + if ($ARGV[0] eq 'autoconf') { + print "yes\n"; + exit(0); + } elsif ($ARGV[0] eq 'config') { + print "graph_title $server access vhost\n"; + print "graph_total Total\n"; + print "graph_vlabel Access by \${graph_period}\n"; + print "graph_category $server\n"; + print "graph_info This graph show $server access by vhost.\n"; + foreach my $vhostid (keys $logs) { + print $vhostid.".label $logs->{$vhostid}{'label'}\n"; + print $vhostid.".type DERIVE\n"; + print $vhostid.".min 0\n"; + } + exit(0); + } +} + +foreach my $vhostid ( keys $logs ) { + my $i = 0; + my $state = $statepath.'/'.$vhostid.'_access.state'; + open(LT, "$logtail -f ".$logs->{$vhostid}{'file'}." -o $state |") or die "Can't open $logtail : $!"; + while () { + my $buf = $_; + if($buf eq '') { next } + $i++; + } + close(LT); + print $vhostid.".value $i\n"; +} diff --git a/vhost_bandwith b/vhost_bandwith new file mode 100644 index 0000000..420ee0f --- /dev/null +++ b/vhost_bandwith @@ -0,0 +1,55 @@ +#!/usr/bin/perl -w +use strict; + +# copied and modified from: https://github.com/munin-monitoring/contrib/tree/master/plugins/apache/apache_byprojects + +my $server = 'Apache'; + +my $statepath = '/var/lib/munin/plugin-state'; +my $logtail = '/usr/sbin/logtail'; + +my @logfiles = `ls /var/log/ispconfig/httpd/*/access.log`; + +my $logs = {}; + +foreach (@logfiles) { + my $actFile = $_; + chomp($actFile); + (my $actLabel = $actFile) =~ s:.*/([^/]*)/access\.log:$1:; + (my $actId = $actLabel) =~ s/[^a-zA-Z0-9]/_/g; + $logs->{$actId}{'label'} = $actLabel; + $logs->{$actId}{'file'} = $actFile; +} + +if(defined($ARGV[0])) { + if ($ARGV[0] eq 'autoconf') { + print "yes\n"; + exit(0); + } elsif ($ARGV[0] eq 'config') { + print "graph_title $server total bandwidth vhost\n"; + print "graph_total Total\n"; + print "graph_vlabel Bits\n"; + print "graph_category $server\n"; + print "graph_info This graph show $server total bandwidth used by vhost.\n"; + foreach my $vhostid (keys $logs) { + print $vhostid.".label $logs->{$vhostid}{'label'}\n"; + print $vhostid.".type GAUGE\n"; + } + exit(0); + } +} + +foreach my $vhostid ( keys $logs ) { + my $i = 0; + my $state = $statepath.'/'.$vhostid.'_totalbandwidth.state'; + open(LT, "$logtail -f ".$logs->{$vhostid}{'file'}." -o $state |") or die "Can't open $logtail : $!"; + while () { + my $buf = $_; + if($buf eq '') { next } + if($buf =~ m/" \d+ (\d+) "/) { + $i += $1; + } + } + close(LT); + print $vhostid.".value $i\n"; +} -- cgit v1.2.3