class Fluent::Plugin::ArchagentOutput

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_archagent.rb, line 5
def initialize
  super
  require 'net/http'
  require 'uri'
end

Public Instance Methods

configure(conf) click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_archagent.rb, line 15
def configure(conf)
  super

  endpoint_url = 'http://localhost:' + @port
  # Check if endpoint URL is valid
  unless endpoint_url =~ /^#{URI.regexp}$/
    fail Fluent::ConfigError, 'port invalid'
  end

  begin
    @uri = URI.parse(endpoint_url)
  rescue URI::InvalidURIError
    raise Fluent::ConfigError, 'port invalid'
  end
end
connect() click to toggle source
# File lib/fluent/plugin/out_archagent.rb, line 64
def connect
  @http ||= Net::HTTP.start(
    @uri.host,
    @uri.port,
    keep_alive_timeout: 60.0
  )
end
disconnect() click to toggle source
# File lib/fluent/plugin/out_archagent.rb, line 72
def disconnect
  return unless defined?(@http)
  return unless @http
  @http.finish
end
format(tag, time, record) click to toggle source
# File lib/fluent/plugin/out_archagent.rb, line 31
def format(tag, time, record)
  [tag, time, record].to_msgpack
end
shutdown() click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_archagent.rb, line 39
def shutdown
  super

  disconnect
end
start() click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_archagent.rb, line 35
def start
  super
end
write(chunk) click to toggle source
# File lib/fluent/plugin/out_archagent.rb, line 45
def write(chunk)
  log_data = []
  chunk.msgpack_each do |(tag, time, record)|
    record['host'] = (record.has_key? 'host') && record['host'] != nil && record['host'] != "" ? \
        record['host'].to_s : 'unknown'
    record['code'] = (record.has_key? 'code') && record['code'] != nil && record['code'] != "" ? \
        record['code'].to_i : -1
    record['size'] = (record.has_key? 'size') && record['size'] != nil && record['size'] != "" ? \
        record['size'].to_i : -1
    record['latency'] = (record.has_key? 'latency') && record['latency'] != nil && \
        record['latency'] != "" ? record['latency'].to_i : -1
    log_data << record
  end

  log_data_req = create_request(log_data)
  response = connect.request(log_data_req)
  return
end

Protected Instance Methods

create_request(data) click to toggle source
# File lib/fluent/plugin/out_archagent.rb, line 80
def create_request(data)
  request = Net::HTTP::Post.new(@uri.request_uri)

  # Headers
  request['Content-Type'] = 'application/json'

  # Body
  request.body = JSON.dump(data)
  request
end