Class: Fluent::AddInsertIdsFilter

Inherits:
Filter
  • Object
show all
Includes:
selfself::ConfigConstants
Defined in:
lib/fluent/plugin/filter_add_insert_ids.rb

Overview

Fluentd filter plugin for adding insertIds to guarantee log entry order and uniqueness. Sample log entries enriched by this plugin:

"timestamp": "2017-08-22 13:35:28",
"message": "1",
"logging.googleapis.com/insertId": "aye7eakuf23h41aef0"

"timestamp": "2017-08-22 13:35:28",
"message": "2",
"logging.googleapis.com/insertId": "aye7eakuf23h41aef1"

"timestamp": "2017-08-22 13:35:28",
"message": "3",
"logging.googleapis.com/insertId": "aye7eakuf23h41aef2"

Defined Under Namespace

Modules: ConfigConstants

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#insert_id_keyObject (readonly)

Expose attr_readers for testing.



55
56
57
# File 'lib/fluent/plugin/filter_add_insert_ids.rb', line 55

def insert_id_key
  @insert_id_key
end

Instance Method Details

#filter(tag, time, record) ⇒ Object

rubocop:disable Lint/UnusedMethodArgument



69
70
71
72
73
74
# File 'lib/fluent/plugin/filter_add_insert_ids.rb', line 69

def filter(tag, time, record)
  # Only generate and add an insertId field if the record is a hash and
  # the insert ID field is not already set (or set to an empty string).
  record[@insert_id_key] = increment_insert_id if record.is_a?(Hash) && record[@insert_id_key].to_s.empty?
  record
end

#startObject



57
58
59
60
61
62
63
64
65
66
# File 'lib/fluent/plugin/filter_add_insert_ids.rb', line 57

def start
  super
  @log = $log # rubocop:disable Style/GlobalVars

  # Initialize the insertID.
  @log.info "Started the add_insert_ids plugin with #{@insert_id_key}" \
            ' as the insert ID key.'
  @insert_id = generate_initial_insert_id
  @log.info "Initialized the insert ID key to #{@insert_id}."
end