Sha256: 98dee34ab0dfc3cddef546f0b41a157a9ebedb2210fbd14bb2dd2a9710560782

Contents?: true

Size: 1.25 KB

Versions: 1

Compression:

Stored size: 1.25 KB

Contents

class Riemann::Babbler::Net
  include Riemann::Babbler

  WORDS = ['rx bytes',
           'rx packets',
           'rx errs',
           'rx drop',
           'rx fifo',
           'rx frame',
           'rx compressed',
           'rx multicast',
           'tx bytes',
           'tx packets',
           'tx drops',
           'tx fifo',
           'tx colls',
           'tx carrier',
           'tx compressed']

  def plugin
    options.plugins.net
  end

  def init
    @diff = Hash.new
    @old_status = Hash.new
  end

  def net
    f = File.read('/proc/net/dev')
    status = Hash.new
    f.split("\n").inject({}) do |s, line|
      if line =~ /\s*(\w+?):\s*([\s\d]+)\s*/
        iface = $1
        WORDS.map do |service|
          "#{plugin.service} #{iface} #{service}"
        end.zip(
          $2.split(/\s+/).map { |str| str.to_i }
        ).each do |service, value|
          status.merge!({service => value})
        end
      end
    end
    status.each_key { |key| @diff[key] = status[key] - @old_status[key] } unless @old_status.empty?
    @old_status = status
    @diff
  end

  def tick
    net.each do |service, value|
      report({
        :service => service,
        :metric => value
      })
    end unless net.nil?
  end

end

Riemann::Babbler::Net.run

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
riemann-babbler-0.1.5 lib/riemann/babbler/plugins/net.rb