Sha256: 6ab4e9c8295eeeaa5bbc836893ca3baa36469b8693e7e6c98c7380f810883bc3

Contents?: true

Size: 1.71 KB

Versions: 7

Compression:

Stored size: 1.71 KB

Contents

# encoding: utf-8
require "logstash/inputs/base"
require "logstash/namespace"
require "socket"


# Collect data from WMI query
#
# This is useful for collecting performance metrics and other data
# which is accessible via WMI on a Windows host
#
# Example:
# [source,ruby]
#     input {
#       wmi {
#         query => "select * from Win32_Process"
#         interval => 10
#       }
#       wmi {
#         query => "select PercentProcessorTime from Win32_PerfFormattedData_PerfOS_Processor where name = '_Total'"
#       }
#     }
class LogStash::Inputs::WMI < LogStash::Inputs::Base

  config_name "wmi"

  # WMI query
  config :query, :validate => :string, :required => true
  # Polling interval
  config :interval, :validate => :number, :default => 10
  
  public
  def register

    @host = Socket.gethostname
    @logger.info("Registering wmi input", :query => @query)

    if RUBY_PLATFORM == "java"
      require "jruby-win32ole"
    else
      require "win32ole"
    end
  end # def register

  public
  def run(queue)
    @wmi = WIN32OLE.connect("winmgmts://")
    
    begin
      @logger.debug("Executing WMI query '#{@query}'")
      loop do
        @wmi.ExecQuery(@query).each do |wmiobj|
          # create a single event for all properties in the collection
          event = LogStash::Event.new
          event["host"] = @host
          decorate(event)
          wmiobj.Properties_.each do |prop|
            event[prop.name] = prop.value
          end
          queue << event
        end
        sleep @interval
      end # loop
    rescue Exception => ex
      @logger.error("WMI query error: #{ex}\n#{ex.backtrace}")
      sleep @interval
      retry
    end # begin/rescue
  end # def run
end # class LogStash::Inputs::WMI

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
logstash-input-wmi-2.0.4-java lib/logstash/inputs/wmi.rb
logstash-input-wmi-2.0.2-java lib/logstash/inputs/wmi.rb
logstash-input-wmi-2.0.1-java lib/logstash/inputs/wmi.rb
logstash-input-wmi-0.1.5-java lib/logstash/inputs/wmi.rb
logstash-input-wmi-0.1.4-java lib/logstash/inputs/wmi.rb
logstash-input-wmi-0.1.3-java lib/logstash/inputs/wmi.rb
logstash-input-wmi-0.1.2-java lib/logstash/inputs/wmi.rb