Class: LogStash::Inputs::Beats::EventTransformCommon

Inherits:
Object
  • Object
show all
Defined in:
lib/logstash/inputs/beats/event_transform_common.rb

Overview

Base Transform class, expose the plugin decorate method, apply the tags and make sure we copy the beat hostname into ‘host` for backward compatibility.

Direct Known Subclasses

DecodedEventTransform, RawEventTransform

Instance Method Summary collapse

Constructor Details

#initialize(input) ⇒ EventTransformCommon

Returns a new instance of EventTransformCommon.



7
8
9
10
# File 'lib/logstash/inputs/beats/event_transform_common.rb', line 7

def initialize(input)
  @input = input
  @logger = input.logger
end

Instance Method Details

#codec_nameObject



34
35
36
37
38
39
40
# File 'lib/logstash/inputs/beats/event_transform_common.rb', line 34

def codec_name
  @codec_name ||= if @input.codec.respond_to?(:base_codec)
                    @input.codec.base_codec.class.config_name
                  else
                    @input.codec.class.config_name
                  end
end

#copy_beat_hostname(event) ⇒ Object

Copies the beat.hostname field into the host field unless the host field is already defined



14
15
16
17
18
19
20
# File 'lib/logstash/inputs/beats/event_transform_common.rb', line 14

def copy_beat_hostname(event)
  host = event.get("[beat][hostname]")

  if host && event.get("host").nil?
    event.set("host", host)
  end
end

#decorate(event) ⇒ Object

This break the ‘#decorate` method visibility of the plugin base class, the method is protected and we cannot access it, but well ruby can let you do all the wrong thing.

I think the correct behavior would be to allow the plugin to return a ‘Decorator` object that we can pass to other objects, since only the plugin know the data used to decorate. This would allow a more component based workflow.



30
31
32
# File 'lib/logstash/inputs/beats/event_transform_common.rb', line 30

def decorate(event)
  @input.send(:decorate, event)
end

#include_codec_tag?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/logstash/inputs/beats/event_transform_common.rb', line 48

def include_codec_tag?
  @input.include_codec_tag
end

#transform(event) ⇒ Object



42
43
44
45
46
# File 'lib/logstash/inputs/beats/event_transform_common.rb', line 42

def transform(event)
  copy_beat_hostname(event)
  decorate(event)
  event
end