Sha256: 3622ac00f0b61419c5ddeb063a12e20e190218b48d0eb289f8c1a7e94b09058a
Contents?: true
Size: 1.83 KB
Versions: 2
Compression:
Stored size: 1.83 KB
Contents
require_relative 'perfmon_proc_getter' # Wraps the typeperf command-line tool, used to get # Windows performance metrics class TypeperfWrapper attr_reader :counters # Initializes the TypeperfWrapper class # [perfmon_proc_getter] Gets the proc for opening the perfmon process and getting messages # [interval] The time between samples, defaults to ten seconds def initialize(perfmon_proc_getter, interval = 10) @interval = interval @perfmon_proc_getter = perfmon_proc_getter @counters = [] @msg_queue = Queue.new end # Adds a counter to the list of counters watched # [counter_name] The path to the counter, such as "\\processor(_total)\\% processor time" def add_counter(counter_name) raise "Perfmon counter '#{counter_name}' could not be found." unless @perfmon_proc_getter.counter_exists?(counter_name) @counters << counter_name.downcase end # Begins monitoring, using the counters in the @counters array # [interval] The time between samples, defaults to ten seconds def start_monitor raise "No perfmon counters defined" if @counters.compact.empty? open_thread_and_do_work() end # Stops monitoring def stop_monitor @perfmon_proc_getter.stop_process end # Gets a value indicating whether the typeperf process is running def alive? @perfmon_proc_getter.proc_is_running? end # Waits until a new message is put onto the queue, then returns it def get_next while alive? && @msg_queue.empty? sleep 0.5 end @msg_queue.pop end #-------------Private methods---------------- private def open_thread_and_do_work Thread.new do @perfmon_proc_getter.start_process(@counters, @interval, @msg_queue) end @perfmon_proc_getter.wait_for_process_to_start end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
logstash-input-perfmon-1.0.0 | lib/logstash/inputs/typeperf_wrapper.rb |
logstash-input-perfmon-0.1.6 | lib/logstash/inputs/typeperf_wrapper.rb |