Sha256: ebc9410acd5c7976892912d0730cdd092aa079eb8e3c86a49cc01f1c66690279

Contents?: true

Size: 1.09 KB

Versions: 1

Compression:

Stored size: 1.09 KB

Contents

require 'fluent/input'
require 'fluent/mixin/config_placeholders'

class Fluent::PingMessageInput < Fluent::Input
  Fluent::Plugin.register_input('ping_message', self)

  # Define `log` method for v0.10.42 or earlier
  unless method_defined?(:log)
    define_method("log") { $log }
  end

  include Fluent::Mixin::ConfigPlaceholders

  config_param :tag, :string, :default => 'ping'
  config_param :interval, :integer, :default => 60
  config_param :data, :string, :default => `hostname`.chomp

  # Define `router` method of v0.12 to support v0.10.57 or earlier
  unless method_defined?(:router)
    define_method("router") { Fluent::Engine }
  end

  def start
    super
    start_pingloop
  end

  def shutdown
    super
    @loop.terminate
    @loop.join
  end

  def start_pingloop
    @loop = Thread.new(&method(:pingloop))
  end

  def pingloop
    @last_checked = Fluent::Engine.now
    loop do
      sleep 0.5
      if Fluent::Engine.now - @last_checked >= @interval
        @last_checked = Fluent::Engine.now
        router.emit(@tag, Fluent::Engine.now, {'data' => @data})
      end
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fluent-plugin-ping-message-0.2.1 lib/fluent/plugin/in_ping_message.rb