class LogStash::Outputs::PagerDuty

PagerDuty output Send specific events to PagerDuty for alerting

Public Instance Methods

receive(event) click to toggle source
# File lib/logstash/outputs/pagerduty.rb, line 52
def receive(event)
  return unless output?(event)
 
  pd_event = Hash.new
  pd_event[:service_key] = "#{@service_key}"
  pd_event[:incident_key] = event.sprintf(@incident_key)
  pd_event[:event_type] = "#{@event_type}"
  pd_event[:description] = event.sprintf(@description)
  pd_event[:details] = Hash.new
  @details.each do |key, value|
    @logger.debug("PD Details added:" , key => event.sprintf(value))
    pd_event[:details]["#{key}"] = event.sprintf(value)
  end
  pd_event[:details][:tags] = @tags if @tags

  @logger.info("PD Event", :event => pd_event)
  begin
    request = Net::HTTP::Post.new(@pd_uri.path)
    request.body = pd_event.to_json
    @logger.debug("PD Request", :request => request.inspect)
    response = @client.request(request)
    @logger.debug("PD Response", :response => response.body)

  rescue Exception => e
    @logger.debug("PD Unhandled exception", :pd_error => e.backtrace)
  end
end
register() click to toggle source
# File lib/logstash/outputs/pagerduty.rb, line 38
def register
  require 'net/https'
  require 'uri'
  @pd_uri = URI.parse(@pdurl)
  @client = Net::HTTP.new(@pd_uri.host, @pd_uri.port)
  if @pd_uri.scheme == "https"
    @client.use_ssl = true
    #@client.verify_mode = OpenSSL::SSL::VERIFY_PEER
    # PagerDuty cert doesn't verify oob
    @client.verify_mode = OpenSSL::SSL::VERIFY_NONE
  end
end