class LogStash::Inputs::Heartbeat
Generate heartbeat messages.
The general intention of this is to test the performance and availability of Logstash.
Public Instance Methods
generate_message(sequence_count)
click to toggle source
# File lib/logstash/inputs/heartbeat.rb, line 94 def generate_message(sequence_count) if @sequence_selector == :none evt = event_factory.new_event("message" => @message) evt.set(@field_host, @host) return evt end sequence_value = @sequence_selector == :epoch ? Time.now.to_i : sequence_count evt = event_factory.new_event() evt.set(@field_sequence, sequence_value) evt.set(@field_host, @host) evt.set("message", @message) unless @message.nil? evt end
register()
click to toggle source
# File lib/logstash/inputs/heartbeat.rb, line 59 def register @host = Socket.gethostname @field_sequence = ecs_select[disabled: "clock", v1: "[event][sequence]"] @field_host = ecs_select[disabled: "host", v1: "[host][name]"] if sequence.nil? && ["epoch", "sequence"].include?(message) logger.warn("message contains sequence type specification (epoch|sequence) for this purpose use the sequence option") end if ecs_compatibility == :disabled && @sequence.nil? if %w(epoch sequence).include?(@message) logger.debug("intercepting magic `message` to configure `sequence`: `#{@message}`") @sequence, @message = @message, nil # legacy: intercept magic messages deprecation_logger.deprecated("magic values of `message` to specify sequence type are deprecated; use separate `sequence` option instead.") end end @sequence = "none" if @sequence.nil? @sequence_selector = @sequence.to_sym end
run(queue)
click to toggle source
# File lib/logstash/inputs/heartbeat.rb, line 77 def run(queue) sequence_count = 0 while !stop? start = Time.now sequence_count += 1 event = generate_message(sequence_count) decorate(event) queue << event break if sequence_count == @count || stop? sleep_for = @interval - (Time.now - start) Stud.stoppable_sleep(sleep_for) { stop? } if sleep_for > 0 end end