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