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