96 lines
1.9 KiB
Ruby
Executable File
96 lines
1.9 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
|
|
=begin
|
|
|
|
Plugin to monitor the number of connections blocked by moblock.
|
|
|
|
Requirements:
|
|
|
|
Moblock up and running with generated log files going to /var/log/moblock
|
|
|
|
Parameters supported:
|
|
|
|
config
|
|
autoconf
|
|
|
|
Configurable variables
|
|
|
|
logfile - Override default moblock logfile
|
|
|
|
Magic markers
|
|
|
|
#%# family=auto
|
|
#%# capabilities=autoconf
|
|
|
|
=end
|
|
|
|
#
|
|
# Initialize vars
|
|
#
|
|
$logfile = ENV['logfile'] || '/var/log/moblock.log'
|
|
|
|
#
|
|
# Configure generated graph
|
|
#
|
|
def config
|
|
puts 'graph_args --base 1000 -r --lower-limit 0'
|
|
puts 'graph_title Moblock'
|
|
puts 'graph_vlabel Blocked Connections'
|
|
puts 'graph_category fw'
|
|
puts 'graph_info This graph shows the number of connections blocked by Moblock'
|
|
|
|
puts 'blocked_in.label Blocked In'
|
|
puts 'blocked_in.draw LINE1'
|
|
puts 'blocked_in.info Number of blocked incoming connections'
|
|
puts 'blocked_in.type GAUGE'
|
|
|
|
puts 'blocked_out.label Blocked Out'
|
|
puts 'blocked_out.draw LINE1'
|
|
puts 'blocked_out.info Number of blocked outgoing connections'
|
|
puts 'blocked_out.type GAUGE'
|
|
|
|
puts 'blocked_total.label Total Blocked'
|
|
puts 'blocked_total.draw LINE1'
|
|
puts 'blocked_total.info Total Number of blocked connections'
|
|
puts 'blocked_total.type GAUGE'
|
|
end
|
|
|
|
#
|
|
# Grep moblock logs for stats
|
|
#
|
|
def fetch(_debug = false)
|
|
num_in = `cat #{$logfile} | grep --extended-regexp 'IN: ' | wc -l`
|
|
num_out = `cat #{$logfile} | grep --extended-regexp 'OUT: ' | wc -l`
|
|
num_total = num_in.to_i + num_out.to_i
|
|
|
|
puts "blocked_in.value #{num_in}"
|
|
puts "blocked_out.value #{num_out}"
|
|
puts "blocked_total.value #{num_total}"
|
|
end
|
|
|
|
#
|
|
# If moblock executable on path then allow autoconfiguration
|
|
#
|
|
def autoconf
|
|
moblock_path = `which moblock`
|
|
if moblock_path.index('moblock')
|
|
puts 'yes'
|
|
else
|
|
puts 'no'
|
|
end
|
|
end
|
|
|
|
#
|
|
# Handle command line args
|
|
#
|
|
case ARGV.first
|
|
when 'config'
|
|
config
|
|
when 'debug'
|
|
fetch true
|
|
when 'autoconf'
|
|
autoconf
|
|
else
|
|
fetch
|
|
end
|