File: //opt/microsoft/omsagent/plugin/in_oms_omi.rb
#!/usr/local/bin/ruby
module Fluent
class OMS_OMI_Input < Input
Plugin.register_input('oms_omi', self)
def initialize
super
require_relative 'oms_omi_lib'
end
config_param :object_name, :string
config_param :instance_regex, :string, :default => ".*"
config_param :counter_name_regex, :string, :default => ".*"
config_param :interval, :time, :default => nil
config_param :tag, :string, :default => "oms.omi"
config_param :omi_mapping_path, :string, :default => "/etc/opt/microsoft/omsagent/conf/omsagent.d/omi_mapping.json"
config_param :wlm_enabled, :bool, :default => false
def configure (conf)
super
end
def start
@omi_lib = OmiOms.new(@object_name, @instance_regex, @counter_name_regex, @omi_mapping_path)
if @interval
@finished = false
@condition = ConditionVariable.new
@mutex = Mutex.new
@thread = Thread.new(&method(:run_periodic))
else
enumerate
end
end
def shutdown
if @interval
@mutex.synchronize {
@finished = true
@condition.signal
}
@thread.join
end
@omi_lib.disconnect
end
def enumerate
wrapper = nil
time = Time.now.to_f
if(!@wlm_enabled)
wrapper = @omi_lib.enumerate(time)
else
wrapper = @omi_lib.enumerate(time, "WLM_LINUX_PERF_DATA_BLOB", "InfrastructureInsights", @wlm_enabled)
end
router.emit(@tag, time, wrapper) if wrapper
end
def run_periodic
@mutex.lock
done = @finished
until done
@condition.wait(@mutex, @interval)
done = @finished
@mutex.unlock
if !done
enumerate
end
@mutex.lock
end
@mutex.unlock
end
end # OMS_OMI_Input
end # module