class LogStash::Inputs::WMI
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:
input { wmi { query => "select * from Win32_Process" interval => 10 } wmi { query => "select PercentProcessorTime from Win32_PerfFormattedData_PerfOS_Processor where name = '_Total'" } }
Public Instance Methods
register()
click to toggle source
# File lib/logstash/inputs/wmi.rb, line 34 def register @host = Socket.gethostname @logger.info("Registering wmi input", :query => @query) if RUBY_PLATFORM == "java" require "jruby-win32ole" else require "win32ole" end end
run(queue)
click to toggle source
# File lib/logstash/inputs/wmi.rb, line 47 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