Pagerduty Notifications not being Delivered

Incident Report for Datadog US1

Postmortem

Summary

A latent bug in the notification pipeline caused certain classes of notifications (Pagerduty, Opsgenie and Flowdock) to be skipped or delayed at the beginning of the incident. The normal sets of pre- and post-flight checks that precede and follow deploys failed to catch the issue immediately. Our monitoring of notification traffic had quality issues, leading to a much longer-than-usual time-to-detection. As soon as we identified the issue we replayed the most recent notifications. Incident notifications are an essential part of monitoring; we are sorry for the inconvenience caused by this incident.

Timeline (UTC)

  • 19:13 Incident starts when new code is deployed. Failures don’t accrue until certain processes are recycled, exhibiting the error that causes notifications to be skipped.
  • 21:10 We detect the issue and declare a public outage.
  • 21:27 We deploy a fix and notifications resume.
  • 21:50 We decide to replay recent notifications, discarding older ones to avoid a flood of outdated pages.
  • 21:50 We resolve the the outage.

Why did it happen?

We attribute the cause of this incident to the conflation of several issues: One of the updates published that day contained a circular import, triggered in certain conditions, that were not triggered during our automated tests and pre-flight checks. The error required a rolling restart of a number of processes. It happened too long after the updated code was rolled out and gave us a false sense of confidence about the quality of this particular update. Our notification monitors surveyed traffic only at an aggregate level instead of that and also by class of notifications.

How do we prevent it in the future?

We have revamped and improved the quality of our notification monitoring: more granular notification monitors. We’ve also updating the deploy logic to ensure a timely rolling restart of the particular processes that failed this time. Lastly, during post-incident discussions with some of you, you asked us about the decision tree to discard/replay outdated notifications. During the incident we came up with a cut-off point prior to which we did not replay outdated notifications. In hindsight, given the duration of the incident, the better decision may have been to replay all. We are revisiting this (extending the cut-off to 4h) to have clearer rules to follow internally during an incident.

Posted Oct 19, 2016 - 13:23 EDT

Resolved

We've identified and resolved the issue, which affected delivery of notifications via PagerDuty, VictorOps and Flowdock. We will be replaying the failed notifications that happened after 20:45 UTC. If you have any questions or concerns please reach out to help@datadoghq.com.
Posted Oct 11, 2016 - 17:50 EDT

Monitoring

A fix has been implemented and we are monitoring the results.
Posted Oct 11, 2016 - 17:28 EDT

Identified

The issue has been identified and a fix is being implemented.
Posted Oct 11, 2016 - 17:28 EDT

Investigating

We're currently experiencing problems sending alerts via PagerDuty. The failures started occurring at approximately 19:20 UTC and we are investigating the cause.
Posted Oct 11, 2016 - 17:16 EDT