> ## Documentation Index
> Fetch the complete documentation index at: https://launchdarkly.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Dungeons & Downtimes: XP gained from our adventure

export const BlogAuthor = ({date, avatar, alt, name}) => {
  return <div className="-mb-4">
      <p className="m-0 text-base font-semibold">
        <em>Published {date}</em>
      </p>
      <div className="flex items-center -mt-4">
        {avatar && <img src={avatar} alt={alt} className="h-8 w-8 rounded-full m-0" />}
        <p className="ml-[5px] text-lg">{name}</p>
      </div>
    </div>;
};

<View title="Developer" />

<View title="Federal docs" />

<View title="EU docs" />

<BlogAuthor date="October 16th, 2025" avatar="/images/authors/will-chieng.png" alt="Portrait of Will Chieng." name="by Will Chieng, LaunchDarkly Engineer" />

> \*It was a peaceful Friday night / Saturday morning. Your laptop long tucked away in your bag, and you \[probably, hopefully] tucked away in bed. It is currently 3 AM local time - yes, even for you folks on the East Coast, somehow.
>
> Your phone starts ringing. Will you actually wake up? Roll for initiative.\*

<Success>
  TL;DR: Play this with your team! Discover gaps as you role-play through the scenario, and then have a follow-up session to address questions in-depth.

  * Double-check your Pagerduty setup
  * Go through how to debug issues
  * Have fun!
</Success>

## Rolling dice

For most of us on the Metrics team, this was the first time we were on-call after hours at LaunchDarkly. Some of us are frontend engineers and haven’t debugged backend issues before, and some of us are backend engineers that haven’t debugged frontend issues before. So to prepare ourselves, we role-played a mock incident in the style of Dungeons and Dragons tabletop.

<Frame caption="I can never remember how to roll initiative.">
  <img src="https://mintcdn.com/launchdarkly/ppwc2LYsjE8wwIC_/images/blog/dungeons-downtimes/d20.jpeg?fit=max&auto=format&n=ppwc2LYsjE8wwIC_&q=85&s=d0530b4dd8528c3b242a8b4a1556acda" alt="Photo of D4s, D6s, D8s, D20s in various shades of green in a fancy brown box, next to a soft looking emerald bag." width="4032" height="3024" data-path="images/blog/dungeons-downtimes/d20.jpeg" />
</Frame>

## The players

### Primary On-Call

* Anthony
* Hakan
* Zakk \* *See below for the twist*

### Secondary On-Call

* Baslyos
* Liz

### Incident Manager:

* Tiffany

### Dungeon Master:

* Will

## Playing the Game

The scenario starts off with everyone sleeping…

> *It was a peaceful Friday night / Saturday morning. Your laptop long tucked away in your bag, and you \[probably, hopefully] tucked away in bed. It is currently 3 AM local time - yes, even for you folks on the east coast, somehow.*
>
> *Your phone starts ringing. Will you actually wake up? Roll for initiative.*

As primary on-call, Anthony, Hakan, and Zakk rolled a 20-sided dice (d20) to see if they passed a perception check - if they actually woke up and noticed their phone ringing.

<Frame caption="There's a Slack plugin for everything these days.">
  <img src="https://mintcdn.com/launchdarkly/ppwc2LYsjE8wwIC_/images/blog/dungeons-downtimes/dungeons-and-slacking.png?fit=max&auto=format&n=ppwc2LYsjE8wwIC_&q=85&s=ffed6d0ff81ebd032130acbd89936aeb" alt="Screenshot of a private Slack channel titled #temp-dungeons-and-downtimes-metrics-20250821. Team member Anthony has sent a message to &#x22;/roll 1d20&#x22; from a D&D dice roller Slack app, and received a 13." width="1558" height="524" data-path="images/blog/dungeons-downtimes/dungeons-and-slacking.png" />
</Frame>

Because they passed the check, I asked them to put their phones on Do-Not-Disturb mode, and actually paged them to double check that everyone had PagerDuty set up correctly:

<Note>Follow-up item: We discovered that some of our PagerDuty settings weren’t set up to bypass Do-Not-Disturb mode, and did not actually alert.</Note>

## Evil stirs in the night…

While Anthony and Hakan were debugging, Zakk had other plans.

For you see, he did not share the same goals as the others.

> Unlike the others, Zakk, you’re already awake, sitting in the darkness when your phone lights up. As you look up in the mirror, you see a devilish reflection grinning back at you. You hear a voice like your own:
>
> “This is your chance to shine. Sabotage the others, be the hero, and take the glory of saving Metrics for yourself. Or better yet, watch the world burn.”
>
> Do you resist the dark urge or do you embrace it?

(Spoiler alert: he wholeheartedly embraced the darkness and became the antagonist)

Zakk‘s first order of business was to impose a *consequence* on the team: GitHub is down and there’s a chance it won’t actually load.

## Investigating…

Anthony looks at the alert message:

> `Triggered: success rate SLO Burn Rate Alert. For the 7-day target, burn rates of 14.65 and 37.04 were measured for the past 4h (long window) and 20m (short window), respectively. Burn Rate has exceeded for metrics success rate & requests were 5xx in last 4h. Error budget rate has exceeded 5% of the 7-day error budget which will lead to violation of success rate SLO. Notified @slack-ops-metrics`

And noted this follow-up item:

<Note>Follow-up: What should I know about burn rates and how are they calculated?</Note>

He then looked for a Metrics dashboard, and discovered that there are multiple unrelated ones!

