class LogStash::Outputs::PagerDuty

The PagerDuty output will send notifications based on pre-configured services and escalation policies. Logstash can send “trigger”, “acknowledge” and “resolve” event types. In addition, you may configure custom descriptions and event details. The only required field is the PagerDuty “Service API Key”, which can be found on the service's web page on pagerduty.com. In the default case, the description and event details will be populated by Logstash, using `message`, `timestamp` and `host` data.

Public Instance Methods

receive(event) click to toggle source
# File lib/logstash/outputs/pagerduty.rb, line 50
def receive(event)
  

  pd_event = Hash.new
  pd_event[:service_key] = event.sprintf(@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.debug("PD Event", :event => pd_event)
  begin
    request = Net::HTTP::Post.new(@pd_uri.path)
    request.body = LogStash::Json.dump(pd_event)
    @logger.debug("PD Request", :request => request.inspect)
    response = @client.request(request)
    @logger.debug("PD Response", :response => response.body)
  rescue Exception => e
    @logger.error("PD Unhandled exception", :pd_error => e.backtrace)
  end
end
register() click to toggle source
# File lib/logstash/outputs/pagerduty.rb, line 36
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