Class: LogStash::Inputs::Heartbeat

Inherits:
Threadable
  • Object
show all
Includes:
PluginMixins::DeprecationLoggerSupport, PluginMixins::EventSupport::EventFactoryAdapter
Defined in:
lib/logstash/inputs/heartbeat.rb

Overview

Generate heartbeat messages.

The general intention of this is to test the performance and availability of Logstash.

Instance Method Summary collapse

Instance Method Details

#generate_message(sequence_count) ⇒ Object



94
95
96
97
98
99
100
101
102
103
104
105
106
107
# 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

#registerObject



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# 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) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# 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