<Frame caption="6 / 58 dashboards matching the query 'metrics.'">
  <img src="https://mintcdn.com/launchdarkly/ppwc2LYsjE8wwIC_/images/blog/dungeons-downtimes/dungeons-and-dashboards.png?fit=max&auto=format&n=ppwc2LYsjE8wwIC_&q=85&s=dc54a5cce6a3ceb769b12817b9cd588e" alt="Screenshot of 6 / 58 dashboards matching the query 'metrics." width="505" height="393" data-path="images/blog/dungeons-downtimes/dungeons-and-dashboards.png" />
</Frame>

<Note>Follow-up: Which dashboards should I be looking at?</Note>

Anthony and Hakan took turns going through the traces:

<Frame caption="Roll 500 for Internal Server Error.'">
  <img src="https://mintcdn.com/launchdarkly/ppwc2LYsjE8wwIC_/images/blog/dungeons-downtimes/dungeons-and-metrics.png?fit=max&auto=format&n=ppwc2LYsjE8wwIC_&q=85&s=cc2f57cabc5569519cef893cb6f8dc9b" alt="Screenshot of server logs displaying 9 errors to GET/internal/projects/projkey/metrics URLs." width="573" height="300" data-path="images/blog/dungeons-downtimes/dungeons-and-metrics.png" />
</Frame>

And discovered an error message:

`"Failed to query Athena"`

Anthony then wanted to check up on Athena, but was met with a screen that suggested we didn’t have even have Athena access:

<Frame caption="Athena? Is that an evil cleric?">
  <img src="https://mintcdn.com/launchdarkly/ppwc2LYsjE8wwIC_/images/blog/dungeons-downtimes/aws-athena.png?fit=max&auto=format&n=ppwc2LYsjE8wwIC_&q=85&s=0628a99502d82f9f8a1c54742a7d5177" alt="Screenshot of AWS Athena login page that promises 'start querying data instantly.' Seems like that should require at least casting a spell." width="3236" height="1394" data-path="images/blog/dungeons-downtimes/aws-athena.png" />
</Frame>

<Note>Follow-up: How do I health-check Athena?</Note>

Hakan then checked our Airflow DAGs, and found that the DAGs were fine.

## Deception

Zakk attempts to throw everyone off the scene and mislead everyone into looking at recent deploys instead of investigating the error message further.

<Frame caption="Zakk rolls a d20 and gets 18. Anthony rolls a d20 and gets a 14.">
  <img src="https://mintcdn.com/launchdarkly/ppwc2LYsjE8wwIC_/images/blog/dungeons-downtimes/dungeons-and-deception.png?fit=max&auto=format&n=ppwc2LYsjE8wwIC_&q=85&s=c21138576c63db5245ceeb155f3178a1" alt="Screenshot of Slack dice roller plugin thingy." width="868" height="742" data-path="images/blog/dungeons-downtimes/dungeons-and-deception.png" />
</Frame>

And we fell victim to his silver tongue!

With that, the heroes turned their attention to looking at recent deploys… before realizing they needed to find out which repository / service to look at. Something to follow up on. 😄

## The Cavalry Arrives

The secondary on-call is paged! Liz successfully wakes up and responds to the page, but Baslyos unfortunately rolls too low (3/20), and continues peacefully sleeping away. 🛌💤

## Learning Datadog: Trace Explorer

<Success>Liz demonstrated how to use trace explorer to determine whether it’s all coming from one endpoint, and whether it was affecting one or many customers.</Success>

And it was indeed one specific customer that was unable to load metric event activity!

## Declare an incident?

Role-playing as characters in the scenario, the team debated whether to declare an incident. Zakk pointed out our policy is to declare an incident if there is any doubt, so we declared an incident.

<Success>We learned how to start an incident via Slack.</Success>

Tiffany arrives as incident manager:

<Frame caption="Everything involving Metrics is on fire? Uh oh.">
  <img src="https://mintcdn.com/launchdarkly/ppwc2LYsjE8wwIC_/images/blog/dungeons-downtimes/incident-manager.png?fit=max&auto=format&n=ppwc2LYsjE8wwIC_&q=85&s=fcf55ae5fe349d123145dddefb93c9a3" alt="Screenshot from Slack: INCIDENT CHANNEL. Tiffany being a boss and making the  definitive decision to declare an incident because everything involving metrics is on fire." width="1445" height="617" data-path="images/blog/dungeons-downtimes/incident-manager.png" />
</Frame>

The team discussed the severity and the next steps, and the incident ends.

Fin.

## Following Up

We found that going through the Dungeons and Downtimes scenario was great for discovering issues, gaps, and questions, so Liz suggested a follow-up session where we dive in-depth on those specific questions.

<Note>Liz also noted that the endpoint we were investigating *does not have any alerts configured yet*, so we’re going to add those.</Note>

## Recommendations

I hope you enjoyed reading this lengthy post about our adventures in Dungeons and Downtimes! We encourage you to run similar scenarios for your teams, and to follow up on any questions unearthed. The scenario had branched off in a different direction than what I originally prepared for (which is actually awesome - that makes it more interesting!).

## Thank You

This session would not have gone as smoothly or as fun without the players:

* Anthony and Hakan for discovering all the gaps and calling them out.

* Baslyos for explaining our process and for showing us what happens if we decline a page.

* Liz for teaching us how to page people, how to debug an issue using trace explorer, and pushing for a follow-up session to address questions in-depth.

* Tiffany for the valuable feedback throughout the process, recording questions and screenshots, the Slack emoji, and encouraging people to share their screen while debugging.

* Zakk for being a creative and entertaining villain. You gave us the most laughs!
