class Fluent::FalconOutput
Public Class Methods
new()
click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_falcon.rb, line 4 def initialize super require 'net/http/persistent' require 'uri' require 'yajl' end
Public Instance Methods
configure(conf)
click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_falcon.rb, line 30 def configure(conf) super @auth = case @authentication when 'basic' then :basic else :none end end
create_request(tag, time, record)
click to toggle source
# File lib/fluent/plugin/out_falcon.rb, line 64 def create_request(tag, time, record) url = format_url(tag, time, record) uri = URI.parse(url) req = Net::HTTP::Post.new(uri.path) set_body(req, tag, time, record) set_header(req, tag, time, record) return req, uri end
emit(tag, es, chain)
click to toggle source
# File lib/fluent/plugin/out_falcon.rb, line 111 def emit(tag, es, chain) es.each do |time, record| handle_record(tag, time, record) end chain.next end
format_url(tag, time, record)
click to toggle source
# File lib/fluent/plugin/out_falcon.rb, line 50 def format_url(tag, time, record) @endpoint_url end
handle_record(tag, time, record)
click to toggle source
# File lib/fluent/plugin/out_falcon.rb, line 104 def handle_record(tag, time, record) if @match_tag == nil || @match_tag == tag req, uri = create_request(tag, time, record) send_request(req, uri) end end
send_request(req, uri)
click to toggle source
# File lib/fluent/plugin/out_falcon.rb, line 73 def send_request(req, uri) is_rate_limited = (@rate_limit_msec != 0 and not @last_request_time.nil?) if is_rate_limited and ((Time.now.to_f - @last_request_time) * 1000.0 < @rate_limit_msec) #$log.info('Dropped request due to rate limiting') return end res = nil begin if @auth and @auth == :basic req.basic_auth(@username, @password) end @last_request_time = Time.now.to_f res = @http.request uri, req rescue => e # rescue all StandardErrors # server didn't respond $log.warn "Net::HTTP::Post raises exception: #{e.class}, '#{e.message}'" raise e if @raise_on_error else unless res and res.is_a?(Net::HTTPSuccess) res_summary = if res "#{res.code} #{res.message} #{res.body}" else "res=nil" end $log.warn "failed to #{req.method} #{uri} (#{res_summary})" end #end unless end # end begin end
set_body(req, tag, time, record)
click to toggle source
# File lib/fluent/plugin/out_falcon.rb, line 54 def set_body(req, tag, time, record) req.body = Yajl.dump(eval(@records)) req['Content-Type'] = 'application/json' req end
set_header(req, tag, time, record)
click to toggle source
# File lib/fluent/plugin/out_falcon.rb, line 60 def set_header(req, tag, time, record) req end
shutdown()
click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_falcon.rb, line 45 def shutdown @http.shutdown super end
start()
click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_falcon.rb, line 40 def start @http = Net::HTTP::Persistent.new super end