aboutsummaryrefslogtreecommitdiffstats
path: root/vhost_access
blob: cc45df0d3d7856d77ea5f8ccddd6cf6107cb2563 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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 (<LT>) {
    my $buf = $_;
    if($buf eq '') { next }
    $i++;
  }
  close(LT);
  print $vhostid.".value $i\n";
}