Sha256: bd682e6339b62801eef5aea7ecac4fa774b3f09b413a3d0339ca414dbecf8749

Contents?: true

Size: 1.98 KB

Versions: 1

Compression:

Stored size: 1.98 KB

Contents

#! /usr/bin/env ruby
#
#   disk-usage-metrics
#
# DESCRIPTION:
#   This plugin collects disk capacity metrics.
#   Created to return values in same format as system/disk-usage-metric
#
# OUTPUT:
#   metric data
#
# PLATFORMS:
#   Windows
#
# DEPENDENCIES:
#   gem: sensu-plugin
#   gem: socket
#
# USAGE:
#
# NOTES:
#
# LICENSE:
#   Copyright 2014 <alex.slynko@wonga.com>
#   Released under the same terms as Sensu (the MIT license); see LICENSE
#   for details.
#

require 'sensu-plugin/metric/cli'
require 'socket'

#
# Disk Usage Metric
#
class DiskUsageMetric < Sensu::Plugin::Metric::CLI::Graphite
  option :scheme,
         description: 'Metric naming scheme, text to prepend to .$parent.$child',
         long: '--scheme SCHEME',
         default: "#{Socket.gethostname}.disk_usage"

  option :ignore_mnt,
         description: 'Ignore mounts matching pattern(s)',
         short: '-i MNT[,MNT]',
         long: '--ignore-mount',
         proc: proc { |a| a.split(',') }

  option :include_mnt,
         description: 'Include only mounts matching pattern(s)',
         short: '-I MNT[,MNT]',
         long: '--include-mount',
         proc: proc { |a| a.split(',') }

  BYTES_TO_MBYTES = 1024 * 1024

  def run # rubocop:disable all
    `wmic logicaldisk get caption, drivetype, freespace, size`.split(/\n+/).each do |line|
      caption, drivetype, freespace, size = line.split
      next unless drivetype.to_i == 3
      next if config[:ignore_mnt] && config[:ignore_mnt].find { |x| mnt.match(x) }
      next if config[:include_mnt] && !config[:include_mnt].find { |x| mnt.match(x) }

      caption = "disk_#{caption[0]}"
      freespace = freespace.to_f / BYTES_TO_MBYTES
      size = size.to_f / BYTES_TO_MBYTES
      output [config[:scheme], caption, 'used'].join('.'), (size - freespace).round(2)
      output [config[:scheme], caption, 'avail'].join('.'), freespace.round(2)
      output [config[:scheme], caption, 'used_percentage'].join('.'), ((size - freespace) / size * 100).round
    end
    ok
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sensu-plugins-windows-0.0.1.alpha.2 bin/metrics-windows-disk-usage.rb