#!/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"; }