mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
Munin plugin to monitor Peer Guardian Linux blockrates
This commit is contained in:
parent
4a7a0de134
commit
6898ae6d83
104
plugins/network/pgld
Executable file
104
plugins/network/pgld
Executable file
@ -0,0 +1,104 @@
|
||||
#!/usr/bin/env perl
|
||||
# -*- perl -*-
|
||||
|
||||
=head1 NAME
|
||||
|
||||
pgld - Plugin to monitor Peer Guardian Linux blockrates
|
||||
|
||||
=head1 CONFIGURATION
|
||||
|
||||
[pgld]
|
||||
env.pgldlog /var/log/pgl/pgld.log
|
||||
|
||||
=head1 LICENSE
|
||||
|
||||
GPLv2
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Daniel Lee <Longinus00@gmail.com>
|
||||
|
||||
=head1 MAGICK MARKERS
|
||||
|
||||
#%# family=network
|
||||
#%# capabilities=autoconf
|
||||
|
||||
=cut
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Munin::Plugin;
|
||||
|
||||
my $LOG = $ENV{'pgldlog'} || '/var/log/pgl/pgld.log';
|
||||
|
||||
sub trim {
|
||||
my $string = shift;
|
||||
$string =~ s/^\s+//;
|
||||
$string =~ s/\s+$//;
|
||||
return $string;
|
||||
}
|
||||
|
||||
sub autoconf {
|
||||
if(-r $LOG) {
|
||||
print "yes\n";
|
||||
}
|
||||
}
|
||||
|
||||
sub config {
|
||||
print << "EOF";
|
||||
graph_title Peer Guardian hits
|
||||
graph_info This graph shows the number of connections blocked per minute
|
||||
graph_args --base 1000 -l 0
|
||||
graph_vlabel hits per minute
|
||||
graph_category network
|
||||
graph_period minute
|
||||
hits.label hits
|
||||
hits.type DERIVE
|
||||
hits.min 0
|
||||
EOF
|
||||
}
|
||||
|
||||
if($ARGV[0] and $ARGV[0] eq "autoconf") {
|
||||
autoconf
|
||||
}
|
||||
elsif($ARGV[0] and $ARGV[0] eq "config") {
|
||||
config
|
||||
}
|
||||
else {
|
||||
my $IP4 = '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';
|
||||
my %positions = restore_state();
|
||||
|
||||
if(! -r $LOG) {
|
||||
print "can't open $LOG for reading.\n";
|
||||
}
|
||||
elsif( exists $positions{$LOG} ) {
|
||||
my $count = 0;
|
||||
if( (stat $LOG)[7] < $positions{$LOG} ) {
|
||||
my($fh_old, undef) = tail_open("$LOG.1", $positions{$LOG});
|
||||
while(<$fh_old>) {
|
||||
if( m/(IN|OUT): $IP4:\d+/ ) {
|
||||
$count = $count + 1;
|
||||
}
|
||||
}
|
||||
$positions{$LOG} = tail_close($fh_old);
|
||||
}
|
||||
my($fh, undef) = tail_open($LOG, $positions{$LOG});
|
||||
while(<$fh>) {
|
||||
if( m/(IN|OUT): $IP4:\d+\s*/ ) {
|
||||
$count = $count + 1;
|
||||
}
|
||||
}
|
||||
$positions{$LOG} = tail_close($fh);
|
||||
$positions{'count'} = $positions{'count'} + $count;
|
||||
}
|
||||
else {
|
||||
$positions{$LOG} = (stat $LOG)[7];
|
||||
$positions{'count'} = 0;
|
||||
}
|
||||
|
||||
print "hits.value $positions{'count'}\n";
|
||||
if($positions{'count'} > 100000000) {
|
||||
$positions{'count'} = 0;
|
||||
}
|
||||
save_state(%positions);
|
||||
}
|
Loading…
Reference in New Issue
Block a user