Airbrake Integration

Airbrake is an error and exception tracking service. Airbrake provides detailed reports and alerts for many programming languages. Opsgenie’s Airbrake Integration forwards Airbrake Incidents to Opsgenie and routes notifications to the right people at the right time.

What does Opsgenie offer Airbrake users?

Use Opsgenie’s Airbrake Integration to forward Airbrake incidents to Opsgenie. Opsgenie determines the right people to notify based on on-call schedules– notifies via email, text messages (SMS), phone calls, iOS & Android push notifications, and escalates alerts until the alert is acknowledged or closed.

Functionality of the integration

When an error (incident) is captured in Airbrake, an alert is created in Opsgenie.

Add Airbrake Integration in Opsgenie

  1. Please create an Opsgenie account if you haven't done so already.
  2. Go to Opsgenie's Airbrake Integration page.

For Free and Essentials plans, you can only add the integrations from the Team Dashboards, please use the alternative instructions given below to add this integration.

  1. Specify who is notified of Airbrake alerts using the Teams field. Autocomplete suggestions are provided as you type.

An alternative for Step 2) and Step 3) is to add the integration from the Team Dashboard of the team which will own the integration. To add an integration directly to a team, navigate to the Team Dashboard and open Integrations tab. Click Add Integration and select the integration that you would like to add.

  1. Copy the integration URL which includes Opsgenie endpoint as well as the API key.
  2. Click Save Integration.

Configuration in Airbrake

  1. In Airbrake, go to "Integrations" from your project's page.
  2. Select Webhook.
  3. Populate the webhook URL field with the integration URL copied previously while saving the integration.
  4. Click Save.
  5. Alert properties are configured from Airbrake Integration / Advanced Settings page.
  6. ​All set! Now manage your Airbrake alerts at Opsgenie and leverage its full alerting functionality.

Sample Webhook Message from Opsgenie Airbrake

{
  "error": {
    "id": 37463546,
    "error_message": "RuntimeError: You threw an exception for testing",
    "error_class": "RuntimeError",
    "file": "[PROJECT_ROOT]/app/controllers/pages_controller.rb",
    "line_number": 35,
    "project": {
      "id": 1055,
      "name": "AirbrakeProject"
    },
    "last_notice": {
      "id": 4505303522,
      "request_method": "metot",
      "request_url": "http://airbrake.io:445/pages/exception_test",
      "backtrace": [
        "[PROJECT_ROOT]/app/controllers/pages_controller.rb:35:in `exception_tester'",
        "[PROJECT_ROOT]/app/middleware/conditional_heroku_nav.rb:19:in `_call'",
        "[PROJECT_ROOT]/app/middleware/conditional_heroku_nav.rb:11:in `call_without_newrelic'"
      ]
    },
    "environment": "production",
    "first_occurred_at": "2012-02-23T22:03:03Z",
    "last_occurred_at": "2012-03-21T08:37:15Z",
    "times_occurred": 118
  }
}

This payload is parsed by Opsgenie as:

{
  "error_id": 37463546,
  "error_message": "RuntimeError: You threw an exception for testing",
  "file": "[PROJECT_ROOT]/app/controllers/pages_controller.rb",
  "line_number": 35,
  "project_id": 1055,
  "project_name": "AirbrakeProject",
  "environment": "production",
  "first_occurred_at": "2012-02-23T22:03:03Z",
  "last_occurred_at": "2012-03-21T08:37:15Z",
  "times_occurred": 118,
  "last_notice_request_method": "metot",
  "last_notice_request_url": "http://airbrake.io:445/pages/exception_test",
  "last_notice_backtrace": [
    "[PROJECT_ROOT]/app/controllers/pages_controller.rb:35:in `exception_tester'",
    "[PROJECT_ROOT]/app/middleware/conditional_heroku_nav.rb:19:in `_call'",
    "[PROJECT_ROOT]/app/middleware/conditional_heroku_nav.rb:11:in `call_without_newrelic'"
  ]
}

Sample alert