Fluent::Mixin::ConfigPlaceholders

Fluent::Mixin::ConfigPlaceHolders provide some placeholders to fluentd plugins that includes this mix-in. Placeholders below are expanded in 'super' of including plugin's #configure method.

Placeholder patterns are ${..} and __XXX__. With optional setting in plugin code, %{...} is available.

Available placeholders are:

  • hostname (${hostname}, %{hostname} or __HOSTNAME__)
    • you can specify hostname string explicitly on 'hostname' parameter
  • random uuid (${uuid}, ${uuid:random}, %{uuid}, %{uuid:random}, __UUID__ or __UUID_RANDOM__)
  • hostname string based uuid (${uuid:hostname}, %{uuid:hostname} or __UUID_HOSTNAME__)
  • timestamp based uuid (${uuid:timestamp} %{uuid:timestamp} or __UUID_TIMESTAMP__)

Usage

In plugin (both of input and output), just include mixin.

class FooInput < Fluent::Input
  Fluent::Plugin.register_input('foo', self)

  config_param :tag, :string
  
  include Fluent::Mixin::ConfigPlaceholders

  def configure(conf)
    super # MUST call 'super' at first!
    
    @tag #=> here, you can get string replaced '${hostname}' into actual hostname
  end
  
  # ...
end

You can use this feature for tags for each fluentd node, paths for remote storage services like /root/${hostname}/access_log or non-race-condition paths like /files/${uuid:random}.

Plugin setting

Plugin can determine which placeholders are enabled in their configurations, like this:

class FooInput < Fluent::Input
  # ....
  
  # instance method #placeholders should return array of symbols
  
  def placeholders
    [:dollar, :percent, :underscore]
  end
  
  # default is [:dollar, :underscore]
  
  include Fluent::Mixin::ConfigPlaceholders
  
  # ....
end

AUTHORS

LICENSE

  • Copyright: Copyright (c) 2012- tagomoris
  • License: Apache License, Version 2.0