class Riemann::Babbler::Plugin::Iptables

Public Instance Methods

collect() click to toggle source
# File lib/riemann/babbler/plugins/iptables.rb, line 17
def collect

  current_rules = shell('iptables-save').split("\n").map do |x|
    x[0] == "#" ? nil : delete_counters(x) # delete counters and comments
  end.compact.join("\n")

  saved_rules = File.read(plugin.rules_file).split("\n").map do |x|
    x[0] == "#" ? nil : delete_counters(x) # delete counters and comments
  end.compact.join("\n")

  status =  current_rules == saved_rules ? 'ok' : 'critical'
  {
      :service => "#{plugin.service} #{plugin.rules_file}",
      :state => status, #  status 'ok' will be minimized
      :description => "#{plugin.service} rules different between file: #{plugin.rules_file} and iptables-save"
  }

end
delete_counters(str) click to toggle source
# File lib/riemann/babbler/plugins/iptables.rb, line 13
def delete_counters(str)
  str.gsub(/\[\d+\:\d+\]/, '').strip
end
init() click to toggle source
# File lib/riemann/babbler/plugins/iptables.rb, line 3
def init
  plugin.set_default(:service, 'iptables')
  plugin.set_default(:rules_file, '/etc/network/iptables')
  plugin.set_default(:interval, 60)
end
run_plugin() click to toggle source
# File lib/riemann/babbler/plugins/iptables.rb, line 9
def run_plugin
  File.exists? plugin.rules_file
end