Class: RailsErrorDashboard::PagerdutyErrorNotificationJob
- Inherits:
-
ApplicationJob
- Object
- ActiveJob::Base
- ApplicationJob
- RailsErrorDashboard::PagerdutyErrorNotificationJob
- Defined in:
- app/jobs/rails_error_dashboard/pagerduty_error_notification_job.rb
Overview
Job to send critical error notifications to PagerDuty Only triggers for critical severity errors
Constant Summary collapse
- PAGERDUTY_EVENTS_API =
"https://events.pagerduty.com/v2/enqueue"
Instance Method Summary collapse
Instance Method Details
#perform(error_log_id) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'app/jobs/rails_error_dashboard/pagerduty_error_notification_job.rb', line 11 def perform(error_log_id) error_log = ErrorLog.find(error_log_id) # Only trigger PagerDuty for critical errors return unless error_log.critical? routing_key = RailsErrorDashboard.configuration.pagerduty_integration_key return unless routing_key.present? payload = Services::PagerdutyPayloadBuilder.call(error_log, routing_key: routing_key) response = post_json(PAGERDUTY_EVENTS_API, payload) unless response_success?(response) Rails.logger.error("[RailsErrorDashboard] PagerDuty API error: #{response_code(response)} - #{response_body(response)}") end rescue StandardError => e Rails.logger.error("[RailsErrorDashboard] Failed to send PagerDuty notification: #{e.}") Rails.logger.error(e.backtrace&.first(5)&.join("\n")) if e.backtrace end |