class Fluent::PagerdutyOutput

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_pagerduty.rb, line 4
def initialize
  require 'pagerduty'
  super
end

Public Instance Methods

call_pagerduty(tag, record) click to toggle source
# File lib/fluent/plugin/out_pagerduty.rb, line 36
def call_pagerduty(tag, record)
  begin
    expander = PlaceholderExpander.new({:log => log})
    tag_parts = tag.split('.')
    placeholder_values = {
      'tag'       => tag,
      'tag_parts' => tag_parts,
      'record'    => record,
    }

    placeholders = expander.prepare_placeholders(placeholder_values)
    
    service_key = record['service_key'] || @service_key
    event_type = record['event_type'] || @event_type
    description = record['description'] || record['message'] || @description
    incident_key = record['incident_key'] || @incident_key
    details = record['details'] || record
    options = {"details" => details}
    
    description = expander.expand(description, placeholders)
    
    if !@incident_key.nil?
      incident_key = expander.expand(incident_key, placeholders)
      api = PagerdutyIncident.new(service_key, incident_key)
    else
      api = Pagerduty.new(service_key)
    end

    incident = api.trigger description, options
  rescue => e
    $log.error "pagerduty: request failed. ", :error_class=>e.class, :error=>e.message
  end
end
configure(conf) click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_pagerduty.rb, line 14
def configure(conf)
  super

  # API requires service key
  if @service_key.nil?
    $log.warn "pagerduty: service_key required."
  end

  # PagerDuty trigger event type requires description, other event types do not
  if @event_type == 'trigger' && @description.nil?
    $log.warn "pagerduty: description required for trigger event_type."
  end
end
emit(tag, es, chain) click to toggle source
# File lib/fluent/plugin/out_pagerduty.rb, line 28
def emit(tag, es, chain)
  es.each do |time,record|
    call_pagerduty(tag, record)
  end

  chain.next
end