Skip to content

Commit

Permalink
Merge pull request #96 from yeller/add_riemann_dir_space
Browse files Browse the repository at this point in the history
add directory space use monitoring
  • Loading branch information
aphyr committed Jan 6, 2015
2 parents 1acbe1b + f0cbddf commit 370c91f
Showing 1 changed file with 55 additions and 0 deletions.
55 changes: 55 additions & 0 deletions bin/riemann-dir-space
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#!/usr/bin/env ruby

# Gathers the space used by a directory and submits it to riemann

require File.expand_path('../../lib/riemann/tools', __FILE__)

class Riemann::Tools::DirSpace
include Riemann::Tools

opt :directory, "", :default => '/var/log'
opt :service_prefix, "The first part of the service name, before the directory path", :default => "dir-space"
opt :warning, "Dir space warning threshold (in bytes)"
opt :critical, "Dir space critical threshold (in bytes)"
opt :alert_on_missing, "Send a critical metric if the directory is missing?", :default => true

def initialize
@dir = opts.fetch(:directory)
@service_prefix = opts.fetch(:service_prefix)
@warning = opts.fetch(:warning, nil)
@critical = opts.fetch(:critical, nil)
@alert_on_missing = opts.fetch(:alert_on_missing)
end

def tick
if Dir.exists?(@dir)
metric = `du '#{@dir}'`.lines.to_a.last.split("\t")[0].to_i
report(
:service => "#{@service_prefix} #{@dir}",
:metric => metric,
:state => state(metric),
:tags => ['dir_space']
)
elsif @alert_on_missing
report(
:service => "#{@service_prefix} #{@dir} missing",
:description => "#{@service_prefix} #{@dir} does not exist",
:metric => metric,
:state => 'critical',
:tags => ['dir_space']
)
end
end

def state(metric)
if @critical && metric > @critical
'critical'
elsif @warning && metric > @warning
'warning'
else
'ok'
end
end
end

Riemann::Tools::DirSpace.run

0 comments on commit 370c91f

Please sign in to comment.