StatusPage.io Integration Guide

 

StatusPage.io integrates with PagerDuty by parsing the webhooks that are sent when PagerDuty incidents are triggered, acknowledged, resolved, or otherwise updated.

If you do not already have an account with statuspage.io, you can sign up here. General features of the integration include:

  • Ability to degrade one or more components when a PagerDuty incident is triggered
  • Ability to create a StatusPage.io incident from an Incident Template when a PagerDuty incident is triggered
  • Ability to wait for an Acknowledge signal from PagerDuty before creating the incident within StatusPage.io
  • Ability to update/resolve the StatusPage.io incident as the PagerDuty incident is updated/resolved – with support for different Incident Templates for each.
  • Ability to coalesce many concurrent PagerDuty incidents into a single StatusPage.io incident
  • Ability to ignore any PagerDuty incidents during an active StatusPage.io scheduled maintenance period

Table of Contents:

In PagerDuty

  1. From the Configuration menu, select API Access.
    apiaccess-0
  2. On your API Access page, click the +Create New API Key button.apiaccess-1
  3. In the dialog that pops up, you’ll be prompted to enter a Description for your key, and choose the v2 Current API Version. Make sure you are creating a full access key; by leaving the Read-only API Key box unchecked. (Read-only Key will not work).
  4. Once you have filled in your options, click Create Key.
  5. Once you click Create Key, you will see a dialog displaying your key and confirming the options you filled in on the previous step. Make sure to copy this key into any application that needs it now, as you will not have access to the key after this step. If you lose a key that you created previously and need access to it again, you should remove the key and create a new one. Click Close once you have successfully copied your key.

In StatusPage.io

  1. Click on the Add-ons Store link and enable the PagerDuty Add-on.
    enable_pagerduty_addon
  2. Once enabled, you’ll need to input your PagerDuty subdomain and an API access key that you created earlier in this guide.
    Enter your PagerDuty account information.
  3. A list of all of your PagerDuty services will be displayed.  For each service that you want to use to update your status page, click on Add Rules.
    Select which services to tie into your status page.
  4. If you wish, you can set up a few Incident Templates that will be used to automatically open up incidents on your page when a PagerDuty incident webhook is received on our end.You can even embed data from the webhook directly into the incident title or the message body! See below for more information.
    Configure your incident template
  5. Once you’re done setting up the optional Incident Templates, it’s time to link up your PagerDuty services with a few rules that will translate into StatusPage.io actions. This can include degrading components, and opening/updating/resolving incidents. See below for a few sample configurations.
    Configure how your status page will update from your PagerDuty service.
    Configure how your status page will update from your PagerDuty service.
  6. Automation Rules will depend heavily on how you use your status page. See below for more notes on common configurations.
    Configure your automation rules.

Public-facing Status Pages

For public facing status pages, you may want to err on the conservative side of communication, only ever allowing a single PagerDuty-related incident to be open at a time, and only after it has been acknowledged and confirmed as a real issue.

Private Status Pages

Private status page users may be more interested in getting their PagerDuty stream included in the incident workflow, and want to include updates for actions like escalations, reassignments, acknowledges, etc. Different incident templates can be configured for the different stages in the incident lifecycle, and can be configured to embed data from the webhook directly into the message update body.

Embedding PagerDuty Webhook Information

Starting with this integration, we’ve upgraded our Incident Templates to support the Mustache templating syntax, and the optional usage of PagerDuty webhook information directly in the incident name and message body.

The sample data below represents the level of data we make available to you under the pagerduty top-level key.

"incident": {  "id": "PIJ90N7",  "incident_number": 1,  "created_on": "2013-07-09T20:25:44Z",  "status": "triggered",  "html_url": "https://acme.pagerduty.com/incidents/PIJ90N7",  "incident_key": "null",  "service": {    "id": "PBAZLIU",    "name": "service",    "html_url": "https://acme.pagerduty.com/services/PBAZLIU"  },  "assigned_to_user": {    "id": "PPI9KUT",    "name": "Alan Kay",    "email": "alan@pagerduty.com",    "html_url": "https://acme.pagerduty.com/users/PPI9KUT"  },  "trigger_summary_data": {    "subject": "45645"  },  "trigger_details_html_url": "https://acme.pagerduty.com/incidents/PIJ90N7/log_entries/PIJ90N7",  "last_status_change_on": "2013-07-09T20:25:44Z",  "last_status_change_by": "null"}

For example, to inject the email of the user assigned to the incident, you would use {{pagerduty.incident.assigned_to_user.email}} in the Incident Template.

Seeing it in action

Below is a full scenario for a public facing status page – multiple services, multiple incidents, component downgrades, and and an incident opening up.

GET THE ACCOUNT LINKED UP, AND AUTOMATION SETTINGS CONFIGURED

View your PagerDuty services that can be tied to your status page.pagerduty-7-automation
CONFIGURE A FEW INCIDENT TEMPLATES TO USE
Update an existing incident template.Create a new incident template to be used to notify followers of your status page.
MAP EACH OF OUR PAGERDUTY SERVICES TO STATUSPAGE.IO
Configure the component rules
Configure the component rules
OUR PRISTINE STATUS PAGE
Status page with no open incidents and all components fully functional

UH OH, EBS TROUBLES AGAIN! THINGS SLOWING DOWN.

You have a PagerDuty alert! Your systems are degraded!

Components degraded, incident created

Incident now created within the status page.

EBS HAS COMPLETELY CHOKED, THOUSANDEYES SAYS WE’RE DOWN

Another PagerDuty alert!Now there are some serious problems.

Notice we didn’t create another incident, and the components were further degraded

The status page has updated the same incident to reflect major outages.

If you run into any problems or have any questions, please let us know at support@pagerduty.com.