class Fluent::HTTPOutput

Public Class Methods

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

Public Instance Methods

configure(_) click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_alertmanager.rb, line 14
def configure(_)
  super
  @uri = URI.parse(@endpoint_url)
end
create_request(record) click to toggle source
# File lib/fluent/plugin/out_alertmanager.rb, line 27
def create_request(record)
  req = Net::HTTP::Post.new(@uri.path)
  req.body = Yajl.dump([record])
  req['Content-Type'] = 'application/json'
  return req
end
emit(_, es, chain) click to toggle source
# File lib/fluent/plugin/out_alertmanager.rb, line 56
def emit(_, es, chain)
  es.each do |_, record|
    send_alert(record)
  end
  chain.next
end
send_alert(record) click to toggle source
# File lib/fluent/plugin/out_alertmanager.rb, line 52
def send_alert(record)
  send_request(create_request(record))
end
send_request(req) click to toggle source
# File lib/fluent/plugin/out_alertmanager.rb, line 34
def send_request(req)
  res = nil
  begin
    res = Net::HTTP.start(@uri.host, @uri.port) {|http| http.request(req) }
  rescue => e
    $log.error "Net::HTTP::Post raises exception: #{e.class}, '#{e.message}'"
  else
    unless res and res.is_a?(Net::HTTPSuccess)
      res_summary = if res
                      "#{res.code} #{res.message} #{res.body}"
                    else
                      "res=nil"
                    end
      $log.error "failed to #{req.method} #{@uri} (#{res_summary})"
    end
  end
end
shutdown() click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_alertmanager.rb, line 23
def shutdown
  super
end
start() click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_alertmanager.rb, line 19
def start
  super
end