travis.yml, gh-deploy

This commit is contained in:
Marius Pana 2017-01-13 20:18:18 +02:00
parent 09d0992d9d
commit aa1c8cd66b
152 changed files with 4069 additions and 12808 deletions

BIN
.DS_Store vendored

Binary file not shown.

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
site/
*sublime-*
.DS_Store

View File

477
404.html
View File

@ -1,477 +0,0 @@
<!DOCTYPE html>
<!--[if lt IE 7 ]><html class="no-js ie6"><![endif]-->
<!--[if IE 7 ]><html class="no-js ie7"><![endif]-->
<!--[if IE 8 ]><html class="no-js ie8"><![endif]-->
<!--[if IE 9 ]><html class="no-js ie9"><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Spearhead Systems Incident Response Documentation</title>
<!-- Author and License -->
<meta name="author" content="Spearhead Systems, Inc." />
<meta name="dcterms.license" content="http://www.apache.org/licenses/LICENSE-2.0" />
<!-- Page Description -->
<meta name="description" content="A collection of information about the Spearhead Systems incident response process. Not only how to prepare new employees for on-call responsibilities, but also how to handle major incidents, both in preparation and after-work.">
<meta name="keywords" content="spearhead, incident, response" />
<meta name="robots" content="index, follow, noarchive" />
<!-- Mobile -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
<meta name="theme-color" content="#1f293a" />
<!-- Canonical Link -->
<!-- Favicon -->
<link rel="shortcut icon" type="image/x-icon" href="/assets/img/icon.png" />
<link rel="icon" type="image/x-icon" href="/assets/img/icon.png" />
<!-- Apple -->
<meta name="apple-mobile-web-app-title" content="Spearhead Systems Incident Response Documentation" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<link rel="apple-touch-icon" href="/assets/img/icon.png">
<!-- Open Graph -->
<meta property="og:url" content="" />
<meta property="og:title" content="Spearhead Systems Incident Response Documentation" />
<meta property="og:site_name" content="Spearhead Systems Incident Response Documentation" />
<meta property="og:description" content="A collection of information about the Spearhead Systems incident response process. Not only how to prepare new employees for on-call responsibilities, but also how to handle major incidents, both in preparation and after-work." />
<meta property="og:image" content="https://response.spearhead.systems/assets/img/cover.png" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="website" />
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Spearhead Systems Incident Response Documentation" />
<meta name="twitter:description" content="A collection of information about the Spearhead Systems incident response process. Not only how to prepare new employees for on-call responsibilities, but also how to handle major incidents, both in preparation and after-work." />
<meta name="twitter:image" content="https://response.spearhead.systems/assets/img/cover.png" />
<!-- Style -->
<style>
@font-face {
font-family: 'Icon';
src: url('/assets/fonts/icon.eot?52m981');
src: url('/assets/fonts/icon.eot?#iefix52m981')
format('embedded-opentype'),
url('/assets/fonts/icon.woff?52m981')
format('woff'),
url('/assets/fonts/icon.ttf?52m981')
format('truetype'),
url('/assets/fonts/icon.svg?52m981#icon')
format('svg');
font-weight: normal;
font-style: normal;
}
</style>
<link rel="stylesheet" href="/assets/stylesheets/application-a422ff04cc.css">
<link rel="stylesheet" href="/assets/stylesheets/palettes-05ab2406df.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Colfax Regular:400,700|Roboto+Mono">
<style>
body, input {
font-family: 'Colfax Regular', Helvetica, Arial, sans-serif;
}
pre, code {
font-family: 'Roboto Mono', 'Courier New', 'Courier', monospace;
}
</style>
<link rel="stylesheet" href="/assets/css/extra.css">
<!-- Scripts -->
<script src="/assets/javascripts/modernizr-4ab42b99fd.js"></script>
</head>
<body class="palette-primary-green palette-accent-blue-grey">
<div class="backdrop">
<div class="backdrop-paper"></div>
</div>
<input class="toggle" type="checkbox" id="toggle-drawer">
<input class="toggle" type="checkbox" id="toggle-search">
<label class="toggle-button overlay" for="toggle-drawer"></label>
<header class="header">
<nav aria-label="Header">
<div class="bar default">
<div class="button button-menu" role="button" aria-label="Menu">
<label class="toggle-button icon icon-menu" for="toggle-drawer">
<span></span>
</label>
</div>
<div class="stretch">
<div class="mainlogo">
<a href="/" title="Go to homepage.">
<img src="/assets/img/logo.png" title="PagerDuty" />
</a>
</div>
<div class="title">
<span class="">
Incident Response
</span>
</div>
</div>
<div class="button button-twitter" role="button" aria-label="Twitter">
<a href="https://twitter.com/spearhead_sys" title="@spearhead_sys on Twitter" target="_blank" class="toggle-button icon icon-twitter"></a>
</div>
<div class="button button-github" role="button" aria-label="GitHub">
<a href="https://github.com/spearheadsys" title="@spearheadsys on GitHub" target="_blank" class="toggle-button icon icon-github"></a>
</div>
<div class="button button-search" role="button" aria-label="Search">
<label class="toggle-button icon icon-search" title="Search" for="toggle-search"></label>
</div>
</div>
<div class="bar search">
<div class="button button-close" role="button" aria-label="Close">
<label class="toggle-button icon icon-back" for="toggle-search"></label>
</div>
<div class="stretch">
<div class="field">
<input class="query" type="text" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false">
</div>
</div>
<div class="button button-reset" role="button" aria-label="Search">
<button class="toggle-button icon icon-close" id="reset-search"></button>
</div>
</div>
</nav>
</header>
<main class="main">
<div class="drawer">
<nav aria-label="Navigation">
<a href="https://github.com/spearheadsys/issue-response-docs" class="project">
<div class="banner">
<div class="logo">
<img src="/assets/img/icon.png">
</div>
<div class="name">
<strong>
Spearhead Systems Incident Response Documentation
<span class="version">
</span>
</strong>
<br>
spearheadsys/issue-response-docs
</div>
</div>
</a>
<div class="scrollable">
<div class="wrapper">
<ul class="repo">
<li class="repo-download">
<a href="https://github.com/spearheadsys/issue-response-docs/archive/master.zip" target="_blank" title="Download" data-action="download">
<i class="icon icon-download"></i> Download
</a>
</li>
<li class="repo-stars">
<a href="https://github.com/spearheadsys/issue-response-docs/stargazers" target="_blank" title="Stargazers" data-action="star">
<i class="icon icon-star"></i> Stars
<span class="count">&ndash;</span>
</a>
</li>
</ul>
<hr/>
<div class="toc">
<ul>
<li>
<a class="" title="Home" href="">
Home
</a>
</li>
<li>
<span class="section">On-Call</span>
<ul>
<li>
<a class="" title="Being On-Call" href="/oncall/being_oncall">
Being On-Call
</a>
</li>
<li>
<a class="" title="Alerting Principles" href="/oncall/alerting_principles">
Alerting Principles
</a>
</li>
</ul>
</li>
<li>
<span class="section">Before an Incident</span>
<ul>
<li>
<a class="" title="Severity Levels" href="/before/severity_levels">
Severity Levels
</a>
</li>
<li>
<a class="" title="Different Roles" href="/before/different_roles">
Different Roles
</a>
</li>
<li>
<a class="" title="Call Etiquette" href="/before/call_etiquette">
Call Etiquette
</a>
</li>
</ul>
</li>
<li>
<span class="section">During an Incident</span>
<ul>
<li>
<a class="" title="During An Incident" href="/during/during_an_incident">
During An Incident
</a>
</li>
<li>
<a class="" title="Security Incident" href="/during/security_incident_response">
Security Incident
</a>
</li>
</ul>
</li>
<li>
<span class="section">After an Incident</span>
<ul>
<li>
<a class="" title="Post-Mortem Process" href="/after/post_mortem_process">
Post-Mortem Process
</a>
</li>
<li>
<a class="" title="Post-Mortem Template" href="/after/post_mortem_template">
Post-Mortem Template
</a>
</li>
</ul>
</li>
<li>
<span class="section">Training</span>
<ul>
<li>
<a class="" title="Overview" href="/training/overview">
Overview
</a>
</li>
<li>
<a class="" title="Incident Commander" href="/training/incident_commander">
Incident Commander
</a>
</li>
<li>
<a class="" title="Deputy" href="/training/deputy">
Deputy
</a>
</li>
<li>
<a class="" title="Scribe" href="/training/scribe">
Scribe
</a>
</li>
<li>
<a class="" title="Subject Matter Expert" href="/training/subject_matter_expert">
Subject Matter Expert
</a>
</li>
<li>
<a class="" title="Glossary" href="/training/glossary">
Glossary
</a>
</li>
</ul>
</li>
<li>
<a class="" title="About" href="/about">
About
</a>
</li>
</ul>
</div>
</div>
</div>
</nav>
</div>
<article class="article">
<div class="wrapper">
<h1>Spearhead Systems Incident Response Documentation</h1>
<aside class="copyright" role="note">
Copyright &copy; Spearhead Systems, Inc. &ndash;
Documentation built with
<a href="http://www.mkdocs.org" target="_blank">MkDocs</a>
using the
<a href="http://squidfunk.github.io/mkdocs-material/" target="_blank">
Material
</a>
theme.
</aside>
<section id="error">
<h1>Sorry! We couldn't find that page.</h1>
<p>Looks like our well-trained server monkeys dropped the ball. Rest assured they will be dealt with. In the meantime, you probably want to <a href="/">head home</a>.
</section>
<footer class="footer">
<nav class="pagination" aria-label="Footer">
<div class="previous">
</div>
<div class="next">
</div>
</nav>
</footer>
</div>
</article>
<div class="results" role="status" aria-live="polite">
<div class="scrollable">
<div class="wrapper">
<div class="meta"></div>
<div class="list"></div>
</div>
</div>
</div>
</main>
<script>
var base_url = '';
var repo_id = 'spearheadsys/issue-response-docs';
</script>
<script src="/assets/javascripts/application-997097ee0c.js"></script>
</body>
</html>

13
LICENSE Normal file
View File

@ -0,0 +1,13 @@
Copyright 2016 PagerDuty, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

13
_site/LICENSE Normal file
View File

@ -0,0 +1,13 @@
Copyright 2016 PagerDuty, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

36
_site/README.md Normal file
View File

@ -0,0 +1,36 @@
# Spearhead Systems Issue Response Documentation [![Build Status](https://travis-ci.com/PagerDuty/incident-response-docs.svg?token=zdc1SxQUyY3TG9TLD3Xz&branch=master)](https://travis-ci.com/PagerDuty/incident-response-docs)
This is a public version of the Issue Response process used at Spearhead Ststems. It is based on the PagerDuty Incident Response process, modified to fit our specific requirements. It is used to prepare new employees for on-call responsibilities, and provides information not only on preparing for an issue (incident or service request), but also what to do during and after. See the [about page](docs/about.md) for more information on what this documentation is and why it exists.
You can view the documentation [directly](/docs/index.md) in this repository, or rendered as a website at https://response.spearhead.systems.
[![Spearhead Systems Issue Response Documentation](screenshot.png)](https://response.spearhead.systems)
## Development
We use [MkDocs](http://www.mkdocs.org/) to create a static site from this repository. For local development,
1. [Install MkDocs](http://www.mkdocs.org/#installation). `pip install mkdocs`
1. Install the [MkDocs Material theme](https://github.com/squidfunk/mkdocs-material). `pip install mkdocs-material`
1. To test locally, run `mkdocs serve` from the project directory.
## Deploying
1. Run `mkdocs build --clean` to produce the static site for upload.
1. Upload the `site` directory to S3 (or wherever you would like it to be hosted).
aws s3 sync ./site/ s3://[BUCKET_NAME] \
--acl public-read \
--exclude "*.py*" \
--delete
## License
[Apache 2](http://www.apache.org/licenses/LICENSE-2.0) (See [LICENSE](LICENSE) file)
## Contributing
Thank you for considering contributing! If you have any questions, just ask - or submit your issue or pull request anyway. The worst that can happen is we'll politely ask you to change something. We appreciate all friendly contributions.
Here is our preferred process for submitting a pull request,
1. Fork it ( https://github.com/PagerDuty/incident-response-docs/fork )
1. Create your feature branch (`git checkout -b my-new-feature`)
1. Commit your changes (`git commit -am 'Add some feature'`)
1. Push to the branch (`git push origin my-new-feature`)
1. Create a new Pull Request.

31
_site/docs/about.md Normal file
View File

@ -0,0 +1,31 @@
This site documents parts of the Spearhead Systems Issue Response process. It is a cut-down version of our internal documentation, used at Spearhead Systems for any incident or service request, and to prepare new employees for on-call responsibilities. It provides information not only on preparation but also what to do during and after.
Few companies seem to talk about their internal processes for dealing with major incidents. We would like to change that by opening up our documentation to the community, in the hopes that it proves useful to others who may want to formalize their own processes. Additionally, it provides an opportunity for others to suggest improvements, which ends up helping everyone.
This documentation is complementary to what is available in our [existing wiki](https://sphsys.sharepoint.com).
## What is this?
A collection of pages detailing how to efficiently deal with any incident or service request that might arise, along with information on how to go on-call effectively. It provides lessons learned the hard way, along with training material for getting you up to speed quickly.
## Who is this for?
It is intended for on-call practitioners and those involved in an operational incident or service request response process, or those wishing to enact a formal incident response process. Specifically this is for all of our Technical Support staff.
## Why do I need it?
As a service provider Spearhead Systems deals with service requests on a daily basis. The reason we exist is to deliver a service which in most cases boils down to incidents and service requests. We want to deliver a smooth and seamless experience for resolving our customers issues therefore this documentation is a guideline for how we handle these requests. This documentation will allow you give you a head start on how to deal with issues in a way which leads to the fastest possible recovery time.
## What is covered?
Anything from preparing to [go on-call](/oncall/being_oncall.md), definitions of [severities](/before/severity_levels.md), incident [call etiquette](/before/call_etiquette.md), all the way to how to run a [post-mortem](/after/post_mortem_process.md), providing a [post-mortem template](/after/post_mortem_template.md) and even a [security incident response process](/during/security_incident_response.md).
## What is missing?
Lots, dig in an help us complete the picture. We can migrate most processes from Sharepoint here.
## License
This documentation is provided under the Apache License 2.0. In plain English that means you can use and modify this documentation and use it both commercially and for private use. However, you must include any original copyright notices, and the original LICENSE file.
Whether you are a Spearhead Systems customer or not, we want you to have the ability to use this documentation internally at your own company. You can view the source code for all of this documentation on our GitHub account, feel free to fork the repository and use it as a base for your own internal documentation.

View File

@ -0,0 +1,91 @@
For every major incident (SEV-2/1), we need to follow up with a post-mortem. A blame-free, detailed description, of exactly what went wrong in order to cause the incident, along with a list of steps to take in order to prevent a similar incident from occurring again in the future. The incident response process itself should also be included.
![Post-Mortem](../assets/img/headers/pagerduty_post_mortem.jpg)
## Owner Designation
The first step is that a post-mortem owner will be designated. This is done by the IC either at the end of a major incident call, or very shortly after. You will be notified directly by the IC if you are the owner for the post-mortem. The owner is responsible for populating the post-mortem page, looking up logs, managing the followup investigation, and keeping all interested parties in the loop. Please use Slack for coordinating followup. A detailed list of the steps is available below,
## Owner Responsibilities
As owner of a post-mortem, you are responsible for the following,
* Scheduling the post-mortem meeting (on the shared calendar) and inviting the relevant people (this should be scheduled within 5 business days of the incident).
* Updating the page with all of the necessary content.
* Investigating the incident, pulling in whomever you need from other teams to assist in the investigation.
* Creating follow-up JIRA tickets (_You are only responsible for creating the tickets, not following them up to resolution_).
* Running the post-mortem meeting (_these generally run themselves, but you should get people back on topic if the conversation starts to wander_).
* In cases where we need a public blog post, creating & reviewing it with appropriate parties.
## Post-Mortem Wiki Page
Once you've been designated as the owner of a post-mortem, you should start updating the page with all the relevant information.
1. (If not already done by the IC) Create a new post-mortem page for the incident.
1. Schedule a post-mortem meeting for within 5 business days of the incident. You should schedule this before filling in the page, just so it's on the calendar.
* Create the meeting on the "Incident Post-Mortem Meetings" shared calendar.
1. Begin populating the page with all of the information you have.
* The timeline should be the main focus to begin with.
* The timeline should include important changes in status/impact, and also key actions taken by responders.
* You should mark the start of the incident in red, and the resolution in green (for when we went into/out of SEV).
* Go through the history in Slack to identify the responders, and add them to the page.
* Identify the Incident Commander and Scribe in this list.
1. Populate the page with more detailed information.
* For each item in the timeline, identify a metric, or some third-party page where the data came from. This could be a link to a Datadog graph, a SumoLogic search, a Tweet, etc. Anything which shows the data point you're trying to illustrate in the timeline.
1. Perform an analysis of the incident.
* Capture all available data regarding the incident. What caused it, how many customers were affected, etc.
* Any commands or queries you use to look up data should be posted in the page so others can see how the data was gathered.
* Capture the impact to customers (generally in terms of event submission, delayed processing, and slow notification delivery)
* Identify the underlying cause of the incident (What happened, and why did it happen).
1. Create any followup action JIRA tickets (or note down topics for discussion if we need to decide on a direction to go before creating tickets),
* Go through the history in Slack to identify any TODO items.
* Label all tickets with their severity level and date tags.
* Any actions which can reduce re-occurrence of the incident.
* (There may be some trade-off here, and that's fine. Sometimes the ROI isn't worth the effort that would go into it).
* Identify any actions which can make our incident response process better.
* Be careful with creating too many tickets. Generally we only want to create things that are P0/P1's. Things that absolutely should be dealt with.
1. Write the external message that will be sent to customers. This will be reviewed during the post-mortem meeting before it is sent out.
* Avoid using the word "outage" unless it really was a full outage, use the word "incident" instead. Customers generally see "outage" and assume everything was down, when in reality it was likely just some alerts delivered outside of SLA.
* Look at other examples of previous post-mortems to see the kind of thing you should send.
## Post-Mortem Meeting
These meetings should generally last 15-30 minutes, and are intended to be a wrap up of the post-mortem process. We should discuss what happened, what we could've done better, and any followup actions we need to take. The goal is to suss out any disagreement on the facts, analysis, or recommended actions, and to get some wider awareness of the problems that are causing reliability issues for us.
You should invite the following people to the post-mortem meeting,
* Always
* The incident commander.
* Service owners involved in the incident.
* Key engineer(s)/responders involved in the incident.
* Optional
* Customer liaison. (Only SEV-1 incidents)
A general agenda for the meeting would be something like,
1. Recap the timeline, to make sure everyone agrees and is on the same page.
1. Recap important points, and any unusual items.
1. Discuss how the problem could've been caught.
* Did it show up in canary?
* Could it have been caught in tests, or loadtest environment?
1. Discuss customer impact. Any comments from customers, etc.
1. Review action items that have been created, discuss if appropriate, or if more are needed, etc.
## Examples
Here are some examples of post-mortems from other companies as a reference,
* [Stripe](https://support.stripe.com/questions/outage-postmortem-2015-10-08-utc)
* [LastPass](https://blog.lastpass.com/2015/06/lastpass-security-notice.html/comment-page-2/)
* [AWS](https://aws.amazon.com/message/5467D2/)
* [Twilio](https://www.twilio.com/blog/2013/07/billing-incident-post-mortem-breakdown-analysis-and-root-cause.html)
* [Heroku](https://status.heroku.com/incidents/151)
* [Netflix](http://techblog.netflix.com/2012/10/post-mortem-of-october-222012-aws.html)
* [GOV.UK Rail Accident Investigation](https://www.gov.uk/government/publications/kyle-beck-safety-digest/near-miss-at-kyle-beck-3-august-2016)
* [A List of Post-mortems!](https://github.com/danluu/post-mortems)
## Useful Resources
* [Advanced PostMortem Fu and Human Error 101 (Velocity 2011)](http://www.slideshare.net/jallspaw/advanced-postmortem-fu-and-human-error-101-velocity-2011)
* [Blame. Language. Sharing.](http://fractio.nl/2015/10/30/blame-language-sharing/)

View File

@ -0,0 +1,79 @@
This is a standard template we use for post-mortems at PagerDuty. Each section describes the type of information you will want to put in that section.
---
!!! note "Guidelines"
This page is intended to be reviewed during a post-mortem meeting that should be scheduled within 5 business days of any event.
Your first step should be to schedule the post-mortem meeting in the shared calendar for within 5 business days after the incident.
Don't wait until you've filled in the info to schedule the meeting, however make sure the page is completed by the meeting.
** Post-Mortem Owner:** _Your name goes here._
** Meeting Scheduled For:** _Schedule the meeting on the "Incident Post-Mortem Meetings" shared calendar, for within 5 business days after the incident. Put the date/time here._
** Call Recording:** _Link to the incident call recording._
## Overview
_Include a **short** sentence or two summarizing the root cause, timeline summary, and the impact. E.g. "On the morning of August 99th, we suffered a 1 minute SEV-1 due to a runaway process on our primary database machine. This slowness caused roughly 0.024% of alerts that had begun during this time to be delivered out of SLA."_
## What Happened
_Include a short description of what happened._
## Root Cause
_Include a description of the root cause. If there were any actions taken that exacerbated the issue, also include them here with the intention of learning from any mistakes made during the resolution process._
## Resolution
_Include a description what solved the problem. If there was a temporary fix in place, describe that along with the long-term solution._
## Impact
_Be very specific here, include exact numbers._
| Time in SEV-1 | ?mins |
| Time in SEV-2 | ?mins |
| Notifications Delivered out of SLA | ??% (?? of ??) |
| Events Dropped / Not Accepted | ??% (?? of ??) _Should usually be 0, but always check_ |
| Accounts Affected | ?? |
| Users Affected | ?? |
| Support Requests Raised | ?? _Include any relevant links to tickets_ |
## Responders
* _Who was the IC?_
* _Who was the scribe?_
* _Who else was involved?_
* _Who else was involved?_
## Timeline
_Some important times to include: (1) time the root cause began, (2) time of the page, (3) time that the status page was updated (i.e. when the incident became public), (4) time of any significant actions, (5) time the SEV-2/1 ended, (6) links to tools/logs that show how the timestamp was arrived at._
| Time (UTC) | Event | Data Link |
| ---------- | ----- | --------- |
## How'd We Do?
### What Went Well?
* _List anything you did well and want to call out. It's OK to not list anything._
### What Didn't Go So Well?
* _List anything you think we didn't do very well. The intent is that we should follow up on all points here to improve our processes._
## Action Items
_Each action item should be in the form of a JIRA ticket, and each ticket should have the same set of two tags: “sev1_YYYYMMDD” (such as sev1_20150911) and simply “sev1”. Include action items such as: (1) any fixes required to prevent the root cause in the future, (2) any preparedness tasks that could help mitigate the problem if it came up again, (3) remaining post-mortem steps, such as the internal email, as well as the status-page public post, (4) any improvements to our incident response process._
## Messaging
### Internal Email
_This is a follow-up for employees. It should be sent out right after the post-mortem meeting is over. It only needs a short paragraph summarizing the incident and a link to this wiki page._
> Briefly summarize what happened and where the post-mortem page (this page) can be found.
### External Message
_This is what will be included on the status.pagerduty.com website regarding this incident. What are we telling customers, including an apology? (The apology should be genuine, not rote.)_
> Summary
> What Happened?
> What Are We Doing About This?

View File

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 455 KiB

After

Width:  |  Height:  |  Size: 455 KiB

View File

Before

Width:  |  Height:  |  Size: 640 KiB

After

Width:  |  Height:  |  Size: 640 KiB

View File

Before

Width:  |  Height:  |  Size: 891 KiB

After

Width:  |  Height:  |  Size: 891 KiB

View File

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 149 KiB

View File

Before

Width:  |  Height:  |  Size: 243 KiB

After

Width:  |  Height:  |  Size: 243 KiB

View File

Before

Width:  |  Height:  |  Size: 252 KiB

After

Width:  |  Height:  |  Size: 252 KiB

View File

Before

Width:  |  Height:  |  Size: 174 KiB

After

Width:  |  Height:  |  Size: 174 KiB

View File

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 160 KiB

View File

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 61 KiB

View File

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 221 KiB

After

Width:  |  Height:  |  Size: 221 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

View File

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View File

@ -0,0 +1,50 @@
You've just joined an incident call, and you've never been on one before. You have no idea what's going on, or what you're supposed to be doing. This page will help you through your first time on an incident call, and will provide a reference for future calls you may be a part of.
![Obama phone](../assets/img/headers/obama_phone.jpg)
*Credit: [Official White House Photo](https://commons.wikimedia.org/wiki/File:Barack_Obama_on_phone_with_Benjamin_Netanyahu_2009-06-08.jpg) by Pete Souza*
## First Steps
* If you intend on participating on the incident call you should join both the call, and Slack.
* Make sure you are in a quiet environment in order to participate on the call. Background noise should be kept to a minimum.
* Keep your microphone muted until you have something to say.
* Identify yourself when you join the call; State your name and the system you are the expert for.
* Speak up and speak clearly.
* Be direct and factual.
* Keep conversations/discussions short and to the point.
* Bring any concerns to the Incident Commander (IC) on the call.
* Respect time constraints given by the Incident Commander.
## Lingo
**Use clear terminology, and avoid using acronyms or abbreviations during a call. Clear and accurate communication is more important than quick communication.**
![Communication](../assets/img/misc/communicate.png)
Standard radio [voice procedure](https://en.wikipedia.org/wiki/Voice_procedure#Words_in_voice_procedure) does not need to be followed on calls. However, you should familiarize yourself with the terms, as you may hear them on a call (or need to use them yourself). The ones in more active use on major incident calls are,
* **Ack/Rog** - "I have received and understood"
* **Say Again** - "Repeat your last message"
* **Standby** - "Please wait a moment for the next response"
* **Wilco** - "Will comply"
Do not invent new abbreviations, and always favor being explicit of implicit. It is better to make things clearer than to try and save time by abbreviating, only to have a misunderstanding because others didn't know the abbreviation.
## The Commander
The Incident Commander (IC) is the leader of the incident response process, and is responsible for bringing the incident to resolution. They will announce themselves at the start of the call, and will generally be doing most of the talking.
* Follow all instructions from the incident commander, without exception.
* Do not perform any actions unless the incident commander has told you to do so.
* The commander will typically poll for any strong objections before performing a large action. This is your time to raise any objections if you have them.
* Once the commander has made a decision, that decision is final and should be followed, even if you disagreed during the poll.
* Answer any questions the commander asks you in a clear and concise way.
* Answering that you "don't know" something is perfectly acceptable. Do not try to guess.
* The commander may ask you to investigate something and get back to them in X minutes. Make sure you are ready with an answer within that time.
* Answering that you need more time is perfectly acceptable, but you need to give the commander an estimate of how much time.
## Problems?
#### There's no incident commander on the call! I don't know what to do!
Ask on the call if an IC is present. If you have no response, type `!ic page` in Slack. This will page the primary and backup IC to the call.
#### I can join the call or Slack, but not both, what should I do?
You're welcome to join only one of the channels, however you should not actively participate in the incident response if so, as it causes disjoined communication. Liaise with someone who is both in Slack and on the call to provide any input you may have so that they can raise it.

View File

@ -0,0 +1,134 @@
There are several roles for our incident response teams at Spearhead Systems. Certain roles only have one person per incident (e.g. support engineer), whereas other roles can have multiple people (e.g.System/Solution Architects, juniors, etc.). It's all about coming together as a team, working the problem, and getting a solution quickly.
Here is a rough outline of our role hierarchy, with each role discussed in more detail on the rest of this page.
![Incident Response Structure](../assets/img/misc/incident_response_roles.png)
---
## Team Leader (IC)
### What is it?
A Team Leader acts as the single source of truth of what is currently happening and what is going to happen during an major incident. They come in all shapes, sizes, and colors. TL's are also the key elements in a project (boards in DoIT).
### Why have one?
As any system grows in size and complexity, things break and cause incidents. The TL is needed to help drive major incidents to resolution by organizing his team towards a common goal.
### What are the responsibilities?
1. Help prepare for projects and incidents,
* Setup communications channels.
* Create the DoIT board(s) and other project planning related materials.
* Funnel people to these communications channels.
* Train team members on how to communicate and train other TL's.
1. Drive incidents and projects to resolution,
* Get everyone on the same communication channel.
* Collect information from team members for their services/area of ownership status.
* Collect proposed repair actions, then recommend repair actions to be taken.
* Delegate all repair actions, the TL is NOT a resolver.
* Be the single authority on system status
* Communicate directly with the customers and end-users
- not the engineers themselves!
1. Post Mortem,
* Creating the initial template right after the incident so people can put in their thoughts while fresh.
* Assigning the post-mortem after the event is over, this can be done after the call.
* Work with Managers/Support on scheduling preventive actions.
### Who are they?
Anyone on the TL on-call schedule. Trainees are typically on the TL Shadow schedule.
### How can I become one?
Take a look at our [Team Leader training guide](/training/incident_commander.md).
---
## Deputy
### What is it?
A Deputy is a direct support role for the Incident Commander. This is not a shadow where the person just observes, the Deputy is expected to perform important tasks during an incident.
### Why have one?
It's important for the IC to focus on the problem at hand, rather than worrying about documenting the steps or monitoring timers. The deputy helps to support the IC and keep them focussed on the incident.
### What are the responsibilities?
The Deputy is expected to:
1. Bring up issues to the Incident Commander that may otherwise not be addressed (keeping an eye on timers that have been started, circling back around to missed items from a roll call, etc).
1. Be a "hot standby" Incident Commander, should the primary need to either transition to a SME, or otherwise have to step away from the IC role.
1. Page SME's or other on-call engineers as instructed by the Incident Commander.
1. Manage the incident call, and be prepared to remove people from the call if instructed by the Incident Commander.
1. Liaise with stakeholders and provide status updates on Slack as necessary.
### Who are they?
Any Incident Commander can act as a deputy. Deputies need to be trained as an Incident Commander as they may be required to take over command.
### How can I become one?
Take a look at our [Deputy training guide](/training/deputy.md). Deputies also need to be [trained as an Incident Commander](/training/incident_commander.md).
---
## Scribe
### What is it?
A Scribe documents the timeline of an incident as it progresses, and makes sure all important decisions and data are captured for later review.
### Why have one?
The incident commander will need to focus on the problem at hand, and the subject matter experts will need to focus on resolving the incident. It is important to capture a timeline of events as they happen so that they can be reviewed during the post-mortem to determine how well we performed, and so we can accurate determine any additional impact that we might not have noticed at the time.
### What are the responsibilities?
The Scribe is expected to:
1. Ensure the incident call is being recorded.
1. Note in Slack important data, events, and actions, as they happen. Specifically:
* Key actions as they are taken (Example: "prod-server-387723 is being restarted to attempt to remove the stuck lock")
* Status reports when one is provided by the IC (Example: "We are in SEV-1, service A is currently not processing events due to a stuck lock, X is restarting the app stack, next checkin in 3 minutes")
* Any key callouts either during the call or at the ending review (Example: "Note: (Bob B) We should have a better way to determine stuck locks.")
### Who are they?
Anyone can act as a scribe during an incident, and are chosen by the Incident Commander at the start of the call. Typically the Deputy will act as the Scribe, but that doesn't necessarily need to happen, and for larger incidents may not be possible.
### How can I become one?
Follow our [Scribe training guide](/training/scribe.md), and then notify the Incident Commanders that you would like to be considered for scribing for the next incident.
---
## Subject Matter Expert
### What is it?
A Subject Matter Expert (SME), sometimes called a "Resolver", is a domain expert or designated owner of a component or service that is part of the PagerDuty software stack.
### Why have one?
The IC and deputy are not all-knowing super beings. When there is a problem with a service, an expert in that service is needed to be able to quickly help identify and fix issues.
### What are the responsibilities?
1. Being able to diagnose common problems with the service.
1. Being able to rapidly fix issues found during an incident.
1. Concise communication skills, specifically for CAN reports:
* Condition: What is the current state of the service? Is it healthy or not?
* Actions: What actions need to be taken if the service is not in a healthy state?
* Needs: What support does the resolver need to perform an action?
### Who are they?
Anyone who is considered a "domain expert" can act as a resolver for an incident. Typically the service's primary on-call will act as the SME for that service.
### How can I become one?
Take a look at our [Subject Matter Expert training guide](/training/subject_matter_expert.md). You should also discuss with your team and service owner to determine what the requirements are for your particular service.
---
## Customer Liaison
### What is it?
A person responsible for interacting with customers, either directly, or via our public communication channels. Typically a member of the Customer Support team.
### Why have one?
All of the other roles will be actively working on identifying the cause and resolving the issue, we need a role which is focused purely on the customer interaction side of things so that it can be done properly, with the due care and attention it needs.
### What are the responsibilities?
1. Post any publicly facing messages regarding the incident (Twitter, StatusPage, etc).
1. Notify the IC of any customers reporting that they are affected by the incident.
### Who are they?
Any member of the Support Team can act as a customer liaison.
### How can I become one?
Discuss with the Support Team about becoming our next customer liaison.

View File

@ -0,0 +1,92 @@
The first step in any incident response process is to determine what actually constitutes an incident. We have two high level categories for classifying incidents: this is done using "SR" or "IN" defintions with an attached priority of "Minor", "Normal" or "Major". "SR" are "Service requests" initiated by a customer and usually do not constitute a critical issue (there are exceptions) and "IN" are "incidents" which are generally "urgent".
All of our operational issues are to be classified as either a Service Request or an Incident. Incidents have priority over Service Requests provided that there are no Service Requests with a higher priority. In general you will want to resolve a higher severity SR or IN than a lower one (a "Major" priority gets a more intensive response than a "Normal" incident for example).
!!! note "Always Assume The Worst"
If you are unsure which level an incident is (e.g. not sure if IN is Major or Normal), **treat it as the higher one**. During an incident is not the time to discuss or litigate severities, just assume the highest and review during a post-mortem.
<table class="custom-table">
<thead>
<tr>
<th>Severity</th>
<th>Description</th>
<th>What To Do</th>
</tr>
</thead>
<tbody>
<tr>
<td class="sev-1">Major</td>
<td>
<ul>
<li>The system is in a critical state and is actively impacting a large number of customers.</li>
<li>Functionality has been severely impaired for a long time, breaking SLA.</li>
<li>Customer-data-exposing security vulnerability has come to our attention.</li>
</ul>
</td>
<td>See <a href="/during/during_an_incident">During an Incident</a>.</td>
</tr>
<tr>
<td class="sev-2">Normal</td>
<td>
<ul>
<li>Functionality of virtualization platform is severely impaired.</li>
<li>E-mail system is offline.</li>
</ul>
</td>
<td>See <a href="/during/during_an_incident">During an Incident</a>.</td>
</tr>
<tr>
<td class="warning" colspan="3">Anything above this line is considered a "Major Incident". These are generally Incidents (IN). Below are service requests (SR) which are usually initiated by a human who can help with prioritizing. A call is triggered for all major incidents (indifferently of SR or IN).</td>
</tr>
<tr>
<td class="sev-2">Normal</td>
<td>
<ul>
<li>Partial loss of functionality, only affecting minority of customers.</li>
<li>Something that has the likelihood of becoming Major if nothing is done.</li>
<li>No redundancy in a service (failure of 1 more node will cause outage).</li>
</ul>
</td>
<td>
<ul>
<li>Work on issue as your top priority.</li>
<li>Liaise with engineers of affected systems to identify cause.</li>
<li>If related to recent deployment, rollback.</li>
<li>Monitor status and notice if/when it escalates.</li>
<li>Mention on Slack if you think it has the potential to escalate.</li>
</ul>
</td>
</tr>
<tr>
<td class="sev-2">Normal</td>
<td>
<ul>
<li>Performance issues (delays, etc). Tasks that require non-immediate attention.</li>
<li>Job failure (not impacting alerting).</li>
</ul>
</td>
<td>
<ul>
<li>Work on the issue as your first priority (above "Low" tasks).</li>
<li>Monitor status and notice if/when it escalates.</li>
</ul>
</td>
</tr>
<tr>
<td class="sev-5">Low</td>
<td>
<ul>
<li>Normal bugs which aren't impacting system use, cosmetic issues, etc.</li>
</ul>
</td>
<td>
<ul>
<li>Create a DoIT ticket and assign to owner of affected system.</li>
</ul>
</td>
</tr>
</tbody>
</table>
!!! note "Be Specific"
When creating Cards in Doit, be as specific as possible and include all necessary details. Include relevant details regarding when the issue started, what may have triggered it, etc.. Document your efforts through worklogs and be specific there as well.

View File

@ -0,0 +1,111 @@
Information on what to do during a major incident. See our [severity level descriptions](/before/severity_levels.md) for what constitutes a major incident.
!!! note "Documentation"
For your own internal documentation, you should make sure that this page has all of the necessary information prominently displayed. Such as: phone bridge numbers, Slack rooms, important chat commands, etc. Here is an example,
<table class="custom-table" id="contact-summary">
<thead>
</thead>
<tbody>
<tr>
<td><a href="#">#incident-chat</a></td>
<td><a href="#">https://a-voip-provider.com/incident-call</a></td>
<td><a href="#">+1 555 BIG FIRE</a> (+1 555 244 3473) / PIN: 123456</td>
</tr>
<tr>
<td colspan="3" class="centered">Need an IC? Do <code>!ic page</code> in Slack</td>
</tr>
<tr>
<td colspan="3"><em>For executive summary updates only, join <a href="#">#executive-summary-updates</a>.</em></td>
</tr>
</tbody>
</table>
!!! info "Security Incident?"
If this is a security incident, you should follow the [Security Incident Response](/during/security_incident_response.md) process.
## Don't Panic!
1. Join the incident call and chat (see links above).
* Anyone is free to join the call or chat to observe and follow along with the incident.
* If you wish to participate however, you should join both. If you can't join the call for some reason, you should have a dedicated proxy for the call. Disjointed discussions in the chat room are ultimately distracting.
1. Follow along with the call/chat, add any comments you feel are appropriate, but keep the discussion relevant to the problem at hand.
* If you are not an SME, try to filter any discussion through the primary SME for your service. Too many people discussing at once get become overwhelming, so we should try to maintain a hierarchical structure to the call if possible.
1. Follow instructions from the Incident Commander.
* **Is there no IC on the call?**
* Manually page them via Slack, with `!ic page` in Slack. This will page the primary and backup IC's at the same time.
* Never hesitate to page the IC. It's much better to have them and not need them than the other way around.
## Steps for Incident Commander
Resolve the incident as quickly and as safely as possible, use the Deputy to assist you. Delegate any tasks to relevant experts at your discretion.
1. Announce on the call and in Slack that you are the incident commander, who you have designated as deputy (usually the backup IC), and scribe.
1. Identify if there is an obvious cause to the incident (recent deployment, spike in traffic, etc.), delegate investigation to relevant experts,
* Use the service experts on the call to assist in the analysis. They should be able to quickly provide confirmation of the cause, but not always. It's the call of the IC on how to proceed in cases where the cause is not positively known. Confer with service owners and use their knowledge to help you.
1. Identify investigation & repair actions (roll back, rate-limit services, etc) and delegate actions to relevant service experts. Typically something like this (obviously not an exhaustive list),
* **Bad Deployment:** Roll it back.
* **Web Application Stuck/Crashed:** Do a rolling restart.
* **Event Flood:** Validate automatic throttling is sufficient, adjust manually if not.
* **Data Center Outage:** Validate automation has removed bad data center. Force it to do so if not.
* **Degraded Service Behavior without load:** Gather forensic data (heap dumps, etc), and consider doing a rolling restart.
1. Listen for prompts from your Deputy regarding severity escalations, decide whether we need to announce publicly, and instruct customer liaison accordingly.
* Announcing publicly is at your discretion as IC. If you are unsure, then announce publicly ("If in doubt, tweet it out").
1. Once incident has recovered or is actively recovering, you can announce that the incident is over and that the call is ending. This usually indicates there's no more productive work to be done for the incident right now.
* Move the remaining, non-time-critical discussion to Slack.
* Follow up to ensure the customer liaison wraps up the incident publicly.
* Identify any post-incident clean-up work.
* You may need to perform debriefing/analysis of the underlying root cause.
1. (After call ends) Create the post-mortem page from the template, and assign an owner to the post-mortem for the incident.
1. (After call ends) Send out an internal email explaining that we had a major incident, provide a link to the post-mortem.
## Steps for Deputy
You are there to support the IC in whatever they need.
1. Monitor the status, and notify the IC if/when the incident escalates in severity level,
* OfficerURL can help you to monitor the status on Slack,
* `!status` - Will tell you the current status.
* `!status stalk` - Will continually monitor the status and report it to the room every 30s.
1. Be prepared to page other people as directed by the Incident Commander.
1. Provide regular status updates in Slack (roughly every 30mins) to the executive team, giving an executive summary of the current status. Keep it short and to the point, and use @here.
1. Follow instructions from the Incident Commander.
## Steps for Scribe
You are there to document the key information from the incident in Slack.
1. Update the Slack room with who the IC is, who the Deputy is, and that you're the scribe (if not already done).
* e.g. "IC: Bob Boberson, Deputy: Deputy Deputyson, Scribe: Writer McWriterson"
1. You should add notes to Slack when significant actions are taken, or findings are determined. You don't need to wait for the IC to direct this - use your own judgment.
* You should also add `TODO` notes to the Slack room that indicate follow-ups slated for later.
1. Follow instructions from the Incident Commander.
## Steps for Subject Matter Experts
You are there to support the incident commander in identifying the cause of the incident, suggesting and evaluation repair actions, and following through on the repair actions.
1. Investigate the incident by analyzing any graphs or logs at your disposal. Announce all findings to the incident commander.
* If you are unsure of the cause, that's fine, state that you are investigating and provide regular updates to the IC.
1. Announce all suggestions for resolution to the incident commander, it is their decision on how to proceed, do not follow any actions unless told to do so!
1. Follow instructions from the incident commander.
1. (Optional) Once the call is over and post-mortem is created, add any notes you think are relevant to the post-mortem page.
## Steps for Customer Liaison
Be on stand-by to post public facing messages regarding the incident.
1. You will typically be required to update the status page and to send Tweets from our various accounts at certain times during the call.
1. Follow instructions from the Incident Commander.

View File

@ -0,0 +1,141 @@
!!! note "Incident Commander Required"
As with all major incidents at PagerDuty, security ones will also involve an Incident Commander, who will delegate the tasks to relevant resolvers. Tasks may be performed in parallel as assigned by the IC. Page one at the earliest possible opportunity.
## Checklist
Details for each of these items are available in the next section.
1. Stop the attack in progress.
1. Cut off the attack vector.
1. Assemble the response team.
1. Isolate affected instances.
1. Identify timeline of attack.
1. Identify compromised data.
1. Assess risk to other systems.
1. Assess risk of re-attack.
1. Apply additional mitigations, additions to monitoring, etc.
1. Forensic analysis of compromised systems.
1. Internal communication.
1. Involve law enforcement.
1. Reach out to external parties that may have been used as vector for attack.
1. External communication.
---
## Attack Mitigation
Stop the attack as quickly as you can, via any means necessary. Shut down servers, network isolate them, turn off a data center if you have to. Some common things to try,
* Shutdown the instance from the provider console (do not delete or terminate if you can help it, as we'll need to do forensics).
* If you happen to be logged into the box you can try to,
* Re-instate our default iptables rules to restrict traffic.
* `kill -9` any active session you think is an attacker.
* Change root password, and update /etc/shadow to lock out all other users.
* `sudo shutdown now`
## Cut Off Attack Vector
Identify the likely attack vectors and path/fix them so they cannot be re-exploited immediately after stopping the attack.
* If you suspect a third-party provider is compromised, delete all accounts except your own (and those of others who are physically present) and immediately rotate your password and MFA tokens.
* If you suspect a service application was an attack vector, disable any relevant code paths, or shut down the service entirely.
## Assemble Response Team
Identify the key responders for the security incident, and keep them all in the loop. Set up a secure method of communicating all information associated with the incident. Details on the incident (or even the fact that an incident has occurred) should be kept private to the responders until you are confident the attack is not being triggered internally.
* The security and site-reliability teams should usually be involved.
* A representative for any affected services should be involved.
* An Incident Commander (IC) should be appointed, who will also appoint the usual incident command roles. The incident command team will be responsible for keeping documentation of actions taken, and for notifying internal stakeholders as appropriate.
* Do not communicate with anyone not on the response team about the incident until forensics has been performed. The attack could be happening internally.
* Give the project an innocuous codename that can be used for chats/documents so if anyone overhears they don't realize it's a security incident. (e.g. sapphire-unicorn).
* Prefix all emails, and chat topics with "Attorney Work Project".
## Isolate Affected Instances
Any instances which were affected by the attack should be immediately isolated from any other instances. As soon as possible, an image of the system should be taken and put into a read-only cold storage for later forensic analysis.
* Blacklist the IP addresses for any affected instances from all other hosts.
* Turn off and shutdown the instances immediately if you didn't do that to stop the attack.
* Take a disk image for any disks attached to the instances, and ship them to an off-site cold storage location. You should make sure these images are read-only and cannot be tampered with.
## Identify Timeline of Attack
Work with all tools at your disposal to identify the timeline of the attack, along with exactly what the attacker did.
* Any reconnaissance the attacker performed on the system before the attack started.
* When the attacker gained access to the system.
* What actions the attacker performed on the system, and when.
* Identify how long the attacker had access to the system before they were detected, and before they were kicked out.
* Identify any queries the attacker ran on databases.
* Try to identify if the attacker still has access to the system via another back door. Monitor logs for unusual activity, etc.
## Compromised Data
Using forensic analysis of log files, time-series graphs, and any other information/tools at your disposal, attempt to identify what information was compromised (if any),
* Identify any data that was compromised during the attack.
* Was any data exfiltrated from a database?
* What keys were on the system that are now considering compromised?
* Was the attacker able to identify other components of the system (map out the network, etc).
* Find exactly what customer data has been compromised, if any.
## Assess Risk
Based on the data that was compromised, assess the risk to other systems.
* Does the attacker have enough information to find another way in?
* Were any passwords or keys stored on the host? If so, they should be considered compromised, regardless of how they were stored.
* Any user accounts that were used in the initial attack should rotate all of their keys and passwords on every other system they have an account.
## Apply Additional Mitigations
Start applying mitigations to other parts of your system.
* Rotate any compromised data.
* Identify any new alerting which is needed to notify of a similar breach.
* Block any IP addresses associated with the attack.
* Identify any keys/credentials that are compromised and revoke their access immediately.
## Forensic Analysis
Once you are confident the systems are secured, and enough monitoring is in place to detect another attack, you can move onto the forensic analysis stage.
* Take any read-only images you created, any access logs you have, and comb through them for more information about the attack.
* Identify exactly what happened, how it happened, and how to prevent it in future.
* Keep track of all IP addresses involved in the attack.
* Monitor logs for any attempt to regain access to the system by the attacker.
## Internal Communication
**Delegate to:** VP or Director of Engineering
Communicate internally only once you are confident (via forensic analysis) that the attack was not sourced internally.
* Don't go into too much detail.
* Overview the timeline.
* Discuss mitigation steps taken.
* Follow up with more information once it is known.
## Liaise With Law Enforcement / External Actors
**Delegate to:** VP or Director of Engineering
Work with law enforcement to identify the source of the attack, letting any system owners know that systems under their control may be compromised, etc.
* Contact local law enforcement.
* Contact FBI.
* Contact operators for any systems used in the attack, their systems may also have been compromised.
* Contact security companies to help in assessing risk and any PR next steps.
## External Communication
**Delegate to:** Marketing Team
Once you have validated all of the information you have is accurate, have a timeline of events, and know exactly what information was compromised, how it was compromised, and sure that it won't happen again. Only then should you prepare and release a public statement to customers informing them of the compromised information and any steps they need to take.
* Include the date in the title of any announcement, so that it's never confused for a potential new breach.
* Don't say "We take security very seriously". It makes everyone cringe when they read it.
* Be honest, accept responsibility, and present the facts, along with exactly how we plan to prevent such things in future.
* Be as detailed as possible with the timeline.
* Be as detailed as possible in what information was compromised, and how it affects customers. If we were storing something we shouldn't have been, be honest about it. It'll come out later and it'll be much worse.
* Don't name and shame any external parties that might have caused the compromise. It's bad form. (Unless they've already publicly disclosed, in which case we can link to their disclosure).
* Release the external communication as soon as possible, preferably within a few days of the compromise. The longer we wait, the worse it will be.
* Figure out if there is a way to get in touch with customers' internal security teams before the general public notice is sent.
---
## Additional Reading
* [Computer Security Incident Handling Guide](http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-61r2.pdf) (NIST)
* [Incident Handler's Handbook](https://www.sans.org/reading-room/whitepapers/incident/incident-handlers-handbook-33901) (SANS)
* [Responding to IT Security Incidents](https://technet.microsoft.com/en-us/library/cc700825.aspx) (Microsoft)
* [Defining Incident Management Processes for CSIRTs: A Work in Progress](http://resources.sei.cmu.edu/library/asset-view.cfm?assetid=7153) (CMU)
* [Creating and Managing Computer Security Incident Handling Teams (CSIRTS)](https://www.first.org/conference/2008/papers/killcrece-georgia-slides.pdf) (CERT)

57
_site/docs/index.md Normal file
View File

@ -0,0 +1,57 @@
This documentation covers parts of the Spearhead Systems Issue Response process. It is a copy of [PagerDuty's](https://github.com/PagerDuty/incident-response-docs/) documentation and furthermore a cut-down version of our own internal documentation, used at Spearhead Systems for any issue (incident or service request), and to prepare new employees for on-call responsibilities. It provides information not only on preparing for an incident, but also what to do during and after. It is intended to be used by on-call practitioners and those involved in an operational incident response process (or those wishing to enact a formal incident response process). See the [about page](about.md) for more information on what this documentation is and why it exists. This documentation is complementary to what is available in our [existing wiki](https://sphsys.sharepoint.com) and may not yet be open sourced.
!!! note "Issue, Incident and Service Request"
At Spearhead we use the term *issue* to define any request from our customers. Issues fall into two categories: "Service Requests (SR)" and "Incidents (IN)". Note that we use the term Incident to describe both a service request as well as incidents. For brevity we will use SR and IN throughout this documentation.
A "service request" is usually initiated by a human and is generally not critical for the normal functioning of the business while an "incident" is an issue that is or can cause interruption to normal business functions.
![Issue Response at Spearhead Systems](./assets/img/headers/sph_ir.jpg)
## Being On-Call
If you've never been on-call before, you might be wondering what it's all about. These pages describe what the expectations of being on-call are, along with some resources to help you.
* [Being On-Call](oncall/being_oncall.md) - _A guide to being on-call, both what your responsibilities are, and what they are not._
* [Alerting Principles](oncall/alerting_principles.md) - _The principles we use to determine what things page an engineer, and what time of day they page._
## Before an Incident
Reading material for things you probably want to know before an incident occurs. You likely don't want to be reading these during an actual incident.
* [Severity Levels](before/severity_levels.md) - _Information on our severity level classification. What constitutes a Low issue? What's a "Major Incident"?, etc._
* [Different Roles for Incidents](before/different_roles.md) - _Information on the roles during an incident; Incident Commander, Scribe, etc._
* [Incident Call Etiquette](before/call_etiquette.md) - _Our etiquette guidelines for incident calls, before you find yourself in one._
## During an Incident
Information and processes during an incident.
* [During an Incident](during/during_an_incident.md) - _Information on what to do during an incident, and how to constructively contribute._
* [Security Incident Response](during/security_incident_response.md) - _Security incidents are handled differently to normal operational incidents._
## After an Incident
Our followup processes, how we make sure we don't repeat mistakes and are always improving.
* [Post-Mortem Process](after/post_mortem_process.md) - _Information on our post-mortem process; what's involved and how to write or run a post-mortem._
* [Post-Mortem Template](after/post_mortem_template.md) - _The template we use for writing our post-mortems for major incidents._
## Training
So, you want to learn about incident response? You've come to the right place.
* [Training Overview](training/overview.md) - _An overview of our training guides and additional training material from third-parties._
* [Incident Commander Training](training/incident_commander.md) - _A guide to becoming our next Incident Commander._
* [Deputy Training](training/deputy.md) - _How to be a deputy and back up the Incident Commander._
* [Scribe Training](training/scribe.md) - _A guide to scribing._
* [Subject Matter Expert Training](training/subject_matter_expert.md) - _A guide on responsibilities and behavior for all participants in a major incident._
* [Glossary of Incident Response Terms](training/glossary.md) - _A collection of terms that you may hear being used, along with their definition._
## Additional Reading
Useful material and resources from external parties that are relevant to incident response.
* [Incident Management for Operations](http://shop.oreilly.com/product/0636920036159.do) (O'Reilly)
* [Incident Response](http://shop.oreilly.com/product/9780596001308.do) (O'Reilly)
* [Debriefing Facilitation Guide](http://extfiles.etsy.com/DebriefingFacilitationGuide.pdf) (Etsy)
* [US National Incident Management System (NIMS)](https://www.fema.gov/national-incident-management-system) (FEMA)

View File

@ -0,0 +1,35 @@
We manage how we get alerted based on many factors such as the customers contractual SLA, the urgency of their request or incident, etc.. **an alert or notification is something which requires a human to perform an action**. Based on the severity of the issue (service request or incident) we prioritize accordingly in [DoIT](http://doit.sphs.ro).
!!! warning "Major Priority Alerts"
Anything that wakes up a human in the middle of the night should be **immediately human actionable**. If it is none of those things, then we need to adjust the alert to not page at those times.
| Priority | Alerts | Response |
| -------- | ------ | -------- |
| Major | Major-Priority Spearhead Alert 24/7/365. | Requires **immediate human action**. |
| Normal | Normal-Priority Spearhead Alert during **business hours only**. | Requires human action that same working day. |
| Minor | Minor-Priority Spearhead Alert 24/7/365. | Requires human action at some point. |
Both IN and SR (incidents, service requests) share the same priorities. The actual response / resolution times vary and are based upon contractual agreements with the customer. These details (SLA) are available in DoIT on the organization page of the respective customer.
If you're setting up a new alert/notification, consider the chart above for how you want to alert people. Be mindful of not creating new high-priority alerts if they don't require an immediate response, for example.
!!! info "Alert Channels"
Presently we use email as the only notification method. This means keeping an eye on your email is essential!
SMS and Push notifications are in the pipeline for DoIT.
## Examples
#### "Production service is failing for 75% of requests, automation is unable to resolve."_
This would be a **Major** priority IN, requiring immediate human action to resolve.
![Major Urgency](../assets/img/screenshots/prio-high.png)
#### "A customer sends an email stating that "Production server disk space is filling, expected to be full in 48 hours. Log rotation is insufficient to resolve."
This would be a **Normal** priority SR, requiring human action soon, but not immediately.
![Normal Urgency](../assets/img/screenshots/prio-norm.png)
#### "An SSL certificate is due to expire in one week."
This would be a **Minor** priority SR, requiring human action some time soon.
![Minor Urgency](../assets/img/screenshots/prio-low.png)

View File

@ -0,0 +1,95 @@
A summary of expectations and helpful information for being on-call.
![Alert Fatigue](../assets/img/misc/alert_fatigue.png)
## What is On-Call?
Being on-call means that you are able to be contacted at any time in order to investigate and fix issues that may arise. For example, if you are on-call, should any alarms be triggered by our monitoring solution, you will receive a "page" (an alert on your mobile device, email, phone call, or SMS, etc.) giving you details on what has broken. You will be expected to take whatever actions are necessary in order to resolve the issue and return your service to a normal state.
At Spearhead Systems we consider you are on-call during normal working hours in which case you are proactively working with [DoIT](http://doit.sphs.ro/) and looking over your assigned cards/boards as well as when you are formally "on-call" and issues are being redirected to you.
On-call responsibilities extend beyond normal office hours, and if you are on-call you are expected to be able to respond to issues, even at 2am. This sounds horrible (and it can be), but this is what our customers go through, and is the problem that the Spearhead Systems professional services is trying to fix!
## Responsibilities
1. **Prepare**
* Have your laptop and Internet with you (office, home, a MiFi dongle, a phone with a tethering plan, etc).
* Have a way to charge your MiFi.
* Team alert escalation happens within 5 minutes, set/stagger your notification timeouts (push, SMS, phone...) accordingly.
* Make sure Spearhead Systems (and colleagues directly) texts and calls can bypass your "Do Not Disturb" settings.
* Be prepared (environment is set up, a current working copy of the necessary repos is local and functioning, you have configured and tested environments on workstations, your credentials for third-party services are current, you have Java installed, ssh-keys and so on...)
* Read our Incident Response documentation (that's this!) to understand how we handle incidents and service requests, what the different roles and methods of communication are, etc.
* Be aware of your upcoming on-call time (primary, backup) and arrange swaps around travel, vacations, appointments etc.
1. **Triage**
* Acknowledge and act on alerts whenever you can (see the first "Not responsibilities" point below)
* Determine the urgency of the problem:
* Is it something that should be worked on right now or escalated into a major incident? ("production server on fire" situations. Security alerts) - do so.
* Is it some tactical work that doesn't have to happen during the night? (for example, disk utilization high watermark, but there's plenty of space left and the trend is not indicating impending doom) - snooze the alert until a more suitable time (working hours, the next morning...) and get back to fixing it then.
* Check Slack for current activity. Often (but not always) actions that could potentially cause alerts will be announced there.
* Does the alert and your initial investigation indicate a general problem or an issue with a specific service that the relevant team should look into? If it does not look like a problem you are the expert for, then escalate to another team member or group.
1. **Fix**
* You are empowered to dive into any problem and act to fix it.
* Involve other team members as necessary: do not hesitate to escalate if you cannot figure out the cause within a reasonable timeframe or if the service / alert is something you have not tackled before.
* If the issue is not very time sensitive and you have other priority work, make a note of this in DoIT to keep a track of it (with an appropriate severity).
1. **Improve**
* If a particular issue keeps happening; if an issue alerts often but turns out to be a preventable non-issue perhaps improving this should be a longer-term task.
* Disks that fill up, logs that should be rotated, noisy alerts...(we use ansible, go ahead and start automating!)
* If information is difficult / impossible to find, write it down. Constantly refactor and improve our knowledge base and documentation. Add redundant links and pointers if your mental model of the wiki / codebase does not match the way it is currently organized.
1. **Support**
* When your on-call "shift" ends, let the next on-call know about issues that have not been resolved yet and other experiences of note.
* If you are making a change that impacts the schedule (adding / removing yourself, for example), let others know since many of us make arrangements around the on-call schedule well in advance.
* Support each other: when doing activities that might generate plenty of pages, it is courteous to "take the page" away from the on-call by notifying them and scheduling an override for the duration.
## Not Responsibilities
1. No expectation to be the first to acknowledge _all_ of the alerts during the on-call period.
* Commute (and other necessary distractions) are facts of life, and sometimes it is not possible to receive or act on an alert before it escalates. That's why we have the backup on-call and schedule for.
1. No expectation to fix all issues by yourself.
* No one knows everything. Your whole team is here to help. There is no shame, and much to be learned, by escalating issues you are not certain about. "Never hesitate to escalate".
* Service owners will always know more about how their stuff works. Especially if our and their documentation is lacking, double-checking with the relevant team avoids mistakes. Measure twice, cut once and it's often best to let the subject matter expert do the cutting.
## Recommendations
If your team is starting its own on-call rotation, here are some scheduling recommendations from the Operations team.
* Always have a backup schedule. Yes, this means two people being on-call at the same time, however it takes a lot of the stress off of the primary if they know they have a specific backup they can contact, rather than trying to chose a random member of the team.
* A backup shift should generally come directly after a primary shift. It gives chance for the previous primary to pass on additional context which may have come up during their shift. It also helps to prevent people from sitting on issues with the intent of letting the next shift fix it.
* The third-level of your escalation (after backup schedule) should probably be your entire team. This should hopefully never happen (it's happened once in the history of the Support team), but when it does, it's useful to be able to just get the next available person.
![Escalation](../assets/img/misc/escalation.png)
* Team managers can (and should) be part of your normal rotation. It gives a better insight into what has been going on.
* New members of the team should shadow your on-call rotation during the first few weeks. They should get all alerts, and should follow along with what you are doing. (All new employees shadow the Support team for one week of on-call, but it's useful to have new team members shadow your team rotations also. Just not at the same time).
* We recommend you set your escalation timeout to 5 minutes. This should be plenty of time for someone to acknowledge the incident if they're able to. If they're not able to within 5 minutes, then they're probably not in a good position to respond to the incident anyway.
* When going off-call, you should provide a quick summary to the next on-call about any issues that may come up during their shift. A service has been flapping, an issue is likely to re-occur, etc. If you want to be formal, this can be a written report via email, but generally a verbal summary is sufficient.
### Notification Method Recommendations
You are free to set up your notification rules as you see fit, to match how you would like to best respond to incidents. If you're not sure how to configure them, the Support team has some recommendations,
![Mobile Alerts](../assets/img/misc/mobile_alerts.png)
* Use Push Notification and Email as your first method of notification. Most of us have phones with us at all times, so this is a prudent first method and is usually sufficient. (DoIT is in the process of integratoin with SNS for push notifications)
* Use Phone and/or SMS notification each minute after, until the escalation time. If Push didn't work, then it's likely you need something stronger, like a phone call. Keep calling every minute until it's too late. If you don't pick up by the 3rd time, then it's unlikely you are able to respond, and the incident will get escalated away from you.
## Etiquette
* If the current on-call comes into the office at 12pm looking tired, it's not because they're lazy. They probably got paged in the night. Cut them some slack and be nice.
* Don't acknowledge an incident out from under someone else. If you didn't get paged for the incident, then you shouldn't be acknowledging it. Add a comment with your notes instead.
![Acknowledging](../assets/img/misc/ack.png)
* If you are testing something, or performing an action that you know will cause a page (notification, alert), it's customary to "take the pager" for the time during which you will be testing. Notify the person on-call that you are taking the pager for the next hour while you test.
* "Never hesitate to escalate" - Never feel ashamed to rope in someone else if you're not sure how to resolve an issue. Likewise, never look down on someone else if they ask you for help.
* Always consider covering an hour or so of someone else's on-call time if they request it and you are able. We all have lives which might get in the way of on-call time, and one day it might be you who needs to swap their on-call time in order to have a night out with your friend from out of town.
* If an issue comes up during your on-call shift for which you got paged, you are responsible for resolving it. Even if it takes 3 hours and there's only 1 hour left of your shift. You can hand over to the next on-call if they agree, but you should never assume that's possible.

View File

@ -0,0 +1,57 @@
So you want to be a deputy? You've come to the right place!
![Deputy](../assets/img/headers/incident_command_support.jpg)
*Credit: [oregondot @ Flickr](https://www.flickr.com/photos/oregondot/8743801731/in/album-72157633494644719/)*
## Purpose
The purpose of the Deputy is to support the IC by keeping track of timers, notifying the IC of important information, and paging other people as directed by the IC.
It's important for the IC to focus on the problem at hand, rather than worrying about monitoring timers. The deputy is there to help support the IC and keep them focussed on the incident.
As a Deputy, you will be expected to take over command from the IC if they request it.
**You should not be performing any remediations, checking graphs, or investigating logs**. Those tasks will be delegated to the resolvers by the IC.
## Prerequisites
Before you can be a Deputy, it is expected that you meet the following criteria. Don't worry if you don't meet them all yet, you can still continue with training!
* Be trained as an [Incident Commander](/training/incident_commander.md).
## Responsibilities
Read up on our [Different Roles for Incidents](/before/different_roles.md) to see what is expected from a Deputy, as well as what we expect from the other roles you'll be interacting with.
## Training Process
The training process for a Deputy is quite simple.
* Follow our [Incident Commander Training](/training/incident_commander.md).
* Read this page.
## Incident Call Procedures and Lingo
The [Steps for Deputy](/during/during_an_incident.md) provide a detailed description of what you should be doing during an incident.
Here are some examples of phrases and patterns you should use during incident calls.
### Keep Track of Responders
As you listen to the call, you should keep track of the responders to the call as you hear them speak. Make a note on a piece of paper, or use the `!ic responders` to see who they are. The IC may ask you who is on-call for a particular system, and you should know the answer, and be able to page them.
> Do we have a representative from [X] on the call?
> (pause)
> Deputy, can you go ahead and page the [X] on-call please.
You can page them however you see fit, phone call, etc.
### Provide Executive Status Updates
Provide regular status updates on Slack (roughly every 30mins), giving an executive summary of the current status during SEV-1 incidents. Keep it short and to the point, and use @here. Mention the current state, the actions in progress, customer impact, and expected time remaining. It's OK to miss out some of those if the information isn't known.
> @here: We are in SEV-1 due to X. Current actions in progress are to do Y. Expecting 3 mins to complete that action. Once action is complete, system should recover on its own within 5 minutes.
### Alert IC to Timers
You are expected to keep track of how long the incident has been running for, and provide callouts to the IC every 10 minutes so they can take actions such as increasing the severity, or asking Support to Tweet out. This is as simple as telling the IC on the call,
> IC, be advised the incident is now at the 10 minute mark.
Similarly, when the IC asks for someone to get back to them in X minutes, you are expected to keep track of that. You should remind the IC when that time has been reached.
> IC, be advised the timer for [TEAM]'s investigation is up.

View File

@ -0,0 +1,14 @@
Ever wonder what all of those strange words you sometimes see in our documentation mean? This page is here to help.
| Term | Description |
| ---- | ----------- |
| **IC / Incident Commander** | The incident commander is the person responsible for bringing any major incident to resolution. They are the highest ranking individual on any major incident call, regardless of their day-to-day rank. Their decisions made as commander are final. [More info](../before/different_roles.md). |
| **Deputy** | Typically the backup IC. The deputy's job is to support the IC during the call, providing them with any help they need. [More info](../before/different_roles.md). |
| **Scribe** | The scribe's job is to keep a log of all activities performed during the call in a written chat log on Slack. [More info](../before/different_roles.md). |
| **Resolver** | A person on the incident call who is able to help resolve issues within a particular system. Also referred to as an SME (see below). [More info](../before/different_roles.md). |
| **SME** | "Subject Matter Expert", someone who is an expert in a particular service or subject who can provide information to the IC, and perform resolution actions for a particular system. [More info](../before/different_roles.md). |
| **CAN Report** | CAN stands for "Conditions" "Actions" "Needs", if an IC asks you for a CAN report, you should provide the current state of your service (condition), what actions need to be taken to return it to a healthy state (actions), and what support you need in order to perform the actions (needs). |
| **Sev / Severity** | How severe the incident is. The "sev" of an incident determines the type of response we give. The higher the severity, the higher the likelihood of making risky actions to resolve the situation. [More info](../before/severity_levels.md). |
| **Span of Control** | Refers to the number of direct reports you have. For example, if the IC has 10 people as direct reports on a call, they have a large span of control. We aim to make the span of control as minimal as we can while still being productive. |
| **Grenade Thrower** | Someone who joins the call at a late time in the game, and provides information that completely derails the current thinking. They then leave almost immediately. |
| **Executive Swoop** | When an executive comes on the call and drops some sort of bombshell. A version of grenade throwing. |

View File

@ -0,0 +1,263 @@
So you want to be an incident commander? You've come to the right place! You don't need to be a senior team member to become an IC, anyone can do it providing you have the requisite knowledge (yes, even an intern)!
![Gene Kranz](../assets/img/headers/gene_kranz.jpg)
*Credit: [NASA](https://en.wikipedia.org/wiki/File:Eugene_F._Kranz_at_his_console_at_the_NASA_Mission_Control_Center.jpg)*
## Purpose
If you could boil down the definition of an Incident Commander to one sentence, it would be,
> Take whatever actions are necessary to protect PagerDuty systems and customers.
The purpose of the Incident Commander is to be the decision maker during an major incident; Delegating tasks and listening to input from subject matter experts in order to bring the incident to resolution.
The Incident Commander becomes the highest ranking individual on any major incident call, regardless of their day-to-day rank. Their decisions made as commander are final.
Your job as an IC is to listen to the call and to watch the incident Slack room in order to provide clear coordination, recruiting others to gather context/details. **You should not be performing any actions or remediations, checking graphs, or investigating logs.** Those tasks should be delegated.
## Prerequisites
Before you can be an Incident Commander, it is expected that you meet the following criteria. Don't worry if you don't meet them all yet, you can still continue with training!
* Has **excellent knowledge of PagerDuty systems** and is able to quickly evaluate good vs bad options, and quickly identify what's actually going on.
* Been at PagerDuty for at least 6 months and has a **solid understanding of the incident notification pipeline and web stack**.
* Excellent verbal and written **communication skills**.
* Has **knowledge of obscure PagerDuty terms**.
* Has gravitas and is **willing to kick people off a call** to remove distractions, even if it's the CEO.
## Responsibilities
Read up on our [Different Roles for Incidents](/before/different_roles.md) to see what is expected from an Incident Commander, as well as what we expect from the other roles you'll be interacting with.
## Qualities
Some qualities we expect from an effective leader include being able to:
* Take command.
* Motivate responders.
* Communicate clear directions.
* Size up the situation and make rapid decisions.
* Assess the effectiveness of tactics/strategies.
* Be flexible and modify your plans as necessary.
As a leader, you should try to:
* Be proficient in your job.
* Make sound and timely decisions.
* Ensure tasks are understood.
* Be prepared to step out of a tactical role to assume a leadership role.
## Training Process
The process is fairly loose for now. Here's a list of things you can do to train though,
* Read the rest of this page, particularly the sections below.
* Participate in [Failure Friday](https://www.pagerduty.com/blog/failure-friday-at-pagerduty/) (FF).
* Shadow a FF to see how it's run.
* Be the scribe for multiple FF's.
* Be the incident commander for multiple FF's.
* Play a game of "[Keep Talking and Nobody Explodes](http://www.keeptalkinggame.com/)" with other people in the office.
* For a more realistic experience, play it with someone in a different office over Hangouts.
* Shadow a current incident commander for at least a full week shift.
* Get alerted when they do, join in on the same calls.
* Sit in on an active incident call, follow along with the chat, and follow along with what the Incident Commander is doing.
* **Do not actively participate in the call, keep your questions until the end.**
* Reverse shadow a current incident commander for at least a full week shift.
* You should be the one to respond to incidents, and you will take point on calls, however the current IC will be there to take over should you not know how to proceed.
## Graduation
What's the difference between an IC in training, and an IC? (This isn't the set up to a joke). Simple, an IC puts themselves on the schedule.
## Handling Incidents
Every incident is different (we're hopefully not repeating the same issue multiple times!), but there's a common process you can apply to each one.
1. **Identify the symptoms.**
* Identify what the symptoms are, how big the issue is, and whether it's escalating/flapping/static.
1. **Size-up the situation.**
* Gather as much information as you can, as quickly as you can (remember the incident is still happening while you're doing this).
* Get the facts, the possibilities of what can happen, and the probability of those things happening.
1. **Stabilize the incident.**
* Identify actions you can use to proceed.
* Gather support for the plan (See "Polling During a Decision" below).
* Delegate remediation actions to your SME's.
1. **Provide regular updates.**
* Maintain a cadence, and provide regular updates to everyone on the call.
* What's happening, what are we doing about it, etc.
## Deputy
The deputy for an incident is generally the backup Incident Commander. However, as an Incident Commander, you may appoint one or more Deputies. Note that Deputy Incident Commanders must be as qualified as the Incident Commander, and that if a Deputy is assigned, he or she must be fully qualified to assume the Incident Commanders position if required.
## Communication Responsibilities
Sharing information during an incident is a critical process. As an Incident Commander (or Deputy), you should be prepared to brief others as necessary. You will also be required to communicate your intentions and decisions clearly so that there is no ambiguity in your commands.
When given information from a responder, you should clearly acknowledge that you have received and understood their message, so that the responder can be confident in moving on to other tasks.
After an incident, you should communicate with other training Incident Commanders on any debrief actions you feel are necessary.
## Incident Call Procedures and Lingo
The [Steps for Incident Commander](/during/during_an_incident.md) provide a detailed description of what you should be doing during an incident.
Additionally, aside from following the [usual incident call etiquette](/before/call_etiquette.md), there a few extra etiquette guidelines you should follow as IC:
* Always announce when you join the call if you are the on-call IC.
* Don't let discussions get out of hand. Keep conversations short.
* Note objections from others, but your call is final.
* If anyone is being actively disruptive to your call, kick them off.
* Announce the end of the call.
Here are some examples of phrases and patterns you should use during incident calls.
### Start of Call Announcement
At the start of any major incident call, the incident commander should announce the following,
> This is [NAME], I am the Incident Commander for this call.
This establishes to everyone on the call what your name is, and that you are now the commander. You should state "Incident Commander" and not "IC", as newcomers may not be familiar with the terminology yet. The word "commander" makes it very clear that you're in charge.
### Start of Incident, IC Not Present
If you are trained to be an IC and have joined a call, even if you aren't the IC on-call, you should do the following,
> Is there an IC on the call?
> (pause)
> Hearing no response, this is [NAME], and I am now the Incident Commander for this call.
If the on-call IC joins later, you may hand over to them at your discretion (see below for the hand-off procedure)
### Checking if SME's are Present
During a call, you will want to know who is available from the various teams in order to resolve the incident. Etiquette dictates that people should announce themselves, but sometimes you may be joining late to the call. If you need a representative from a team, just ask on the call. Your deputy can page one if no one answers.
> Do we have a representative from [X] on the call?
> (pause)
> Deputy, can you go ahead and page the [X] on-call please.
### Assigning Tasks
When you need to give out an assignment or task, give it to a person directly, never say "can someone do..." as this leads to the [bystander effect](https://en.wikipedia.org/wiki/Bystander_effect). Instead, all actions should be assigned to a specific person, and time-boxed with a specific number of minutes.
> IC: Bob, please investigate the high latency on web app boxes. I'll come back to you for an answer in 3 minutes.
> Bob: Understood
Keep track of how many minutes you assigned, and check in with that person after that time. You can get help from your deputy to help track the timings.
### Polling During a Decision
If a decision needs to be made, it comes down to the IC. Once the IC makes a decision, it is final. But it's important that no one can come later and object to the plan, saying things like "I knew that would happen". An IC will use very specific language to be sure that doesn't happen.
> The proposal is to [EXPLAIN PROPOSAL]
> Are there any strong objections to this plan?
> (pause)
> Hearing no objects, we are proceeding with this proposal.
If you were to ask "Does everyone agree?", you'd get people speaking over each other, you'd have quiet people not speaking up, etc. Asking for any STRONG objections gives people the chance to object, but only if they feel strongly on the matter.
### Status Updates
It's important to maintain a cadence during a major incident call. Whenever there is a lull in the proceedings, usually because you're waiting for someone to get back to you, you can fill the gap by explaining the current situation and the actions that are outstanding. This makes sure everyone is on the same page.
> While we wait for [X], here's an update of our current situation.
> We are currently in a SEV-1 situation, we believe to be caused by [X]. There's an open question to [Y] who will be getting back to us in 2 minutes. In the meantime, we have Tweeted out that we are experiencing issues. Our next Tweet will be in 10 minutes if the incident is still ongoing at that time.
> Are there any additional actions or proposals from anyone else at this time?
### Transfer of Command
Transfer of command, involves (as the name suggests) transferring command to another Incident Commander. There are multiple reasons why a transfer of command might take place,
* Commander has become fatigued and is unable to continue.
* Incident complexity changes.
* Change of command is necessary for effectiveness or efficiency.
* Personal emergencies arise (e.g., Incident Commander has a family emergency).
Never feel like you are not doing your job properly by handing over. Handovers are encouraged. In order to handover, out of band from the main call (via Slack for example), notify the other IC that you wish to transfer command. Update them with anything you feel appropriate. Then announce on the call,
> Everyone on the call, be advised, at this time I am handing over command to [X].
The new IC should then announce on the call as if they were joining a new call (see above), so that everyone is aware of the new commander.
Note that the arrival of a more qualified person does NOT necessarily mean a change in incident command.
### Maintaining Order
Often times on a call people will be talking over one another, or an argument on the correct way to proceed may break out. As Incident Commander it's important that order is maintained on a call. The Incident Commander has the power to remove someone from the call if necessary (even if it's the CEO). But often times you just need to remind people to speak one at a time. Sometimes the discussion can be healthy even if it starts as an argument, but you shouldn't let it go on for too long.
> (noise)
> Ok everyone, can we all speak one at a time please. So far I'm hearing two options to proceed: 1) [X], 2) [Y].
> Are there any other proposals someone would like to make at this time?
> ...etc
### Getting Straight Answers
You may ask a question as IC and receive an answer that doesn't actually answer your question. This is generally when you ask for a yes/no answer but get a more detailed explanation. This can often times be because the person doesn't understand the call etiquette. But if it continues, you need to take action in order to proceed.
> IC: Is this going to disable the service for everyone?
> SME: Well... for some people it....
> IC: Stop. I need a yes/no answer. Is this going to disable the service for everyone?
> SME: Well... it might not do...
> IC: Stop. I'm going to ask again, and the only two words I want to hear from you are "yes" or "no. If this going to disable the service for everyone?
> SME: Well.. like I was saying..
> IC: Stop. Leave the call. Backup IC can you please page the backup on-call for [service] so that we can get an answer.
### Executive Swoop
You may get someone who would be senior to you during peacetime come on the call and start overriding your decisions as IC. This is unacceptable behaviour during wartime, as the IC is in command. While this is rare, you can get things back on track with the following,
> Executive: No, I don't want us doing that. Everyone stop. We need to rollback instead.
> IC: Hold please. [EXECUTIVE], do you wish to take over command?
> Executive: Yes/No
> (If yes) IC: Understood. Everyone on the call, be advised, at this time I am handling over command to [EXECUTIVE]. They are now the incident commander for this call.
> (If no) IC: In that case, please cause no further interruptions or I will remove you from the call.
This makes it clear to the executive that they have the option of being in charge and making decisions, but in order to do so they must continue as an Incident Commander. If they refuse, then remind them that you are in charge and disruptive interruptions will not be tolerated. If they continue, remove them from the call.
### End of Call Sign-Off
At the end of an incident, you should announce to everyone on the call that you are ending the call at this time, and provide information on where followup discussion can take place. It's also customary to thank everyone.
> Ok everyone, we're ending the call at this time. Please continue any followup discussion on Slack. Thanks everyone.
## Examples From Pop Culture
PagerDuty employees have access to all previous incident calls, and can listen to them at their discretion. We can't release these calls, so for everyone else, here are some short examples from popular culture to show the techniques at work.
---
<iframe width="560" height="315" src="https://www.youtube.com/embed/gmLgi5mdTVo" frameborder="0" allowfullscreen></iframe>
Here's a clip from the movie Apollo 13, where Gene Kranz (Flight Director / Incident Commander) shows some great examples of Incident Command. Here are some things to note:
* Walks into the room, and immediately obvious that he's the IC. Calms the noise, and makes sure everyone is paying attention.
* Provides a status update so people are aware of the situation.
* Projector breaks, doesn't get sidetracked on fixing it, just moves on to something else.
* Provides a proposal for how to proceed and elicits feedback.
* Listens to the feedback calmly.
* When counter-proposal is raised, states that he agrees and why.
* Allows a discussion to happen, listens to all points. When discussion gets out of hand, re-asserts command of the situation.
* Explains his decision, and why.
* Explains his full plan and decision, so everyone is on the same page.
---
<iframe width="560" height="315" src="https://www.youtube.com/embed/KhoXFVQsIxw" frameborder="0" allowfullscreen></iframe>
Another clip from Apollo 13. Things to note:
* Summarizes the situation, and states the facts.
* Listens to the feedback from various people.
* When a trusted SME provides information counter to what everyone else is saying, asks for additional clarification ("What do you mean, everything?")
* Wise cracking remarks are not acknowledged by the IC ("You can't run a vacuum cleaner on 12 amps!")
* "That's the deal?".. "That's the deal".
* Once decision is made, moves on to the next discussion.
* Delegates tasks.

View File

@ -0,0 +1,22 @@
Learning about the Spearhead Systems incident response process is an important part of being an effective on-call engineer at Spearhead Systens. This section goes over our training material for the various roles that are involved in our incident response, along with some additional information and training material from government agencies.
## Training Guides
Our training guides are split up by role, however you are encouraged to read through the training guides even for roles you don't belong to, as it can give you some good insight into how those people will be behaving during major incidents.
* [Incident Commander Training](/training/incident_commander.md) - The "IC" is the person who drives a major incident to resolution. They're the person who will be directing everyone else.
* [Deputy Training](/training/deputy.md) - The Deputy is someone who supports the Incident Commander and can take over for them if necessary.
* [Scribe Training](/training/scribe.md) - This is intended for individuals who will be acting as a scribe during an incident.
* [SME / Resolver Training](/training/subject_matter_expert.md) - This is relevant to everyone at Spearhead Systems who are on-call for any team.
## National Incident Management System (NIMS)
Our incident response process is loosely based on the [US National Incident Management System (NIMS)](https://www.fema.gov/national-incident-management-system), which is described as,
_A systematic, proactive approach to guide departments and agencies at all levels of government, nongovernmental organizations, and the private sector to work together seamlessly and manage incidents involving all threats and hazards—regardless of cause, size, location, or complexity—in order to reduce loss of life, property and harm to the environment._
While it might not initially seem that this would be applicable to an IT operations environment, we've found that many of the lessons learned from major incidents in these situations can be directly applied to our industry too. The principles are the same and span many different environments.
[![NIMS](../assets/img/thumbnails/nims_core.png)](https://www.fema.gov/pdf/emergency/nims/NIMS_core.pdf) [![NIMS Training](../assets/img/thumbnails/nims_training.png)](https://www.fema.gov/pdf/emergency/nims/nims_training_program.pdf)
If you want to learn more about NIMS, we recommend the [ICS-100](https://training.fema.gov/is/courseoverview.aspx?code=IS-100.b) and [ICS-700](https://training.fema.gov/is/courseoverview.aspx?code=IS-700.a) online training courses, which go over NIMS and the Incident Command System (You can also take an online examination after training in order to get a certificate from FEMA). There is also a wealth of [additional training material and courses from FEMA](https://training.fema.gov/nims/) on NIMS, which I would encourage you to look at.
Also take a look at the [Additional Reading](/#additional-reading) section on the home page.

View File

@ -0,0 +1,75 @@
So you want to be a scribe? You've come to the right place! You don't need to be a senior team member to become a deputy or scribe, anyone can do it providing you have the requisite knowledge!
![Typewriter](../assets/img/headers/typewriter.jpg)
*Credit: [Holly Chaffin](http://www.publicdomainpictures.net/view-image.php?image=49706&picture=antique-typewriter-keys)*
## Purpose
The purpose of the Scribe is to maintain a timeline of key events during an incident. Documenting actions, and keeping track of any followup items that will need to be addressed.
It's important for the rest of the command staff to be able to focus on the problem at hand, rather than worrying about documenting the steps.
Your job as Scribe is to listen to the call and to watch the incident Slack room, keeping track of context and actions that need to be performed, documenting these in Slack as you go. **You should not be performing any remediations, checking graphs, or investigating logs.** Those tasks will be delegated to the subject matter experts (SME's) by the Incident Commander.
## Prerequisites
Before you can be a Scribe, it is expected that you meet the following criteria. Don't worry if you don't meet them all yet, you can still continue with training!
* Excellent verbal and written **communication skills**.
* Has **knowledge of obscure PagerDuty terms**.
## Responsibilities
Read up on our [Different Roles for Incidents](/before/different_roles.md) to see what is expected from a Scribe, as well as what we expect from the other roles you'll be interacting with.
## Training Process
There is no formal training process for this role, reading this page should be sufficient for most tasks. Here's a list of things you can do to train though,
* Read the rest of this page, particularly the sections below.
* Participate in [Failure Friday](https://www.pagerduty.com/blog/failure-friday-at-pagerduty/) (FF).
* Shadow a FF to see how it's run.
* Be the scribe for multiple FF's.
## Scribing
Scribing is more art than science. The objective is to keep an accurate record of important events that occurred on the call, so that we can look back at the timeline to see what happened. But what exactly is important? There's no overwhelming answer, and it really comes down the judgement and experience. But here are some general things you most definitely want to capture as scribe.
* The result of any polling decisions.
* <span class="bad">&#x2718;</span> This is not "9 people voted yay, 3 voted nay".
* <span class="good">&#x2713;</span> It is "Polled for if we should do rolling restart. <USER_A> is proceeding with restart."
* Any followup items that are called out as "We should do this..", "Why didn't this?..", etc.
* <span class="bad">&#x2718;</span> This is not "Why isn't the Support representative on the call?"
* <span class="good">&#x2713;</span> This is "TODO: Why didn't we get paged for this earlier?"
## Incident Call Procedures and Lingo
The [Steps for Scribe](/during/during_an_incident.md) provide a detailed description of what you should be doing during an incident.
Here are some examples of phrases and patterns you should use during incident calls.
### Status Stalking
At the start of any major incident call, you should start our status stalking bot, so that it will post to the room an update automatically.
> !status stalk
This will provide the update and allow the IC to see the status without having to keep asking.
### Note Important Actions
During a call, you will hear lots of discussion happening, you should not be documenting all of this in the chat room. You only want to document things which will be important for the final timeline. It's not always obvious what this might be, and it's usually a matter of judgement. You generally want to note any actions the IC has asked someone to perform, along with the result of any polling decisions.
> Polled for decision on whether to perform rolling restart. We are proceeding with restart. [USER_A] to execute.
Some actions might seem important at the time, but end up not being. That's OK. It's better to have more info than not enough, but don't go overboard.
### Note Followup Actions
Sometimes during the call, someone will either mention something we "should fix", or the IC will specifically ask you to note a followup item. You can do this in Slack by simply prefixing with "TODO", this will make it easier to search for later.
> TODO: Why did we not get paged for the fall in traffic on [X] cluster?
The post-mortem owner will find these after and raise tasks for them.
### End of Call Notification
When the IC ends the call, you should post a message into Slack to let everyone know the call is over, and that they should continue discussion elsewhere.
> Call is over, thanks everyone. Follow up in Slack.
Don't forget to also stop the status stalking.
> !status unstalk

View File

@ -0,0 +1,54 @@
If you are on-call for any team at PagerDuty, you may be paged for a major incident and will be expected to respond as a subject matter expert (SME) for your service. This page details everything you need to know in order to be prepared for that responsibility. If you are interested in becoming an Incident Commander, take a look at the [Incident Commander Training page](/training/incident_commander.md).
![Incident Response](../assets/img/headers/incident_response.jpg)
*Credit: [oregondot @ Flickr](https://www.flickr.com/photos/oregondot/8743809853/in/album-72157633494644719/)*
## On-Call Expectations
If you are on-call for your team, there are certain expectations of you as that on-call. This applies to both the primary and secondary on-calls. Getting paged about a SEV-3 or SEV-4 in your system comes with different expectations than getting paged with a major SEV-2.
### Before Going On-Call
1. Be prepared, by having already familiarized yourself with our incident response policies and procedures. In particular,
1. [Different Roles for Incidents](/before/different_roles.md) - You will be acting as a "Resolver" or "SME". But you should familiarize yourself with the other roles and what they will be doing.
1. [Incident Call Etiquette](/before/call_etiquette.md) - How to behave during an incident call.
1. [During an Incident](/during/during_an_incident.md) - What to do during an incident. You are specifically interested in the "Resolver" steps, but you should familiarize yourself with the entire document.
1. [Glossary](/training/glossary.md) - Familiarize yourself with the terminology that may be used during the call.
1. Make sure you have set up your alerting methods, and that PagerDuty can bypass your "Do Not Disturb" settings.
1. Check you can join the incident call. You may need to install a browser plugin. You don't want to be doing that the first time you get paged.
1. Be aware of your upcoming on-call time and arrange swaps around travel, vacations, appointments, etc.
1. If you are an Incident Commander, make sure you are not on-call for your team at the same time as being on-call as Incident Commander.
### During On-Call Period
1. Have your laptop and Internet with you at all times during your on-call period (office, home, a MiFi, a phone with a tethering plan, etc).
1. If you have important appointments, you need to get someone else on your team to cover that time slot in advance.
1. When you receive an alert for a major incident, you are expected to join the incident call and Slack as quickly as possible (within minutes).
1. You will be asked questions or given actions by the Incident Commander. Answer questions concisely, and follow all actions given (even if you disagree with them).
## Response Mobilization
When an incident occurs, you must be mobilized or assigned to become part of the incident response. In other words, until you are mobilized to the incident via a page or being directly asked by someone else on the incident, you remain in your everyday role. After being mobilized, your first task is to check in and receive an assignment. While it's tempting to see an incident happening and want to jump in and help, when resources show up that have not been requested, the management of the incident can be compromised.
## "Never Hesitate to Escalate"
If you're not sure about something, it is perfectly acceptable to bring in other SMEs from your team that you believe know a given system better than you. Don't let your ego keep you from bringing in additional help. Our motto is "Never hesitate to escalate", you will never be looked down upon for escalating something because you didn't know how to handle it.
## Blameless
There will be incidents. Some will be caused by you, some will be caused by others... some will just happen. Our entire incident response process is completely blameless. Blaming people is counter productive and just distracts from the problem at hand. No matter how an incident started, they all need to get solved as quickly as possible.
## Wartime vs Peacetime
Behavior during a major incident is very different to any other alert you may have received in the past. We call a major incident "wartime", and make a distinction between that and normal everyday operations ("peacetime").
### Peacetime
The organizational structure is generally based on seniority. The more senior members of a team will lead discussions, and managers or team leads will have the final say. Decisions are made after careful consideration of all options, and to minimize potential risk to customers.
### Wartime
Wartime is different, and you will notice on our major incident calls that there's a different organizational structure.
* The Incident Commander is in charge. No matter their rank during peacetime, they are now the highest ranked individual on the call, higher than the CEO.
* Primary responders (folks acting as primary on-call for a team/service) are the highest ranked individuals for that service.
* Decisions will be made by the IC after consideration of the information presented. Once that decision is made, it is final.
* Riskier decisions can be made by the IC than would normally be considered during peacetime.
* For example, the IC may decide to drop events for a particular customer in order to maintain the integrity of the system for everyone else.
* The IC may go against a consensus decision. If a poll is done, and 9/10 people agree but 1 disagrees. The IC may choose the disagreement option despite a majority vote.
* Even if you disagree, the IC's decision is final. During the call is not the time to argue with them.
* The IC may use language or behave in a way you find rude. This is wartime, and they need to do whatever it takes to resolve the situation, so sometimes rudeness occurs. This is never anything personal, and something you should be prepared to experience if you've never been in a wartime situation before.
* You may be asked to leave the call by the IC, or you may even be forceable kicked off a call. It is at the IC's discretion to do this if they feel you are not providing useful input. Again, this is nothing personal and you should remember that wartime is different than peacetime.

65
_site/mkdocs.yml Normal file
View File

@ -0,0 +1,65 @@
# Project Information
site_name: Spearhead Systems Incident Response Documentation
site_description: A collection of information about the Spearhead Systems incident response process. Not only how to prepare new employees for on-call responsibilities, but also how to handle major incidents, both in preparation and after-work.
site_author: Spearhead Systems, Inc.
site_favicon: 'assets/img/icon.png'
site_url: https://response.spearhead.systems
base_url: https://response.spearhead.systems
# Repository
repo_name: 'GitHub'
repo_url: https://github.com/spearheadsys/issue-response-docs
# Copyright
copyright: 'Copyright &copy; Spearhead Systems, Inc.'
# Theme
theme: 'material'
theme_dir: 'theme'
extra_css: ['assets/css/extra.css']
extra:
logo: 'issue-response-docs/assets/img/icon.png'
cover: 'assets/img/cover.png'
palette:
primary: 'green'
accent: 'blue grey'
font:
text: 'Colfax Regular'
code: 'Roboto Mono'
author:
github: 'spearheadsys'
twitter: 'spearhead_sys'
# Contents
pages:
- Home: 'index.md'
- On-Call:
- Being On-Call: 'oncall/being_oncall.md'
- Alerting Principles: 'oncall/alerting_principles.md'
- Before an Incident:
- Severity Levels: 'before/severity_levels.md'
- Different Roles: 'before/different_roles.md'
- Call Etiquette: 'before/call_etiquette.md'
- During an Incident:
- During An Incident: 'during/during_an_incident.md'
- Security Incident: 'during/security_incident_response.md'
- After an Incident:
- Post-Mortem Process: 'after/post_mortem_process.md'
- Post-Mortem Template: 'after/post_mortem_template.md'
- Training:
- Overview: 'training/overview.md'
- Incident Commander: 'training/incident_commander.md'
- Deputy: 'training/deputy.md'
- Scribe: 'training/scribe.md'
- Subject Matter Expert: 'training/subject_matter_expert.md'
- Glossary: 'training/glossary.md'
- About: 'about.md'
# Analytics
# google_analytics: ['UA-8759953-1', 'auto']
# Extensions
markdown_extensions:
- toc(permalink=#)
- sane_lists:
- admonition:

BIN
_site/screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

15
_site/theme/404.html Normal file
View File

@ -0,0 +1,15 @@
{% extends "base.html" %}
{# mkdocs-material doesn't use content as a block, so cheating and using footer here, as that does use a block #}
{% block footer %}
<section id="error">
<h1>Sorry! We couldn't find that page.</h1>
<p>Looks like our well-trained server monkeys dropped the ball. Rest assured they will be dealt with. In the meantime, you probably want to <a href="/">head home</a>.
</section>
<footer class="footer">
{% include "footer.html" %}
</footer>
{% endblock %}

196
_site/theme/base.html Normal file
View File

@ -0,0 +1,196 @@
<!DOCTYPE html>
<!--[if lt IE 7 ]><html class="no-js ie6"><![endif]-->
<!--[if IE 7 ]><html class="no-js ie7"><![endif]-->
<!--[if IE 8 ]><html class="no-js ie8"><![endif]-->
<!--[if IE 9 ]><html class="no-js ie9"><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
{% set title = page_title ~ ' - ' ~ site_name if page_title else site_name %}
<title>{{ title }}</title>
<!-- Author and License -->
{% if site_author %}<meta name="author" content="{{ site_author }}" />{% endif %}
<meta name="dcterms.license" content="http://www.apache.org/licenses/LICENSE-2.0" />
<!-- Page Description -->
{% if page_description %}<meta name="description" content="{{ page_description }}">{% endif %}
<meta name="keywords" content="spearhead, incident, response" />
<meta name="robots" content="index, follow, noarchive" />
<!-- Mobile -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
<meta name="theme-color" content="#1f293a" />
<!-- Canonical Link -->
{% if canonical_url %}<link rel="canonical" href="{{ canonical_url }}">{% endif %}
<!-- Favicon -->
{% set favicon = favicon | default("assets/images/favicon-e565ddfa3b.ico", true) %}
<link rel="shortcut icon" type="image/x-icon" href="{{ base_url }}/{{ favicon }}" />
<link rel="icon" type="image/x-icon" href="{{ base_url }}/{{ favicon }}" />
<!-- Apple -->
<meta name="apple-mobile-web-app-title" content="{{ site_name }}" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
{% if config.extra.logo %}<link rel="apple-touch-icon" href="{{ base_url }}/{{ config.extra.logo }}">{% endif %}
<!-- Open Graph -->
<meta property="og:url" content="{{ canonical_url }}" />
<meta property="og:title" content="{{ title }}" />
<meta property="og:site_name" content="{{ site_name }}" />
<meta property="og:description" content="{{ config.site_description }}" />
<meta property="og:image" content="{{ site_url }}/{{ config.extra.cover }}" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="website" />
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="{{ title }}" />
<meta name="twitter:description" content="{{ config.site_description }}" />
<meta name="twitter:image" content="{{ site_url }}/{{ config.extra.cover }}" />
<!-- Style -->
<style>
@font-face {
font-family: 'Icon';
src: url('{{ base_url }}/assets/fonts/icon.eot?52m981');
src: url('{{ base_url }}/assets/fonts/icon.eot?#iefix52m981')
format('embedded-opentype'),
url('{{ base_url }}/assets/fonts/icon.woff?52m981')
format('woff'),
url('{{ base_url }}/assets/fonts/icon.ttf?52m981')
format('truetype'),
url('{{ base_url }}/assets/fonts/icon.svg?52m981#icon')
format('svg');
font-weight: normal;
font-style: normal;
}
</style>
<link rel="stylesheet" href="{{ base_url }}/assets/stylesheets/application-a422ff04cc.css">
{% if config.extra.palette %}
<link rel="stylesheet" href="{{ base_url }}/assets/stylesheets/palettes-05ab2406df.css">
{% endif %}
{% if config.extra.font != "none" %}
{% set text = config.extra.get("font", {}).text | default("Ubuntu") %}
{% set code = config.extra.get("font", {}).code | default("Ubuntu Mono") %}
{% set font = text + ':400,700|' + code | replace(' ', '+') %}
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family={{ font }}">
<style>
body, input {
font-family: '{{ text }}', Helvetica, Arial, sans-serif;
}
pre, code {
font-family: '{{ code }}', 'Courier New', 'Courier', monospace;
}
</style>
{% endif %}
{% for path in extra_css %}
<link rel="stylesheet" href="{{ path }}">
{% endfor %}
<!-- Scripts -->
<script src="{{ base_url }}/assets/javascripts/modernizr-4ab42b99fd.js"></script>
{% block extrahead %}{% endblock %}
</head>
{% set palette = config.extra.get("palette", {}) %}
{% set primary = palette.primary | replace(' ', '-') | lower %}
{% set accent = palette.accent | replace(' ', '-') | lower %}
<body class="{% if primary %}palette-primary-{{ primary }}{% endif %} {% if accent %}palette-accent-{{ accent }}{% endif %}">
{% if repo_name == "GitHub" and repo_url %}
{% set repo_id = repo_url | replace("https://github.com/", "") %}
{% if repo_id[-1:] == "/" %}
{% set repo_id = repo_id[:-1] %}
{% endif %}
{% endif %}
<div class="backdrop">
<div class="backdrop-paper"></div>
</div>
<input class="toggle" type="checkbox" id="toggle-drawer">
<input class="toggle" type="checkbox" id="toggle-search">
<label class="toggle-button overlay" for="toggle-drawer"></label>
<header class="header">
{% include "header.html" %}
</header>
<main class="main">
{% set h1 = "\x3ch1 id=" in content %}
<div class="drawer">
{% include "drawer.html" %}
</div>
<article class="article">
<div class="wrapper">
{% if not h1 %}
<h1>{{ page_title | default(site_name, true)}}</h1>
{% endif %}
{{ content }}
<aside class="copyright" role="note">
{% if copyright %}
{{ copyright }} &ndash;
{% endif %}
Documentation built with
<a href="http://www.mkdocs.org" target="_blank">MkDocs</a>
using the
<a href="http://squidfunk.github.io/mkdocs-material/" target="_blank">
Material
</a>
theme.
</aside>
{% block footer %}
<footer class="footer">
{% include "footer.html" %}
</footer>
{% endblock %}
</div>
</article>
<div class="results" role="status" aria-live="polite">
<div class="scrollable">
<div class="wrapper">
<div class="meta"></div>
<div class="list"></div>
</div>
</div>
</div>
</main>
<script>
var base_url = '{{ base_url }}';
var repo_id = '{{ repo_id }}';
</script>
<script src="{{ base_url }}/assets/javascripts/application-997097ee0c.js"></script>
{% for path in extra_javascript %}
<script src="{{ path }}"></script>
{% endfor %}
{% if google_analytics %}
<script>
/* Google Analytics */
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', '{{ google_analytics[0] }}', '{{ google_analytics[1] }}');
ga('send', 'pageview');
/* Track outbound links */
var buttons = document.querySelectorAll('a');
Array.prototype.map.call(buttons, function(item) {
if (item.host != document.location.host) {
item.addEventListener('click', function() {
var action = item.getAttribute('data-action') || 'follow';
ga('send', 'event', 'outbound', action, item.href);
});
}
});
/* Register handler to log search on blur */
var query = document.querySelector('.query');
query.addEventListener('blur', function() {
if (this.value) {
var path = document.location.pathname;
ga('send', 'pageview', path + '?q=' + this.value);
}
});
</script>
{% endif %}
</body>
</html>

59
_site/theme/drawer.html Normal file
View File

@ -0,0 +1,59 @@
<nav aria-label="Navigation">
{% set home = repo_url | default("/", true) %}
<a href="{{ home }}" class="project">
<!-- <div class="banner">
{% if config.extra.logo %}
<div class="logo">
<img src="{{ base_url }}/{{ config.extra.logo }}">
</div>
{% endif %}
<div class="name">
<strong>
{{ site_name }}
<span class="version">
{{ config.extra.version }}
</span>
</strong>
{% if repo_id %}
<br>
{{ repo_id }}
{% endif %}
</div>
</div> -->
</a>
<div class="scrollable">
<div class="wrapper">
<!-- {% if repo_name == "GitHub" and repo_url %}
<ul class="repo">
<li class="repo-download">
{% if config.extra.github and config.extra.github.download_release %}
{% set version = config.extra.version | default("../latest") %}
<a href="{{ repo_url }}/releases/tag/{{ version }}" target="_blank" title="Download" data-action="download">
<i class="icon icon-download"></i> Download
</a>
{% else %}
{% set version = config.extra.version | default("master") %}
<a href="{{ repo_url }}/archive/{{ version }}.zip" target="_blank" title="Download" data-action="download">
<i class="icon icon-download"></i> Download
</a>
{% endif %}
</li>
<li class="repo-stars">
<a href="{{ repo_url }}/stargazers" target="_blank" title="Stargazers" data-action="star">
<i class="icon icon-star"></i> Stars
<span class="count">&ndash;</span>
</a>
</li>
</ul>
<hr/>
{% endif %} -->
<div class="toc">
<ul>
{% for nav_item in nav %}
{% include "nav.html" %}
{% endfor %}
</ul>
</div>
</div>
</div>
</nav>

63
_site/theme/header.html Normal file
View File

@ -0,0 +1,63 @@
<nav aria-label="Header">
<div class="bar default">
<div class="button button-menu" role="button" aria-label="Menu">
<label class="toggle-button icon icon-menu" for="toggle-drawer">
<span></span>
</label>
</div>
<div class="stretch">
<div class="mainlogo">
<a href="/" title="Go to homepage.">
<img src="{{ base_url }}/assets/img/logo.png" title="PagerDuty" />
</a>
</div>
<div class="title">
<span class="{% if page_title %}path{% endif %}">
Incident Response
{% if page_title %}<i class="icon icon-link"></i>{% endif %}
</span>
{% if current_page %}
<span class="path">
{% for doc in current_page.ancestors %}
{% if doc.link %}
<a href="{{ doc.link | e }}">{{ doc.title }}</a>
<i class="icon icon-link"></i>
{% else %}
{{ doc.title }} <i class="icon icon-link"></i>
{% endif %}
{% endfor %}
</span>
{% endif %}
{{ page_title | default("", true) }}
</div>
</div>
{% if config.extra.get("author", {}).twitter %}
{% set author = config.extra.author.twitter %}
<div class="button button-twitter" role="button" aria-label="Twitter">
<a href="https://twitter.com/{{ author }}" title="@{{ author }} on Twitter" target="_blank" class="toggle-button icon icon-twitter"></a>
</div>
{% endif %}
{% if config.extra.get("author", {}).github %}
{% set author = config.extra.author.github %}
<div class="button button-github" role="button" aria-label="GitHub">
<a href="https://github.com/{{ author }}" title="@{{ author }} on GitHub" target="_blank" class="toggle-button icon icon-github"></a>
</div>
{% endif %}
<div class="button button-search" role="button" aria-label="Search">
<label class="toggle-button icon icon-search" title="Search" for="toggle-search"></label>
</div>
</div>
<div class="bar search">
<div class="button button-close" role="button" aria-label="Close">
<label class="toggle-button icon icon-back" for="toggle-search"></label>
</div>
<div class="stretch">
<div class="field">
<input class="query" type="text" placeholder="{{ config.extra.get('i18n', {}).search | default('Search') }}" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false">
</div>
</div>
<div class="button button-reset" role="button" aria-label="{{ config.extra.get('i18n', {}).search | default('Search') }}">
<button class="toggle-button icon icon-close" id="reset-search"></button>
</div>
</div>
</nav>

View File

@ -1,548 +0,0 @@
<!DOCTYPE html>
<!--[if lt IE 7 ]><html class="no-js ie6"><![endif]-->
<!--[if IE 7 ]><html class="no-js ie7"><![endif]-->
<!--[if IE 8 ]><html class="no-js ie8"><![endif]-->
<!--[if IE 9 ]><html class="no-js ie9"><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<title>About - Spearhead Systems Incident Response Documentation</title>
<!-- Author and License -->
<meta name="author" content="Spearhead Systems, Inc." />
<meta name="dcterms.license" content="http://www.apache.org/licenses/LICENSE-2.0" />
<!-- Page Description -->
<meta name="keywords" content="spearhead, incident, response" />
<meta name="robots" content="index, follow, noarchive" />
<!-- Mobile -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
<meta name="theme-color" content="#1f293a" />
<!-- Canonical Link -->
<link rel="canonical" href="https://response.spearhead.systems/about/">
<!-- Favicon -->
<link rel="shortcut icon" type="image/x-icon" href="../assets/img/icon.png" />
<link rel="icon" type="image/x-icon" href="../assets/img/icon.png" />
<!-- Apple -->
<meta name="apple-mobile-web-app-title" content="Spearhead Systems Incident Response Documentation" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<link rel="apple-touch-icon" href="../assets/img/icon.png">
<!-- Open Graph -->
<meta property="og:url" content="https://response.spearhead.systems/about/" />
<meta property="og:title" content="About - Spearhead Systems Incident Response Documentation" />
<meta property="og:site_name" content="Spearhead Systems Incident Response Documentation" />
<meta property="og:description" content="A collection of information about the Spearhead Systems incident response process. Not only how to prepare new employees for on-call responsibilities, but also how to handle major incidents, both in preparation and after-work." />
<meta property="og:image" content="https://response.spearhead.systems/assets/img/cover.png" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="website" />
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="About - Spearhead Systems Incident Response Documentation" />
<meta name="twitter:description" content="A collection of information about the Spearhead Systems incident response process. Not only how to prepare new employees for on-call responsibilities, but also how to handle major incidents, both in preparation and after-work." />
<meta name="twitter:image" content="https://response.spearhead.systems/assets/img/cover.png" />
<!-- Style -->
<style>
@font-face {
font-family: 'Icon';
src: url('../assets/fonts/icon.eot?52m981');
src: url('../assets/fonts/icon.eot?#iefix52m981')
format('embedded-opentype'),
url('../assets/fonts/icon.woff?52m981')
format('woff'),
url('../assets/fonts/icon.ttf?52m981')
format('truetype'),
url('../assets/fonts/icon.svg?52m981#icon')
format('svg');
font-weight: normal;
font-style: normal;
}
</style>
<link rel="stylesheet" href="../assets/stylesheets/application-a422ff04cc.css">
<link rel="stylesheet" href="../assets/stylesheets/palettes-05ab2406df.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Colfax Regular:400,700|Roboto+Mono">
<style>
body, input {
font-family: 'Colfax Regular', Helvetica, Arial, sans-serif;
}
pre, code {
font-family: 'Roboto Mono', 'Courier New', 'Courier', monospace;
}
</style>
<link rel="stylesheet" href="../assets/css/extra.css">
<!-- Scripts -->
<script src="../assets/javascripts/modernizr-4ab42b99fd.js"></script>
</head>
<body class="palette-primary-green palette-accent-blue-grey">
<div class="backdrop">
<div class="backdrop-paper"></div>
</div>
<input class="toggle" type="checkbox" id="toggle-drawer">
<input class="toggle" type="checkbox" id="toggle-search">
<label class="toggle-button overlay" for="toggle-drawer"></label>
<header class="header">
<nav aria-label="Header">
<div class="bar default">
<div class="button button-menu" role="button" aria-label="Menu">
<label class="toggle-button icon icon-menu" for="toggle-drawer">
<span></span>
</label>
</div>
<div class="stretch">
<div class="mainlogo">
<a href="/" title="Go to homepage.">
<img src="../assets/img/logo.png" title="PagerDuty" />
</a>
</div>
<div class="title">
<span class="path">
Incident Response
<i class="icon icon-link"></i>
</span>
<span class="path">
</span>
About
</div>
</div>
<div class="button button-twitter" role="button" aria-label="Twitter">
<a href="https://twitter.com/spearhead_sys" title="@spearhead_sys on Twitter" target="_blank" class="toggle-button icon icon-twitter"></a>
</div>
<div class="button button-github" role="button" aria-label="GitHub">
<a href="https://github.com/spearheadsys" title="@spearheadsys on GitHub" target="_blank" class="toggle-button icon icon-github"></a>
</div>
<div class="button button-search" role="button" aria-label="Search">
<label class="toggle-button icon icon-search" title="Search" for="toggle-search"></label>
</div>
</div>
<div class="bar search">
<div class="button button-close" role="button" aria-label="Close">
<label class="toggle-button icon icon-back" for="toggle-search"></label>
</div>
<div class="stretch">
<div class="field">
<input class="query" type="text" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false">
</div>
</div>
<div class="button button-reset" role="button" aria-label="Search">
<button class="toggle-button icon icon-close" id="reset-search"></button>
</div>
</div>
</nav>
</header>
<main class="main">
<div class="drawer">
<nav aria-label="Navigation">
<a href="https://github.com/spearheadsys/issue-response-docs" class="project">
<div class="banner">
<div class="logo">
<img src="../assets/img/icon.png">
</div>
<div class="name">
<strong>
Spearhead Systems Incident Response Documentation
<span class="version">
</span>
</strong>
<br>
spearheadsys/issue-response-docs
</div>
</div>
</a>
<div class="scrollable">
<div class="wrapper">
<ul class="repo">
<li class="repo-download">
<a href="https://github.com/spearheadsys/issue-response-docs/archive/master.zip" target="_blank" title="Download" data-action="download">
<i class="icon icon-download"></i> Download
</a>
</li>
<li class="repo-stars">
<a href="https://github.com/spearheadsys/issue-response-docs/stargazers" target="_blank" title="Stargazers" data-action="star">
<i class="icon icon-star"></i> Stars
<span class="count">&ndash;</span>
</a>
</li>
</ul>
<hr/>
<div class="toc">
<ul>
<li>
<a class="" title="Home" href="..">
Home
</a>
</li>
<li>
<span class="section">On-Call</span>
<ul>
<li>
<a class="" title="Being On-Call" href="../oncall/being_oncall/">
Being On-Call
</a>
</li>
<li>
<a class="" title="Alerting Principles" href="../oncall/alerting_principles/">
Alerting Principles
</a>
</li>
</ul>
</li>
<li>
<span class="section">Before an Incident</span>
<ul>
<li>
<a class="" title="Severity Levels" href="../before/severity_levels/">
Severity Levels
</a>
</li>
<li>
<a class="" title="Different Roles" href="../before/different_roles/">
Different Roles
</a>
</li>
<li>
<a class="" title="Call Etiquette" href="../before/call_etiquette/">
Call Etiquette
</a>
</li>
</ul>
</li>
<li>
<span class="section">During an Incident</span>
<ul>
<li>
<a class="" title="During An Incident" href="../during/during_an_incident/">
During An Incident
</a>
</li>
<li>
<a class="" title="Security Incident" href="../during/security_incident_response/">
Security Incident
</a>
</li>
</ul>
</li>
<li>
<span class="section">After an Incident</span>
<ul>
<li>
<a class="" title="Post-Mortem Process" href="../after/post_mortem_process/">
Post-Mortem Process
</a>
</li>
<li>
<a class="" title="Post-Mortem Template" href="../after/post_mortem_template/">
Post-Mortem Template
</a>
</li>
</ul>
</li>
<li>
<span class="section">Training</span>
<ul>
<li>
<a class="" title="Overview" href="../training/overview/">
Overview
</a>
</li>
<li>
<a class="" title="Incident Commander" href="../training/incident_commander/">
Incident Commander
</a>
</li>
<li>
<a class="" title="Deputy" href="../training/deputy/">
Deputy
</a>
</li>
<li>
<a class="" title="Scribe" href="../training/scribe/">
Scribe
</a>
</li>
<li>
<a class="" title="Subject Matter Expert" href="../training/subject_matter_expert/">
Subject Matter Expert
</a>
</li>
<li>
<a class="" title="Glossary" href="../training/glossary/">
Glossary
</a>
</li>
</ul>
</li>
<li>
<a class="current" title="About" href="./">
About
</a>
<ul>
<li class="anchor">
<a title="What is this?" href="#what-is-this">
What is this?
</a>
</li>
<li class="anchor">
<a title="Who is this for?" href="#who-is-this-for">
Who is this for?
</a>
</li>
<li class="anchor">
<a title="Why do I need it?" href="#why-do-i-need-it">
Why do I need it?
</a>
</li>
<li class="anchor">
<a title="What is covered?" href="#what-is-covered">
What is covered?
</a>
</li>
<li class="anchor">
<a title="What is missing?" href="#what-is-missing">
What is missing?
</a>
</li>
<li class="anchor">
<a title="License" href="#license">
License
</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</nav>
</div>
<article class="article">
<div class="wrapper">
<h1>About</h1>
<p>This site documents parts of the Spearhead Systems Issue Response process. It is a cut-down version of our internal documentation, used at Spearhead Systems for any incident or service request, and to prepare new employees for on-call responsibilities. It provides information not only on preparation but also what to do during and after.</p>
<p>Few companies seem to talk about their internal processes for dealing with major incidents. We would like to change that by opening up our documentation to the community, in the hopes that it proves useful to others who may want to formalize their own processes. Additionally, it provides an opportunity for others to suggest improvements, which ends up helping everyone.</p>
<p>This documentation is complementary to what is available in our <a href="https://sphsys.sharepoint.com">existing wiki</a>.</p>
<h2 id="what-is-this">What is this?<a class="headerlink" href="#what-is-this" title="Permanent link">#</a></h2>
<p>A collection of pages detailing how to efficiently deal with any incident or service request that might arise, along with information on how to go on-call effectively. It provides lessons learned the hard way, along with training material for getting you up to speed quickly.</p>
<h2 id="who-is-this-for">Who is this for?<a class="headerlink" href="#who-is-this-for" title="Permanent link">#</a></h2>
<p>It is intended for on-call practitioners and those involved in an operational incident or service request response process, or those wishing to enact a formal incident response process. Specifically this is for all of our Technical Support staff.</p>
<h2 id="why-do-i-need-it">Why do I need it?<a class="headerlink" href="#why-do-i-need-it" title="Permanent link">#</a></h2>
<p>As a service provider Spearhead Systems deals with service requests on a daily basis. The reason we exist is to deliver a service which in most cases boils down to incidents and service requests. We want to deliver a smooth and seamless experience for resolving our customers issues therefore this documentation is a guideline for how we handle these requests. This documentation will allow you give you a head start on how to deal with issues in a way which leads to the fastest possible recovery time.</p>
<h2 id="what-is-covered">What is covered?<a class="headerlink" href="#what-is-covered" title="Permanent link">#</a></h2>
<p>Anything from preparing to <a href="../oncall/being_oncall/">go on-call</a>, definitions of <a href="../before/severity_levels/">severities</a>, incident <a href="../before/call_etiquette/">call etiquette</a>, all the way to how to run a <a href="../after/post_mortem_process/">post-mortem</a>, providing a <a href="../after/post_mortem_template/">post-mortem template</a> and even a <a href="../during/security_incident_response/">security incident response process</a>.</p>
<h2 id="what-is-missing">What is missing?<a class="headerlink" href="#what-is-missing" title="Permanent link">#</a></h2>
<p>Lots, dig in an help us complete the picture. We can migrate most processes from Sharepoint here.</p>
<h2 id="license">License<a class="headerlink" href="#license" title="Permanent link">#</a></h2>
<p>This documentation is provided under the Apache License 2.0. In plain English that means you can use and modify this documentation and use it both commercially and for private use. However, you must include any original copyright notices, and the original LICENSE file.</p>
<p>Whether you are a Spearhead Systems customer or not, we want you to have the ability to use this documentation internally at your own company. You can view the source code for all of this documentation on our GitHub account, feel free to fork the repository and use it as a base for your own internal documentation.</p>
<aside class="copyright" role="note">
Copyright &copy; Spearhead Systems, Inc. &ndash;
Documentation built with
<a href="http://www.mkdocs.org" target="_blank">MkDocs</a>
using the
<a href="http://squidfunk.github.io/mkdocs-material/" target="_blank">
Material
</a>
theme.
</aside>
<footer class="footer">
<nav class="pagination" aria-label="Footer">
<div class="previous">
<a href="../training/glossary/" title="Glossary">
<span class="direction">
Previous
</span>
<div class="page">
<div class="button button-previous" role="button" aria-label="Previous">
<i class="icon icon-back"></i>
</div>
<div class="stretch">
<div class="title">
Glossary
</div>
</div>
</div>
</a>
</div>
<div class="next">
</div>
</nav>
</footer>
</div>
</article>
<div class="results" role="status" aria-live="polite">
<div class="scrollable">
<div class="wrapper">
<div class="meta"></div>
<div class="list"></div>
</div>
</div>
</div>
</main>
<script>
var base_url = '..';
var repo_id = 'spearheadsys/issue-response-docs';
</script>
<script src="../assets/javascripts/application-997097ee0c.js"></script>
</body>
</html>

View File

@ -1,672 +0,0 @@
<!DOCTYPE html>
<!--[if lt IE 7 ]><html class="no-js ie6"><![endif]-->
<!--[if IE 7 ]><html class="no-js ie7"><![endif]-->
<!--[if IE 8 ]><html class="no-js ie8"><![endif]-->
<!--[if IE 9 ]><html class="no-js ie9"><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Post-Mortem Process - Spearhead Systems Incident Response Documentation</title>
<!-- Author and License -->
<meta name="author" content="Spearhead Systems, Inc." />
<meta name="dcterms.license" content="http://www.apache.org/licenses/LICENSE-2.0" />
<!-- Page Description -->
<meta name="keywords" content="spearhead, incident, response" />
<meta name="robots" content="index, follow, noarchive" />
<!-- Mobile -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
<meta name="theme-color" content="#1f293a" />
<!-- Canonical Link -->
<link rel="canonical" href="https://response.spearhead.systems/after/post_mortem_process/">
<!-- Favicon -->
<link rel="shortcut icon" type="image/x-icon" href="../../assets/img/icon.png" />
<link rel="icon" type="image/x-icon" href="../../assets/img/icon.png" />
<!-- Apple -->
<meta name="apple-mobile-web-app-title" content="Spearhead Systems Incident Response Documentation" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<link rel="apple-touch-icon" href="../../assets/img/icon.png">
<!-- Open Graph -->
<meta property="og:url" content="https://response.spearhead.systems/after/post_mortem_process/" />
<meta property="og:title" content="Post-Mortem Process - Spearhead Systems Incident Response Documentation" />
<meta property="og:site_name" content="Spearhead Systems Incident Response Documentation" />
<meta property="og:description" content="A collection of information about the Spearhead Systems incident response process. Not only how to prepare new employees for on-call responsibilities, but also how to handle major incidents, both in preparation and after-work." />
<meta property="og:image" content="https://response.spearhead.systems/assets/img/cover.png" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="website" />
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Post-Mortem Process - Spearhead Systems Incident Response Documentation" />
<meta name="twitter:description" content="A collection of information about the Spearhead Systems incident response process. Not only how to prepare new employees for on-call responsibilities, but also how to handle major incidents, both in preparation and after-work." />
<meta name="twitter:image" content="https://response.spearhead.systems/assets/img/cover.png" />
<!-- Style -->
<style>
@font-face {
font-family: 'Icon';
src: url('../../assets/fonts/icon.eot?52m981');
src: url('../../assets/fonts/icon.eot?#iefix52m981')
format('embedded-opentype'),
url('../../assets/fonts/icon.woff?52m981')
format('woff'),
url('../../assets/fonts/icon.ttf?52m981')
format('truetype'),
url('../../assets/fonts/icon.svg?52m981#icon')
format('svg');
font-weight: normal;
font-style: normal;
}
</style>
<link rel="stylesheet" href="../../assets/stylesheets/application-a422ff04cc.css">
<link rel="stylesheet" href="../../assets/stylesheets/palettes-05ab2406df.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Colfax Regular:400,700|Roboto+Mono">
<style>
body, input {
font-family: 'Colfax Regular', Helvetica, Arial, sans-serif;
}
pre, code {
font-family: 'Roboto Mono', 'Courier New', 'Courier', monospace;
}
</style>
<link rel="stylesheet" href="../../assets/css/extra.css">
<!-- Scripts -->
<script src="../../assets/javascripts/modernizr-4ab42b99fd.js"></script>
</head>
<body class="palette-primary-green palette-accent-blue-grey">
<div class="backdrop">
<div class="backdrop-paper"></div>
</div>
<input class="toggle" type="checkbox" id="toggle-drawer">
<input class="toggle" type="checkbox" id="toggle-search">
<label class="toggle-button overlay" for="toggle-drawer"></label>
<header class="header">
<nav aria-label="Header">
<div class="bar default">
<div class="button button-menu" role="button" aria-label="Menu">
<label class="toggle-button icon icon-menu" for="toggle-drawer">
<span></span>
</label>
</div>
<div class="stretch">
<div class="mainlogo">
<a href="/" title="Go to homepage.">
<img src="../../assets/img/logo.png" title="PagerDuty" />
</a>
</div>
<div class="title">
<span class="path">
Incident Response
<i class="icon icon-link"></i>
</span>
<span class="path">
After an Incident <i class="icon icon-link"></i>
</span>
Post-Mortem Process
</div>
</div>
<div class="button button-twitter" role="button" aria-label="Twitter">
<a href="https://twitter.com/spearhead_sys" title="@spearhead_sys on Twitter" target="_blank" class="toggle-button icon icon-twitter"></a>
</div>
<div class="button button-github" role="button" aria-label="GitHub">
<a href="https://github.com/spearheadsys" title="@spearheadsys on GitHub" target="_blank" class="toggle-button icon icon-github"></a>
</div>
<div class="button button-search" role="button" aria-label="Search">
<label class="toggle-button icon icon-search" title="Search" for="toggle-search"></label>
</div>
</div>
<div class="bar search">
<div class="button button-close" role="button" aria-label="Close">
<label class="toggle-button icon icon-back" for="toggle-search"></label>
</div>
<div class="stretch">
<div class="field">
<input class="query" type="text" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false">
</div>
</div>
<div class="button button-reset" role="button" aria-label="Search">
<button class="toggle-button icon icon-close" id="reset-search"></button>
</div>
</div>
</nav>
</header>
<main class="main">
<div class="drawer">
<nav aria-label="Navigation">
<a href="https://github.com/spearheadsys/issue-response-docs" class="project">
<div class="banner">
<div class="logo">
<img src="../../assets/img/icon.png">
</div>
<div class="name">
<strong>
Spearhead Systems Incident Response Documentation
<span class="version">
</span>
</strong>
<br>
spearheadsys/issue-response-docs
</div>
</div>
</a>
<div class="scrollable">
<div class="wrapper">
<ul class="repo">
<li class="repo-download">
<a href="https://github.com/spearheadsys/issue-response-docs/archive/master.zip" target="_blank" title="Download" data-action="download">
<i class="icon icon-download"></i> Download
</a>
</li>
<li class="repo-stars">
<a href="https://github.com/spearheadsys/issue-response-docs/stargazers" target="_blank" title="Stargazers" data-action="star">
<i class="icon icon-star"></i> Stars
<span class="count">&ndash;</span>
</a>
</li>
</ul>
<hr/>
<div class="toc">
<ul>
<li>
<a class="" title="Home" href="../..">
Home
</a>
</li>
<li>
<span class="section">On-Call</span>
<ul>
<li>
<a class="" title="Being On-Call" href="../../oncall/being_oncall/">
Being On-Call
</a>
</li>
<li>
<a class="" title="Alerting Principles" href="../../oncall/alerting_principles/">
Alerting Principles
</a>
</li>
</ul>
</li>
<li>
<span class="section">Before an Incident</span>
<ul>
<li>
<a class="" title="Severity Levels" href="../../before/severity_levels/">
Severity Levels
</a>
</li>
<li>
<a class="" title="Different Roles" href="../../before/different_roles/">
Different Roles
</a>
</li>
<li>
<a class="" title="Call Etiquette" href="../../before/call_etiquette/">
Call Etiquette
</a>
</li>
</ul>
</li>
<li>
<span class="section">During an Incident</span>
<ul>
<li>
<a class="" title="During An Incident" href="../../during/during_an_incident/">
During An Incident
</a>
</li>
<li>
<a class="" title="Security Incident" href="../../during/security_incident_response/">
Security Incident
</a>
</li>
</ul>
</li>
<li>
<span class="section">After an Incident</span>
<ul>
<li>
<a class="current" title="Post-Mortem Process" href="./">
Post-Mortem Process
</a>
<ul>
<li class="anchor">
<a title="Owner Designation" href="#owner-designation">
Owner Designation
</a>
</li>
<li class="anchor">
<a title="Owner Responsibilities" href="#owner-responsibilities">
Owner Responsibilities
</a>
</li>
<li class="anchor">
<a title="Post-Mortem Wiki Page" href="#post-mortem-wiki-page">
Post-Mortem Wiki Page
</a>
</li>
<li class="anchor">
<a title="Post-Mortem Meeting" href="#post-mortem-meeting">
Post-Mortem Meeting
</a>
</li>
<li class="anchor">
<a title="Examples" href="#examples">
Examples
</a>
</li>
<li class="anchor">
<a title="Useful Resources" href="#useful-resources">
Useful Resources
</a>
</li>
</ul>
</li>
<li>
<a class="" title="Post-Mortem Template" href="../post_mortem_template/">
Post-Mortem Template
</a>
</li>
</ul>
</li>
<li>
<span class="section">Training</span>
<ul>
<li>
<a class="" title="Overview" href="../../training/overview/">
Overview
</a>
</li>
<li>
<a class="" title="Incident Commander" href="../../training/incident_commander/">
Incident Commander
</a>
</li>
<li>
<a class="" title="Deputy" href="../../training/deputy/">
Deputy
</a>
</li>
<li>
<a class="" title="Scribe" href="../../training/scribe/">
Scribe
</a>
</li>
<li>
<a class="" title="Subject Matter Expert" href="../../training/subject_matter_expert/">
Subject Matter Expert
</a>
</li>
<li>
<a class="" title="Glossary" href="../../training/glossary/">
Glossary
</a>
</li>
</ul>
</li>
<li>
<a class="" title="About" href="../../about/">
About
</a>
</li>
</ul>
</div>
</div>
</div>
</nav>
</div>
<article class="article">
<div class="wrapper">
<h1>Post-Mortem Process</h1>
<p>For every major incident (SEV-2/1), we need to follow up with a post-mortem. A blame-free, detailed description, of exactly what went wrong in order to cause the incident, along with a list of steps to take in order to prevent a similar incident from occurring again in the future. The incident response process itself should also be included.</p>
<p><img alt="Post-Mortem" src="../../assets/img/headers/pagerduty_post_mortem.jpg" /></p>
<h2 id="owner-designation">Owner Designation<a class="headerlink" href="#owner-designation" title="Permanent link">#</a></h2>
<p>The first step is that a post-mortem owner will be designated. This is done by the IC either at the end of a major incident call, or very shortly after. You will be notified directly by the IC if you are the owner for the post-mortem. The owner is responsible for populating the post-mortem page, looking up logs, managing the followup investigation, and keeping all interested parties in the loop. Please use Slack for coordinating followup. A detailed list of the steps is available below,</p>
<h2 id="owner-responsibilities">Owner Responsibilities<a class="headerlink" href="#owner-responsibilities" title="Permanent link">#</a></h2>
<p>As owner of a post-mortem, you are responsible for the following,</p>
<ul>
<li>Scheduling the post-mortem meeting (on the shared calendar) and inviting the relevant people (this should be scheduled within 5 business days of the incident).</li>
<li>Updating the page with all of the necessary content.</li>
<li>Investigating the incident, pulling in whomever you need from other teams to assist in the investigation.</li>
<li>Creating follow-up JIRA tickets (<em>You are only responsible for creating the tickets, not following them up to resolution</em>).</li>
<li>Running the post-mortem meeting (<em>these generally run themselves, but you should get people back on topic if the conversation starts to wander</em>).</li>
<li>In cases where we need a public blog post, creating &amp; reviewing it with appropriate parties.</li>
</ul>
<h2 id="post-mortem-wiki-page">Post-Mortem Wiki Page<a class="headerlink" href="#post-mortem-wiki-page" title="Permanent link">#</a></h2>
<p>Once you've been designated as the owner of a post-mortem, you should start updating the page with all the relevant information.</p>
<ol>
<li>
<p>(If not already done by the IC) Create a new post-mortem page for the incident.</p>
</li>
<li>
<p>Schedule a post-mortem meeting for within 5 business days of the incident. You should schedule this before filling in the page, just so it's on the calendar.</p>
<ul>
<li>Create the meeting on the "Incident Post-Mortem Meetings" shared calendar.</li>
</ul>
</li>
<li>
<p>Begin populating the page with all of the information you have.</p>
<ul>
<li>The timeline should be the main focus to begin with.<ul>
<li>The timeline should include important changes in status/impact, and also key actions taken by responders.</li>
<li>You should mark the start of the incident in red, and the resolution in green (for when we went into/out of SEV).</li>
</ul>
</li>
<li>Go through the history in Slack to identify the responders, and add them to the page.<ul>
<li>Identify the Incident Commander and Scribe in this list.</li>
</ul>
</li>
</ul>
</li>
<li>
<p>Populate the page with more detailed information.</p>
<ul>
<li>For each item in the timeline, identify a metric, or some third-party page where the data came from. This could be a link to a Datadog graph, a SumoLogic search, a Tweet, etc. Anything which shows the data point you're trying to illustrate in the timeline.</li>
</ul>
</li>
<li>
<p>Perform an analysis of the incident.</p>
<ul>
<li>Capture all available data regarding the incident. What caused it, how many customers were affected, etc.</li>
<li>Any commands or queries you use to look up data should be posted in the page so others can see how the data was gathered.</li>
<li>Capture the impact to customers (generally in terms of event submission, delayed processing, and slow notification delivery)</li>
<li>Identify the underlying cause of the incident (What happened, and why did it happen).</li>
</ul>
</li>
<li>
<p>Create any followup action JIRA tickets (or note down topics for discussion if we need to decide on a direction to go before creating tickets),</p>
<ul>
<li>Go through the history in Slack to identify any TODO items.</li>
<li>Label all tickets with their severity level and date tags.</li>
<li>Any actions which can reduce re-occurrence of the incident.<ul>
<li>(There may be some trade-off here, and that's fine. Sometimes the ROI isn't worth the effort that would go into it).</li>
</ul>
</li>
<li>Identify any actions which can make our incident response process better.</li>
<li>Be careful with creating too many tickets. Generally we only want to create things that are P0/P1's. Things that absolutely should be dealt with.</li>
</ul>
</li>
<li>
<p>Write the external message that will be sent to customers. This will be reviewed during the post-mortem meeting before it is sent out.</p>
<ul>
<li>Avoid using the word "outage" unless it really was a full outage, use the word "incident" instead. Customers generally see "outage" and assume everything was down, when in reality it was likely just some alerts delivered outside of SLA.</li>
<li>Look at other examples of previous post-mortems to see the kind of thing you should send.</li>
</ul>
</li>
</ol>
<h2 id="post-mortem-meeting">Post-Mortem Meeting<a class="headerlink" href="#post-mortem-meeting" title="Permanent link">#</a></h2>
<p>These meetings should generally last 15-30 minutes, and are intended to be a wrap up of the post-mortem process. We should discuss what happened, what we could've done better, and any followup actions we need to take. The goal is to suss out any disagreement on the facts, analysis, or recommended actions, and to get some wider awareness of the problems that are causing reliability issues for us.</p>
<p>You should invite the following people to the post-mortem meeting,</p>
<ul>
<li>Always<ul>
<li>The incident commander.</li>
<li>Service owners involved in the incident.</li>
<li>Key engineer(s)/responders involved in the incident.</li>
</ul>
</li>
<li>Optional<ul>
<li>Customer liaison. (Only SEV-1 incidents)</li>
</ul>
</li>
</ul>
<p>A general agenda for the meeting would be something like,</p>
<ol>
<li>Recap the timeline, to make sure everyone agrees and is on the same page.</li>
<li>Recap important points, and any unusual items.</li>
<li>Discuss how the problem could've been caught.<ul>
<li>Did it show up in canary?</li>
<li>Could it have been caught in tests, or loadtest environment?</li>
</ul>
</li>
<li>Discuss customer impact. Any comments from customers, etc.</li>
<li>Review action items that have been created, discuss if appropriate, or if more are needed, etc.</li>
</ol>
<h2 id="examples">Examples<a class="headerlink" href="#examples" title="Permanent link">#</a></h2>
<p>Here are some examples of post-mortems from other companies as a reference,</p>
<ul>
<li><a href="https://support.stripe.com/questions/outage-postmortem-2015-10-08-utc">Stripe</a></li>
<li><a href="https://blog.lastpass.com/2015/06/lastpass-security-notice.html/comment-page-2/">LastPass</a></li>
<li><a href="https://aws.amazon.com/message/5467D2/">AWS</a></li>
<li><a href="https://www.twilio.com/blog/2013/07/billing-incident-post-mortem-breakdown-analysis-and-root-cause.html">Twilio</a></li>
<li><a href="https://status.heroku.com/incidents/151">Heroku</a></li>
<li><a href="http://techblog.netflix.com/2012/10/post-mortem-of-october-222012-aws.html">Netflix</a></li>
<li><a href="https://www.gov.uk/government/publications/kyle-beck-safety-digest/near-miss-at-kyle-beck-3-august-2016">GOV.UK Rail Accident Investigation</a></li>
<li><a href="https://github.com/danluu/post-mortems">A List of Post-mortems!</a></li>
</ul>
<h2 id="useful-resources">Useful Resources<a class="headerlink" href="#useful-resources" title="Permanent link">#</a></h2>
<ul>
<li><a href="http://www.slideshare.net/jallspaw/advanced-postmortem-fu-and-human-error-101-velocity-2011">Advanced PostMortem Fu and Human Error 101 (Velocity 2011)</a></li>
<li><a href="http://fractio.nl/2015/10/30/blame-language-sharing/">Blame. Language. Sharing.</a></li>
</ul>
<aside class="copyright" role="note">
Copyright &copy; Spearhead Systems, Inc. &ndash;
Documentation built with
<a href="http://www.mkdocs.org" target="_blank">MkDocs</a>
using the
<a href="http://squidfunk.github.io/mkdocs-material/" target="_blank">
Material
</a>
theme.
</aside>
<footer class="footer">
<nav class="pagination" aria-label="Footer">
<div class="previous">
<a href="../../during/security_incident_response/" title="Security Incident">
<span class="direction">
Previous
</span>
<div class="page">
<div class="button button-previous" role="button" aria-label="Previous">
<i class="icon icon-back"></i>
</div>
<div class="stretch">
<div class="title">
Security Incident
</div>
</div>
</div>
</a>
</div>
<div class="next">
<a href="../post_mortem_template/" title="Post-Mortem Template">
<span class="direction">
Next
</span>
<div class="page">
<div class="stretch">
<div class="title">
Post-Mortem Template
</div>
</div>
<div class="button button-next" role="button" aria-label="Next">
<i class="icon icon-forward"></i>
</div>
</div>
</a>
</div>
</nav>
</footer>
</div>
</article>
<div class="results" role="status" aria-live="polite">
<div class="scrollable">
<div class="wrapper">
<div class="meta"></div>
<div class="list"></div>
</div>
</div>
</div>
</main>
<script>
var base_url = '../..';
var repo_id = 'spearheadsys/issue-response-docs';
</script>
<script src="../../assets/javascripts/application-997097ee0c.js"></script>
</body>
</html>

View File

@ -1,670 +0,0 @@
<!DOCTYPE html>
<!--[if lt IE 7 ]><html class="no-js ie6"><![endif]-->
<!--[if IE 7 ]><html class="no-js ie7"><![endif]-->
<!--[if IE 8 ]><html class="no-js ie8"><![endif]-->
<!--[if IE 9 ]><html class="no-js ie9"><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Post-Mortem Template - Spearhead Systems Incident Response Documentation</title>
<!-- Author and License -->
<meta name="author" content="Spearhead Systems, Inc." />
<meta name="dcterms.license" content="http://www.apache.org/licenses/LICENSE-2.0" />
<!-- Page Description -->
<meta name="keywords" content="spearhead, incident, response" />
<meta name="robots" content="index, follow, noarchive" />
<!-- Mobile -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
<meta name="theme-color" content="#1f293a" />
<!-- Canonical Link -->
<link rel="canonical" href="https://response.spearhead.systems/after/post_mortem_template/">
<!-- Favicon -->
<link rel="shortcut icon" type="image/x-icon" href="../../assets/img/icon.png" />
<link rel="icon" type="image/x-icon" href="../../assets/img/icon.png" />
<!-- Apple -->
<meta name="apple-mobile-web-app-title" content="Spearhead Systems Incident Response Documentation" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<link rel="apple-touch-icon" href="../../assets/img/icon.png">
<!-- Open Graph -->
<meta property="og:url" content="https://response.spearhead.systems/after/post_mortem_template/" />
<meta property="og:title" content="Post-Mortem Template - Spearhead Systems Incident Response Documentation" />
<meta property="og:site_name" content="Spearhead Systems Incident Response Documentation" />
<meta property="og:description" content="A collection of information about the Spearhead Systems incident response process. Not only how to prepare new employees for on-call responsibilities, but also how to handle major incidents, both in preparation and after-work." />
<meta property="og:image" content="https://response.spearhead.systems/assets/img/cover.png" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="website" />
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Post-Mortem Template - Spearhead Systems Incident Response Documentation" />
<meta name="twitter:description" content="A collection of information about the Spearhead Systems incident response process. Not only how to prepare new employees for on-call responsibilities, but also how to handle major incidents, both in preparation and after-work." />
<meta name="twitter:image" content="https://response.spearhead.systems/assets/img/cover.png" />
<!-- Style -->
<style>
@font-face {
font-family: 'Icon';
src: url('../../assets/fonts/icon.eot?52m981');
src: url('../../assets/fonts/icon.eot?#iefix52m981')
format('embedded-opentype'),
url('../../assets/fonts/icon.woff?52m981')
format('woff'),
url('../../assets/fonts/icon.ttf?52m981')
format('truetype'),
url('../../assets/fonts/icon.svg?52m981#icon')
format('svg');
font-weight: normal;
font-style: normal;
}
</style>
<link rel="stylesheet" href="../../assets/stylesheets/application-a422ff04cc.css">
<link rel="stylesheet" href="../../assets/stylesheets/palettes-05ab2406df.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Colfax Regular:400,700|Roboto+Mono">
<style>
body, input {
font-family: 'Colfax Regular', Helvetica, Arial, sans-serif;
}
pre, code {
font-family: 'Roboto Mono', 'Courier New', 'Courier', monospace;
}
</style>
<link rel="stylesheet" href="../../assets/css/extra.css">
<!-- Scripts -->
<script src="../../assets/javascripts/modernizr-4ab42b99fd.js"></script>
</head>
<body class="palette-primary-green palette-accent-blue-grey">
<div class="backdrop">
<div class="backdrop-paper"></div>
</div>
<input class="toggle" type="checkbox" id="toggle-drawer">
<input class="toggle" type="checkbox" id="toggle-search">
<label class="toggle-button overlay" for="toggle-drawer"></label>
<header class="header">
<nav aria-label="Header">
<div class="bar default">
<div class="button button-menu" role="button" aria-label="Menu">
<label class="toggle-button icon icon-menu" for="toggle-drawer">
<span></span>
</label>
</div>
<div class="stretch">
<div class="mainlogo">
<a href="/" title="Go to homepage.">
<img src="../../assets/img/logo.png" title="PagerDuty" />
</a>
</div>
<div class="title">
<span class="path">
Incident Response
<i class="icon icon-link"></i>
</span>
<span class="path">
After an Incident <i class="icon icon-link"></i>
</span>
Post-Mortem Template
</div>
</div>
<div class="button button-twitter" role="button" aria-label="Twitter">
<a href="https://twitter.com/spearhead_sys" title="@spearhead_sys on Twitter" target="_blank" class="toggle-button icon icon-twitter"></a>
</div>
<div class="button button-github" role="button" aria-label="GitHub">
<a href="https://github.com/spearheadsys" title="@spearheadsys on GitHub" target="_blank" class="toggle-button icon icon-github"></a>
</div>
<div class="button button-search" role="button" aria-label="Search">
<label class="toggle-button icon icon-search" title="Search" for="toggle-search"></label>
</div>
</div>
<div class="bar search">
<div class="button button-close" role="button" aria-label="Close">
<label class="toggle-button icon icon-back" for="toggle-search"></label>
</div>
<div class="stretch">
<div class="field">
<input class="query" type="text" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false">
</div>
</div>
<div class="button button-reset" role="button" aria-label="Search">
<button class="toggle-button icon icon-close" id="reset-search"></button>
</div>
</div>
</nav>
</header>
<main class="main">
<div class="drawer">
<nav aria-label="Navigation">
<a href="https://github.com/spearheadsys/issue-response-docs" class="project">
<div class="banner">
<div class="logo">
<img src="../../assets/img/icon.png">
</div>
<div class="name">
<strong>
Spearhead Systems Incident Response Documentation
<span class="version">
</span>
</strong>
<br>
spearheadsys/issue-response-docs
</div>
</div>
</a>
<div class="scrollable">
<div class="wrapper">
<ul class="repo">
<li class="repo-download">
<a href="https://github.com/spearheadsys/issue-response-docs/archive/master.zip" target="_blank" title="Download" data-action="download">
<i class="icon icon-download"></i> Download
</a>
</li>
<li class="repo-stars">
<a href="https://github.com/spearheadsys/issue-response-docs/stargazers" target="_blank" title="Stargazers" data-action="star">
<i class="icon icon-star"></i> Stars
<span class="count">&ndash;</span>
</a>
</li>
</ul>
<hr/>
<div class="toc">
<ul>
<li>
<a class="" title="Home" href="../..">
Home
</a>
</li>
<li>
<span class="section">On-Call</span>
<ul>
<li>
<a class="" title="Being On-Call" href="../../oncall/being_oncall/">
Being On-Call
</a>
</li>
<li>
<a class="" title="Alerting Principles" href="../../oncall/alerting_principles/">
Alerting Principles
</a>
</li>
</ul>
</li>
<li>
<span class="section">Before an Incident</span>
<ul>
<li>
<a class="" title="Severity Levels" href="../../before/severity_levels/">
Severity Levels
</a>
</li>
<li>
<a class="" title="Different Roles" href="../../before/different_roles/">
Different Roles
</a>
</li>
<li>
<a class="" title="Call Etiquette" href="../../before/call_etiquette/">
Call Etiquette
</a>
</li>
</ul>
</li>
<li>
<span class="section">During an Incident</span>
<ul>
<li>
<a class="" title="During An Incident" href="../../during/during_an_incident/">
During An Incident
</a>
</li>
<li>
<a class="" title="Security Incident" href="../../during/security_incident_response/">
Security Incident
</a>
</li>
</ul>
</li>
<li>
<span class="section">After an Incident</span>
<ul>
<li>
<a class="" title="Post-Mortem Process" href="../post_mortem_process/">
Post-Mortem Process
</a>
</li>
<li>
<a class="current" title="Post-Mortem Template" href="./">
Post-Mortem Template
</a>
<ul>
<li class="anchor">
<a title="Overview" href="#overview">
Overview
</a>
</li>
<li class="anchor">
<a title="What Happened" href="#what-happened">
What Happened
</a>
</li>
<li class="anchor">
<a title="Root Cause" href="#root-cause">
Root Cause
</a>
</li>
<li class="anchor">
<a title="Resolution" href="#resolution">
Resolution
</a>
</li>
<li class="anchor">
<a title="Impact" href="#impact">
Impact
</a>
</li>
<li class="anchor">
<a title="Responders" href="#responders">
Responders
</a>
</li>
<li class="anchor">
<a title="Timeline" href="#timeline">
Timeline
</a>
</li>
<li class="anchor">
<a title="How'd We Do?" href="#howd-we-do">
How'd We Do?
</a>
</li>
<li class="anchor">
<a title="Action Items" href="#action-items">
Action Items
</a>
</li>
<li class="anchor">
<a title="Messaging" href="#messaging">
Messaging
</a>
</li>
</ul>
</li>
</ul>
</li>
<li>
<span class="section">Training</span>
<ul>
<li>
<a class="" title="Overview" href="../../training/overview/">
Overview
</a>
</li>
<li>
<a class="" title="Incident Commander" href="../../training/incident_commander/">
Incident Commander
</a>
</li>
<li>
<a class="" title="Deputy" href="../../training/deputy/">
Deputy
</a>
</li>
<li>
<a class="" title="Scribe" href="../../training/scribe/">
Scribe
</a>
</li>
<li>
<a class="" title="Subject Matter Expert" href="../../training/subject_matter_expert/">
Subject Matter Expert
</a>
</li>
<li>
<a class="" title="Glossary" href="../../training/glossary/">
Glossary
</a>
</li>
</ul>
</li>
<li>
<a class="" title="About" href="../../about/">
About
</a>
</li>
</ul>
</div>
</div>
</div>
</nav>
</div>
<article class="article">
<div class="wrapper">
<h1>Post-Mortem Template</h1>
<p>This is a standard template we use for post-mortems at PagerDuty. Each section describes the type of information you will want to put in that section.</p>
<hr />
<div class="admonition note">
<p class="admonition-title">Guidelines</p>
<p>This page is intended to be reviewed during a post-mortem meeting that should be scheduled within 5 business days of any event.
Your first step should be to schedule the post-mortem meeting in the shared calendar for within 5 business days after the incident.
Don't wait until you've filled in the info to schedule the meeting, however make sure the page is completed by the meeting.</p>
</div>
<p><strong> Post-Mortem Owner:</strong> <em>Your name goes here.</em></p>
<p><strong> Meeting Scheduled For:</strong> <em>Schedule the meeting on the "Incident Post-Mortem Meetings" shared calendar, for within 5 business days after the incident. Put the date/time here.</em></p>
<p><strong> Call Recording:</strong> <em>Link to the incident call recording.</em></p>
<h2 id="overview">Overview<a class="headerlink" href="#overview" title="Permanent link">#</a></h2>
<p><em>Include a <strong>short</strong> sentence or two summarizing the root cause, timeline summary, and the impact. E.g. "On the morning of August 99th, we suffered a 1 minute SEV-1 due to a runaway process on our primary database machine. This slowness caused roughly 0.024% of alerts that had begun during this time to be delivered out of SLA."</em></p>
<h2 id="what-happened">What Happened<a class="headerlink" href="#what-happened" title="Permanent link">#</a></h2>
<p><em>Include a short description of what happened.</em></p>
<h2 id="root-cause">Root Cause<a class="headerlink" href="#root-cause" title="Permanent link">#</a></h2>
<p><em>Include a description of the root cause. If there were any actions taken that exacerbated the issue, also include them here with the intention of learning from any mistakes made during the resolution process.</em></p>
<h2 id="resolution">Resolution<a class="headerlink" href="#resolution" title="Permanent link">#</a></h2>
<p><em>Include a description what solved the problem. If there was a temporary fix in place, describe that along with the long-term solution.</em></p>
<h2 id="impact">Impact<a class="headerlink" href="#impact" title="Permanent link">#</a></h2>
<p><em>Be very specific here, include exact numbers.</em></p>
<table>
<thead>
<tr>
<th>Time in SEV-1</th>
<th>?mins</th>
</tr>
</thead>
<tbody>
<tr>
<td>Notifications Delivered out of SLA</td>
<td>??% (?? of ??)</td>
</tr>
<tr>
<td>Events Dropped / Not Accepted</td>
<td>??% (?? of ??) <em>Should usually be 0, but always check</em></td>
</tr>
<tr>
<td>Accounts Affected</td>
<td>??</td>
</tr>
<tr>
<td>Users Affected</td>
<td>??</td>
</tr>
<tr>
<td>Support Requests Raised</td>
<td>?? <em>Include any relevant links to tickets</em></td>
</tr>
</tbody>
</table>
<h2 id="responders">Responders<a class="headerlink" href="#responders" title="Permanent link">#</a></h2>
<ul>
<li><em>Who was the IC?</em></li>
<li><em>Who was the scribe?</em></li>
<li><em>Who else was involved?</em></li>
<li><em>Who else was involved?</em></li>
</ul>
<h2 id="timeline">Timeline<a class="headerlink" href="#timeline" title="Permanent link">#</a></h2>
<p><em>Some important times to include: (1) time the root cause began, (2) time of the page, (3) time that the status page was updated (i.e. when the incident became public), (4) time of any significant actions, (5) time the SEV-2/1 ended, (6) links to tools/logs that show how the timestamp was arrived at.</em></p>
<table>
<thead>
<tr>
<th>Time (UTC)</th>
<th>Event</th>
<th>Data Link</th>
</tr>
</thead>
<tbody></tbody>
</table>
<h2 id="howd-we-do">How'd We Do?<a class="headerlink" href="#howd-we-do" title="Permanent link">#</a></h2>
<h3 id="what-went-well">What Went Well?<a class="headerlink" href="#what-went-well" title="Permanent link">#</a></h3>
<ul>
<li><em>List anything you did well and want to call out. It's OK to not list anything.</em></li>
</ul>
<h3 id="what-didnt-go-so-well">What Didn't Go So Well?<a class="headerlink" href="#what-didnt-go-so-well" title="Permanent link">#</a></h3>
<ul>
<li><em>List anything you think we didn't do very well. The intent is that we should follow up on all points here to improve our processes.</em></li>
</ul>
<h2 id="action-items">Action Items<a class="headerlink" href="#action-items" title="Permanent link">#</a></h2>
<p><em>Each action item should be in the form of a JIRA ticket, and each ticket should have the same set of two tags: “sev1_YYYYMMDD” (such as sev1_20150911) and simply “sev1”. Include action items such as: (1) any fixes required to prevent the root cause in the future, (2) any preparedness tasks that could help mitigate the problem if it came up again, (3) remaining post-mortem steps, such as the internal email, as well as the status-page public post, (4) any improvements to our incident response process.</em></p>
<h2 id="messaging">Messaging<a class="headerlink" href="#messaging" title="Permanent link">#</a></h2>
<h3 id="internal-email">Internal Email<a class="headerlink" href="#internal-email" title="Permanent link">#</a></h3>
<p><em>This is a follow-up for employees. It should be sent out right after the post-mortem meeting is over. It only needs a short paragraph summarizing the incident and a link to this wiki page.</em></p>
<blockquote>
<p>Briefly summarize what happened and where the post-mortem page (this page) can be found.</p>
</blockquote>
<h3 id="external-message">External Message<a class="headerlink" href="#external-message" title="Permanent link">#</a></h3>
<p><em>This is what will be included on the status.pagerduty.com website regarding this incident. What are we telling customers, including an apology? (The apology should be genuine, not rote.)</em></p>
<blockquote>
<p>Summary</p>
<p>What Happened?</p>
<p>What Are We Doing About This?</p>
</blockquote>
<aside class="copyright" role="note">
Copyright &copy; Spearhead Systems, Inc. &ndash;
Documentation built with
<a href="http://www.mkdocs.org" target="_blank">MkDocs</a>
using the
<a href="http://squidfunk.github.io/mkdocs-material/" target="_blank">
Material
</a>
theme.
</aside>
<footer class="footer">
<nav class="pagination" aria-label="Footer">
<div class="previous">
<a href="../post_mortem_process/" title="Post-Mortem Process">
<span class="direction">
Previous
</span>
<div class="page">
<div class="button button-previous" role="button" aria-label="Previous">
<i class="icon icon-back"></i>
</div>
<div class="stretch">
<div class="title">
Post-Mortem Process
</div>
</div>
</div>
</a>
</div>
<div class="next">
<a href="../../training/overview/" title="Overview">
<span class="direction">
Next
</span>
<div class="page">
<div class="stretch">
<div class="title">
Overview
</div>
</div>
<div class="button button-next" role="button" aria-label="Next">
<i class="icon icon-forward"></i>
</div>
</div>
</a>
</div>
</nav>
</footer>
</div>
</article>
<div class="results" role="status" aria-live="polite">
<div class="scrollable">
<div class="wrapper">
<div class="meta"></div>
<div class="list"></div>
</div>
</div>
</div>
</main>
<script>
var base_url = '../..';
var repo_id = 'spearheadsys/issue-response-docs';
</script>
<script src="../../assets/javascripts/application-997097ee0c.js"></script>
</body>
</html>

Binary file not shown.

View File

@ -1,22 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="icon" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe600;" glyph-name="search" d="M661.333 341.334h-33.92l-11.733 11.733c41.813 48.427 66.987 111.36 66.987 180.267 0 153.173-124.16 277.333-277.333 277.333s-277.333-124.16-277.333-277.333 124.16-277.333 277.333-277.333c68.907 0 131.84 25.173 180.267 66.773l11.733-11.733v-33.707l213.333-212.907 63.573 63.573-212.907 213.333zM405.333 341.334c-106.027 0-192 85.973-192 192s85.973 192 192 192 192-85.973 192-192-85.973-192-192-192z" />
<glyph unicode="&#xe601;" glyph-name="arrow-back" d="M853.333 469.334h-519.253l238.293 238.293-60.373 60.373-341.333-341.333 341.333-341.333 60.373 60.373-238.293 238.293h519.253v85.333z" />
<glyph unicode="&#xe602;" glyph-name="chevron-right" d="M426.667 682.667l-60.373-60.373 195.627-195.627-195.627-195.627 60.373-60.373 256 256z" />
<glyph unicode="&#xe603;" glyph-name="close" d="M810.667 664.96l-60.373 60.373-238.293-238.293-238.293 238.293-60.373-60.373 238.293-238.293-238.293-238.293 60.373-60.373 238.293 238.293 238.293-238.293 60.373 60.373-238.293 238.293z" />
<glyph unicode="&#xe604;" glyph-name="menu" d="M128 170.667h768v85.333h-768v-85.333zM128 384h768v85.333h-768v-85.333zM128 682.667v-85.333h768v85.333h-768z" />
<glyph unicode="&#xe605;" glyph-name="arrow-forward" d="M512 768l-60.373-60.373 238.293-238.293h-519.253v-85.333h519.253l-238.293-238.293 60.373-60.373 341.333 341.333z" />
<glyph unicode="&#xe606;" glyph-name="twitter" d="M1024 744.249c-37.676-16.708-78.164-28.002-120.66-33.080 43.372 26 76.686 67.17 92.372 116.23-40.596-24.078-85.556-41.56-133.41-50.98-38.32 40.83-92.922 66.34-153.346 66.34-116.022 0-210.088-94.058-210.088-210.078 0-16.466 1.858-32.5 5.44-47.878-174.6 8.764-329.402 92.4-433.018 219.506-18.084-31.028-28.446-67.116-28.446-105.618 0-72.888 37.088-137.192 93.46-174.866-34.438 1.092-66.832 10.542-95.154 26.278-0.020-0.876-0.020-1.756-0.020-2.642 0-101.788 72.418-186.696 168.522-206-17.626-4.8-36.188-7.372-55.348-7.372-13.538 0-26.698 1.32-39.528 3.772 26.736-83.46 104.32-144.206 196.252-145.896-71.9-56.35-162.486-89.934-260.916-89.934-16.958 0-33.68 0.994-50.116 2.94 92.972-59.61 203.402-94.394 322.042-94.394 386.422 0 597.736 320.124 597.736 597.744 0 9.108-0.206 18.168-0.61 27.18 41.056 29.62 76.672 66.62 104.836 108.748z" />
<glyph unicode="&#xe607;" glyph-name="github" d="M512.008 926.025c-282.738 0-512.008-229.218-512.008-511.998 0-226.214 146.704-418.132 350.136-485.836 25.586-4.738 34.992 11.11 34.992 24.632 0 12.204-0.48 52.542-0.696 95.324-142.448-30.976-172.504 60.41-172.504 60.41-23.282 59.176-56.848 74.916-56.848 74.916-46.452 31.778 3.51 31.124 3.51 31.124 51.4-3.61 78.476-52.766 78.476-52.766 45.672-78.27 119.776-55.64 149.004-42.558 4.588 33.086 17.852 55.68 32.506 68.464-113.73 12.942-233.276 56.85-233.276 253.032 0 55.898 20.004 101.574 52.76 137.428-5.316 12.9-22.854 64.972 4.952 135.5 0 0 43.006 13.752 140.84-52.49 40.836 11.348 84.636 17.036 128.154 17.234 43.502-0.198 87.336-5.886 128.256-17.234 97.734 66.244 140.656 52.49 140.656 52.49 27.872-70.528 10.35-122.6 5.036-135.5 32.82-35.856 52.694-81.532 52.694-137.428 0-196.654-119.778-239.95-233.79-252.624 18.364-15.89 34.724-47.046 34.724-94.812 0-68.508-0.596-123.644-0.596-140.508 0-13.628 9.222-29.594 35.172-24.566 203.322 67.776 349.842 259.626 349.842 485.768 0 282.78-229.234 511.998-511.992 511.998z" />
<glyph unicode="&#xe608;" glyph-name="download" d="M810.667 554.667h-170.667v256h-256v-256h-170.667l298.667-298.667 298.667 298.667zM213.333 170.667v-85.333h597.333v85.333h-597.333z" />
<glyph unicode="&#xe609;" glyph-name="star" d="M512 201.814l263.68-159.147-69.973 299.947 232.96 201.813-306.773 26.027-119.893 282.88-119.893-282.88-306.773-26.027 232.96-201.813-69.973-299.947z" />
<glyph unicode="&#xe610;" glyph-name="warning" d="M554 340.667v172h-84v-172h84zM554 170.667v86h-84v-86h84zM42 42.667l470 810 470-810h-940z" />
<glyph unicode="&#xe611;" glyph-name="hint" d="M614 682.667h240v-426h-300l-16 84h-240v-298h-84v726h384z" />
</font></defs></svg>

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,587 +0,0 @@
<!DOCTYPE html>
<!--[if lt IE 7 ]><html class="no-js ie6"><![endif]-->
<!--[if IE 7 ]><html class="no-js ie7"><![endif]-->
<!--[if IE 8 ]><html class="no-js ie8"><![endif]-->
<!--[if IE 9 ]><html class="no-js ie9"><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Call Etiquette - Spearhead Systems Incident Response Documentation</title>
<!-- Author and License -->
<meta name="author" content="Spearhead Systems, Inc." />
<meta name="dcterms.license" content="http://www.apache.org/licenses/LICENSE-2.0" />
<!-- Page Description -->
<meta name="keywords" content="spearhead, incident, response" />
<meta name="robots" content="index, follow, noarchive" />
<!-- Mobile -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
<meta name="theme-color" content="#1f293a" />
<!-- Canonical Link -->
<link rel="canonical" href="https://response.spearhead.systems/before/call_etiquette/">
<!-- Favicon -->
<link rel="shortcut icon" type="image/x-icon" href="../../assets/img/icon.png" />
<link rel="icon" type="image/x-icon" href="../../assets/img/icon.png" />
<!-- Apple -->
<meta name="apple-mobile-web-app-title" content="Spearhead Systems Incident Response Documentation" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<link rel="apple-touch-icon" href="../../assets/img/icon.png">
<!-- Open Graph -->
<meta property="og:url" content="https://response.spearhead.systems/before/call_etiquette/" />
<meta property="og:title" content="Call Etiquette - Spearhead Systems Incident Response Documentation" />
<meta property="og:site_name" content="Spearhead Systems Incident Response Documentation" />
<meta property="og:description" content="A collection of information about the Spearhead Systems incident response process. Not only how to prepare new employees for on-call responsibilities, but also how to handle major incidents, both in preparation and after-work." />
<meta property="og:image" content="https://response.spearhead.systems/assets/img/cover.png" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="website" />
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Call Etiquette - Spearhead Systems Incident Response Documentation" />
<meta name="twitter:description" content="A collection of information about the Spearhead Systems incident response process. Not only how to prepare new employees for on-call responsibilities, but also how to handle major incidents, both in preparation and after-work." />
<meta name="twitter:image" content="https://response.spearhead.systems/assets/img/cover.png" />
<!-- Style -->
<style>
@font-face {
font-family: 'Icon';
src: url('../../assets/fonts/icon.eot?52m981');
src: url('../../assets/fonts/icon.eot?#iefix52m981')
format('embedded-opentype'),
url('../../assets/fonts/icon.woff?52m981')
format('woff'),
url('../../assets/fonts/icon.ttf?52m981')
format('truetype'),
url('../../assets/fonts/icon.svg?52m981#icon')
format('svg');
font-weight: normal;
font-style: normal;
}
</style>
<link rel="stylesheet" href="../../assets/stylesheets/application-a422ff04cc.css">
<link rel="stylesheet" href="../../assets/stylesheets/palettes-05ab2406df.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Colfax Regular:400,700|Roboto+Mono">
<style>
body, input {
font-family: 'Colfax Regular', Helvetica, Arial, sans-serif;
}
pre, code {
font-family: 'Roboto Mono', 'Courier New', 'Courier', monospace;
}
</style>
<link rel="stylesheet" href="../../assets/css/extra.css">
<!-- Scripts -->
<script src="../../assets/javascripts/modernizr-4ab42b99fd.js"></script>
</head>
<body class="palette-primary-green palette-accent-blue-grey">
<div class="backdrop">
<div class="backdrop-paper"></div>
</div>
<input class="toggle" type="checkbox" id="toggle-drawer">
<input class="toggle" type="checkbox" id="toggle-search">
<label class="toggle-button overlay" for="toggle-drawer"></label>
<header class="header">
<nav aria-label="Header">
<div class="bar default">
<div class="button button-menu" role="button" aria-label="Menu">
<label class="toggle-button icon icon-menu" for="toggle-drawer">
<span></span>
</label>
</div>
<div class="stretch">
<div class="mainlogo">
<a href="/" title="Go to homepage.">
<img src="../../assets/img/logo.png" title="PagerDuty" />
</a>
</div>
<div class="title">
<span class="path">
Incident Response
<i class="icon icon-link"></i>
</span>
<span class="path">
Before an Incident <i class="icon icon-link"></i>
</span>
Call Etiquette
</div>
</div>
<div class="button button-twitter" role="button" aria-label="Twitter">
<a href="https://twitter.com/spearhead_sys" title="@spearhead_sys on Twitter" target="_blank" class="toggle-button icon icon-twitter"></a>
</div>
<div class="button button-github" role="button" aria-label="GitHub">
<a href="https://github.com/spearheadsys" title="@spearheadsys on GitHub" target="_blank" class="toggle-button icon icon-github"></a>
</div>
<div class="button button-search" role="button" aria-label="Search">
<label class="toggle-button icon icon-search" title="Search" for="toggle-search"></label>
</div>
</div>
<div class="bar search">
<div class="button button-close" role="button" aria-label="Close">
<label class="toggle-button icon icon-back" for="toggle-search"></label>
</div>
<div class="stretch">
<div class="field">
<input class="query" type="text" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false">
</div>
</div>
<div class="button button-reset" role="button" aria-label="Search">
<button class="toggle-button icon icon-close" id="reset-search"></button>
</div>
</div>
</nav>
</header>
<main class="main">
<div class="drawer">
<nav aria-label="Navigation">
<a href="https://github.com/spearheadsys/issue-response-docs" class="project">
<div class="banner">
<div class="logo">
<img src="../../assets/img/icon.png">
</div>
<div class="name">
<strong>
Spearhead Systems Incident Response Documentation
<span class="version">
</span>
</strong>
<br>
spearheadsys/issue-response-docs
</div>
</div>
</a>
<div class="scrollable">
<div class="wrapper">
<ul class="repo">
<li class="repo-download">
<a href="https://github.com/spearheadsys/issue-response-docs/archive/master.zip" target="_blank" title="Download" data-action="download">
<i class="icon icon-download"></i> Download
</a>
</li>
<li class="repo-stars">
<a href="https://github.com/spearheadsys/issue-response-docs/stargazers" target="_blank" title="Stargazers" data-action="star">
<i class="icon icon-star"></i> Stars
<span class="count">&ndash;</span>
</a>
</li>
</ul>
<hr/>
<div class="toc">
<ul>
<li>
<a class="" title="Home" href="../..">
Home
</a>
</li>
<li>
<span class="section">On-Call</span>
<ul>
<li>
<a class="" title="Being On-Call" href="../../oncall/being_oncall/">
Being On-Call
</a>
</li>
<li>
<a class="" title="Alerting Principles" href="../../oncall/alerting_principles/">
Alerting Principles
</a>
</li>
</ul>
</li>
<li>
<span class="section">Before an Incident</span>
<ul>
<li>
<a class="" title="Severity Levels" href="../severity_levels/">
Severity Levels
</a>
</li>
<li>
<a class="" title="Different Roles" href="../different_roles/">
Different Roles
</a>
</li>
<li>
<a class="current" title="Call Etiquette" href="./">
Call Etiquette
</a>
<ul>
<li class="anchor">
<a title="First Steps" href="#first-steps">
First Steps
</a>
</li>
<li class="anchor">
<a title="Lingo" href="#lingo">
Lingo
</a>
</li>
<li class="anchor">
<a title="The Commander" href="#the-commander">
The Commander
</a>
</li>
<li class="anchor">
<a title="Problems?" href="#problems">
Problems?
</a>
</li>
</ul>
</li>
</ul>
</li>
<li>
<span class="section">During an Incident</span>
<ul>
<li>
<a class="" title="During An Incident" href="../../during/during_an_incident/">
During An Incident
</a>
</li>
<li>
<a class="" title="Security Incident" href="../../during/security_incident_response/">
Security Incident
</a>
</li>
</ul>
</li>
<li>
<span class="section">After an Incident</span>
<ul>
<li>
<a class="" title="Post-Mortem Process" href="../../after/post_mortem_process/">
Post-Mortem Process
</a>
</li>
<li>
<a class="" title="Post-Mortem Template" href="../../after/post_mortem_template/">
Post-Mortem Template
</a>
</li>
</ul>
</li>
<li>
<span class="section">Training</span>
<ul>
<li>
<a class="" title="Overview" href="../../training/overview/">
Overview
</a>
</li>
<li>
<a class="" title="Incident Commander" href="../../training/incident_commander/">
Incident Commander
</a>
</li>
<li>
<a class="" title="Deputy" href="../../training/deputy/">
Deputy
</a>
</li>
<li>
<a class="" title="Scribe" href="../../training/scribe/">
Scribe
</a>
</li>
<li>
<a class="" title="Subject Matter Expert" href="../../training/subject_matter_expert/">
Subject Matter Expert
</a>
</li>
<li>
<a class="" title="Glossary" href="../../training/glossary/">
Glossary
</a>
</li>
</ul>
</li>
<li>
<a class="" title="About" href="../../about/">
About
</a>
</li>
</ul>
</div>
</div>
</div>
</nav>
</div>
<article class="article">
<div class="wrapper">
<h1>Call Etiquette</h1>
<p>You've just joined an incident call, and you've never been on one before. You have no idea what's going on, or what you're supposed to be doing. This page will help you through your first time on an incident call, and will provide a reference for future calls you may be a part of.</p>
<p><img alt="Obama phone" src="../../assets/img/headers/obama_phone.jpg" />
<em>Credit: <a href="https://commons.wikimedia.org/wiki/File:Barack_Obama_on_phone_with_Benjamin_Netanyahu_2009-06-08.jpg">Official White House Photo</a> by Pete Souza</em></p>
<h2 id="first-steps">First Steps<a class="headerlink" href="#first-steps" title="Permanent link">#</a></h2>
<ul>
<li>If you intend on participating on the incident call you should join both the call, and Slack.</li>
<li>Make sure you are in a quiet environment in order to participate on the call. Background noise should be kept to a minimum.</li>
<li>Keep your microphone muted until you have something to say.</li>
<li>Identify yourself when you join the call; State your name and the system you are the expert for.</li>
<li>Speak up and speak clearly.</li>
<li>Be direct and factual.</li>
<li>Keep conversations/discussions short and to the point.</li>
<li>Bring any concerns to the Incident Commander (IC) on the call.</li>
<li>Respect time constraints given by the Incident Commander.</li>
</ul>
<h2 id="lingo">Lingo<a class="headerlink" href="#lingo" title="Permanent link">#</a></h2>
<p><strong>Use clear terminology, and avoid using acronyms or abbreviations during a call. Clear and accurate communication is more important than quick communication.</strong></p>
<p><img alt="Communication" src="../../assets/img/misc/communicate.png" /></p>
<p>Standard radio <a href="https://en.wikipedia.org/wiki/Voice_procedure#Words_in_voice_procedure">voice procedure</a> does not need to be followed on calls. However, you should familiarize yourself with the terms, as you may hear them on a call (or need to use them yourself). The ones in more active use on major incident calls are,</p>
<ul>
<li><strong>Ack/Rog</strong> - "I have received and understood"</li>
<li><strong>Say Again</strong> - "Repeat your last message"</li>
<li><strong>Standby</strong> - "Please wait a moment for the next response"</li>
<li><strong>Wilco</strong> - "Will comply"</li>
</ul>
<p>Do not invent new abbreviations, and always favor being explicit of implicit. It is better to make things clearer than to try and save time by abbreviating, only to have a misunderstanding because others didn't know the abbreviation.</p>
<h2 id="the-commander">The Commander<a class="headerlink" href="#the-commander" title="Permanent link">#</a></h2>
<p>The Incident Commander (IC) is the leader of the incident response process, and is responsible for bringing the incident to resolution. They will announce themselves at the start of the call, and will generally be doing most of the talking.</p>
<ul>
<li>Follow all instructions from the incident commander, without exception.</li>
<li>Do not perform any actions unless the incident commander has told you to do so.</li>
<li>The commander will typically poll for any strong objections before performing a large action. This is your time to raise any objections if you have them.</li>
<li>Once the commander has made a decision, that decision is final and should be followed, even if you disagreed during the poll.</li>
<li>Answer any questions the commander asks you in a clear and concise way.<ul>
<li>Answering that you "don't know" something is perfectly acceptable. Do not try to guess.</li>
</ul>
</li>
<li>The commander may ask you to investigate something and get back to them in X minutes. Make sure you are ready with an answer within that time.<ul>
<li>Answering that you need more time is perfectly acceptable, but you need to give the commander an estimate of how much time.</li>
</ul>
</li>
</ul>
<h2 id="problems">Problems?<a class="headerlink" href="#problems" title="Permanent link">#</a></h2>
<h4 id="theres-no-incident-commander-on-the-call-i-dont-know-what-to-do">There's no incident commander on the call! I don't know what to do!<a class="headerlink" href="#theres-no-incident-commander-on-the-call-i-dont-know-what-to-do" title="Permanent link">#</a></h4>
<p>Ask on the call if an IC is present. If you have no response, type <code>!ic page</code> in Slack. This will page the primary and backup IC to the call.</p>
<h4 id="i-can-join-the-call-or-slack-but-not-both-what-should-i-do">I can join the call or Slack, but not both, what should I do?<a class="headerlink" href="#i-can-join-the-call-or-slack-but-not-both-what-should-i-do" title="Permanent link">#</a></h4>
<p>You're welcome to join only one of the channels, however you should not actively participate in the incident response if so, as it causes disjoined communication. Liaise with someone who is both in Slack and on the call to provide any input you may have so that they can raise it.</p>
<aside class="copyright" role="note">
Copyright &copy; Spearhead Systems, Inc. &ndash;
Documentation built with
<a href="http://www.mkdocs.org" target="_blank">MkDocs</a>
using the
<a href="http://squidfunk.github.io/mkdocs-material/" target="_blank">
Material
</a>
theme.
</aside>
<footer class="footer">
<nav class="pagination" aria-label="Footer">
<div class="previous">
<a href="../different_roles/" title="Different Roles">
<span class="direction">
Previous
</span>
<div class="page">
<div class="button button-previous" role="button" aria-label="Previous">
<i class="icon icon-back"></i>
</div>
<div class="stretch">
<div class="title">
Different Roles
</div>
</div>
</div>
</a>
</div>
<div class="next">
<a href="../../during/during_an_incident/" title="During An Incident">
<span class="direction">
Next
</span>
<div class="page">
<div class="stretch">
<div class="title">
During An Incident
</div>
</div>
<div class="button button-next" role="button" aria-label="Next">
<i class="icon icon-forward"></i>
</div>
</div>
</a>
</div>
</nav>
</footer>
</div>
</article>
<div class="results" role="status" aria-live="polite">
<div class="scrollable">
<div class="wrapper">
<div class="meta"></div>
<div class="list"></div>
</div>
</div>
</div>
</main>
<script>
var base_url = '../..';
var repo_id = 'spearheadsys/issue-response-docs';
</script>
<script src="../../assets/javascripts/application-997097ee0c.js"></script>
</body>
</html>

View File

@ -1,666 +0,0 @@
<!DOCTYPE html>
<!--[if lt IE 7 ]><html class="no-js ie6"><![endif]-->
<!--[if IE 7 ]><html class="no-js ie7"><![endif]-->
<!--[if IE 8 ]><html class="no-js ie8"><![endif]-->
<!--[if IE 9 ]><html class="no-js ie9"><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Different Roles - Spearhead Systems Incident Response Documentation</title>
<!-- Author and License -->
<meta name="author" content="Spearhead Systems, Inc." />
<meta name="dcterms.license" content="http://www.apache.org/licenses/LICENSE-2.0" />
<!-- Page Description -->
<meta name="keywords" content="spearhead, incident, response" />
<meta name="robots" content="index, follow, noarchive" />
<!-- Mobile -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
<meta name="theme-color" content="#1f293a" />
<!-- Canonical Link -->
<link rel="canonical" href="https://response.spearhead.systems/before/different_roles/">
<!-- Favicon -->
<link rel="shortcut icon" type="image/x-icon" href="../../assets/img/icon.png" />
<link rel="icon" type="image/x-icon" href="../../assets/img/icon.png" />
<!-- Apple -->
<meta name="apple-mobile-web-app-title" content="Spearhead Systems Incident Response Documentation" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<link rel="apple-touch-icon" href="../../assets/img/icon.png">
<!-- Open Graph -->
<meta property="og:url" content="https://response.spearhead.systems/before/different_roles/" />
<meta property="og:title" content="Different Roles - Spearhead Systems Incident Response Documentation" />
<meta property="og:site_name" content="Spearhead Systems Incident Response Documentation" />
<meta property="og:description" content="A collection of information about the Spearhead Systems incident response process. Not only how to prepare new employees for on-call responsibilities, but also how to handle major incidents, both in preparation and after-work." />
<meta property="og:image" content="https://response.spearhead.systems/assets/img/cover.png" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="website" />
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Different Roles - Spearhead Systems Incident Response Documentation" />
<meta name="twitter:description" content="A collection of information about the Spearhead Systems incident response process. Not only how to prepare new employees for on-call responsibilities, but also how to handle major incidents, both in preparation and after-work." />
<meta name="twitter:image" content="https://response.spearhead.systems/assets/img/cover.png" />
<!-- Style -->
<style>
@font-face {
font-family: 'Icon';
src: url('../../assets/fonts/icon.eot?52m981');
src: url('../../assets/fonts/icon.eot?#iefix52m981')
format('embedded-opentype'),
url('../../assets/fonts/icon.woff?52m981')
format('woff'),
url('../../assets/fonts/icon.ttf?52m981')
format('truetype'),
url('../../assets/fonts/icon.svg?52m981#icon')
format('svg');
font-weight: normal;
font-style: normal;
}
</style>
<link rel="stylesheet" href="../../assets/stylesheets/application-a422ff04cc.css">
<link rel="stylesheet" href="../../assets/stylesheets/palettes-05ab2406df.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Colfax Regular:400,700|Roboto+Mono">
<style>
body, input {
font-family: 'Colfax Regular', Helvetica, Arial, sans-serif;
}
pre, code {
font-family: 'Roboto Mono', 'Courier New', 'Courier', monospace;
}
</style>
<link rel="stylesheet" href="../../assets/css/extra.css">
<!-- Scripts -->
<script src="../../assets/javascripts/modernizr-4ab42b99fd.js"></script>
</head>
<body class="palette-primary-green palette-accent-blue-grey">
<div class="backdrop">
<div class="backdrop-paper"></div>
</div>
<input class="toggle" type="checkbox" id="toggle-drawer">
<input class="toggle" type="checkbox" id="toggle-search">
<label class="toggle-button overlay" for="toggle-drawer"></label>
<header class="header">
<nav aria-label="Header">
<div class="bar default">
<div class="button button-menu" role="button" aria-label="Menu">
<label class="toggle-button icon icon-menu" for="toggle-drawer">
<span></span>
</label>
</div>
<div class="stretch">
<div class="mainlogo">
<a href="/" title="Go to homepage.">
<img src="../../assets/img/logo.png" title="PagerDuty" />
</a>
</div>
<div class="title">
<span class="path">
Incident Response
<i class="icon icon-link"></i>
</span>
<span class="path">
Before an Incident <i class="icon icon-link"></i>
</span>
Different Roles
</div>
</div>
<div class="button button-twitter" role="button" aria-label="Twitter">
<a href="https://twitter.com/spearhead_sys" title="@spearhead_sys on Twitter" target="_blank" class="toggle-button icon icon-twitter"></a>
</div>
<div class="button button-github" role="button" aria-label="GitHub">
<a href="https://github.com/spearheadsys" title="@spearheadsys on GitHub" target="_blank" class="toggle-button icon icon-github"></a>
</div>
<div class="button button-search" role="button" aria-label="Search">
<label class="toggle-button icon icon-search" title="Search" for="toggle-search"></label>
</div>
</div>
<div class="bar search">
<div class="button button-close" role="button" aria-label="Close">
<label class="toggle-button icon icon-back" for="toggle-search"></label>
</div>
<div class="stretch">
<div class="field">
<input class="query" type="text" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false">
</div>
</div>
<div class="button button-reset" role="button" aria-label="Search">
<button class="toggle-button icon icon-close" id="reset-search"></button>
</div>
</div>
</nav>
</header>
<main class="main">
<div class="drawer">
<nav aria-label="Navigation">
<a href="https://github.com/spearheadsys/issue-response-docs" class="project">
<div class="banner">
<div class="logo">
<img src="../../assets/img/icon.png">
</div>
<div class="name">
<strong>
Spearhead Systems Incident Response Documentation
<span class="version">
</span>
</strong>
<br>
spearheadsys/issue-response-docs
</div>
</div>
</a>
<div class="scrollable">
<div class="wrapper">
<ul class="repo">
<li class="repo-download">
<a href="https://github.com/spearheadsys/issue-response-docs/archive/master.zip" target="_blank" title="Download" data-action="download">
<i class="icon icon-download"></i> Download
</a>
</li>
<li class="repo-stars">
<a href="https://github.com/spearheadsys/issue-response-docs/stargazers" target="_blank" title="Stargazers" data-action="star">
<i class="icon icon-star"></i> Stars
<span class="count">&ndash;</span>
</a>
</li>
</ul>
<hr/>
<div class="toc">
<ul>
<li>
<a class="" title="Home" href="../..">
Home
</a>
</li>
<li>
<span class="section">On-Call</span>
<ul>
<li>
<a class="" title="Being On-Call" href="../../oncall/being_oncall/">
Being On-Call
</a>
</li>
<li>
<a class="" title="Alerting Principles" href="../../oncall/alerting_principles/">
Alerting Principles
</a>
</li>
</ul>
</li>
<li>
<span class="section">Before an Incident</span>
<ul>
<li>
<a class="" title="Severity Levels" href="../severity_levels/">
Severity Levels
</a>
</li>
<li>
<a class="current" title="Different Roles" href="./">
Different Roles
</a>
<ul>
<li class="anchor">
<a title="Team Leader (TL)" href="#team-leader-tl">
Team Leader (TL)
</a>
</li>
<li class="anchor">
<a title="Sysadmin" href="#sysadmin">
Sysadmin
</a>
</li>
<li class="anchor">
<a title="Scribe" href="#scribe">
Scribe
</a>
</li>
<li class="anchor">
<a title="Subject Matter Expert" href="#subject-matter-expert">
Subject Matter Expert
</a>
</li>
<li class="anchor">
<a title="Customer Liaison" href="#customer-liaison">
Customer Liaison
</a>
</li>
</ul>
</li>
<li>
<a class="" title="Call Etiquette" href="../call_etiquette/">
Call Etiquette
</a>
</li>
</ul>
</li>
<li>
<span class="section">During an Incident</span>
<ul>
<li>
<a class="" title="During An Incident" href="../../during/during_an_incident/">
During An Incident
</a>
</li>
<li>
<a class="" title="Security Incident" href="../../during/security_incident_response/">
Security Incident
</a>
</li>
</ul>
</li>
<li>
<span class="section">After an Incident</span>
<ul>
<li>
<a class="" title="Post-Mortem Process" href="../../after/post_mortem_process/">
Post-Mortem Process
</a>
</li>
<li>
<a class="" title="Post-Mortem Template" href="../../after/post_mortem_template/">
Post-Mortem Template
</a>
</li>
</ul>
</li>
<li>
<span class="section">Training</span>
<ul>
<li>
<a class="" title="Overview" href="../../training/overview/">
Overview
</a>
</li>
<li>
<a class="" title="Incident Commander" href="../../training/incident_commander/">
Incident Commander
</a>
</li>
<li>
<a class="" title="Deputy" href="../../training/deputy/">
Deputy
</a>
</li>
<li>
<a class="" title="Scribe" href="../../training/scribe/">
Scribe
</a>
</li>
<li>
<a class="" title="Subject Matter Expert" href="../../training/subject_matter_expert/">
Subject Matter Expert
</a>
</li>
<li>
<a class="" title="Glossary" href="../../training/glossary/">
Glossary
</a>
</li>
</ul>
</li>
<li>
<a class="" title="About" href="../../about/">
About
</a>
</li>
</ul>
</div>
</div>
</div>
</nav>
</div>
<article class="article">
<div class="wrapper">
<h1>Different Roles</h1>
<p>There are several roles for our incident response teams at Spearhead Systems. Certain roles only have one person per incident (e.g. support engineer), whereas other roles can have multiple people (e.g. Sysadmins, Solution Architects, etc.). It's all about coming together as a team, working the problem, and getting a solution quickly.</p>
<p>Here is a rough outline of our role hierarchy, with each role discussed in more detail on the rest of this page.</p>
<p><img alt="Incident Response Structure" src="../../assets/img/misc/incident_response_roles.png" /></p>
<hr />
<h2 id="team-leader-tl">Team Leader (TL)<a class="headerlink" href="#team-leader-tl" title="Permanent link">#</a></h2>
<h3 id="what-is-it">What is it?<a class="headerlink" href="#what-is-it" title="Permanent link">#</a></h3>
<p>A Team Leader acts as the single source of truth of what is currently happening and what is going to happen during an major incident. They come in all shapes, sizes, and colors. TL's are also the key elements in a project (boards in DoIT).</p>
<h3 id="why-have-one">Why have one?<a class="headerlink" href="#why-have-one" title="Permanent link">#</a></h3>
<p>As any system grows in size and complexity, things break and cause incidents. The TL is needed to help drive major incidents to resolution by organizing his team towards a common goal.</p>
<h3 id="what-are-the-responsibilities">What are the responsibilities?<a class="headerlink" href="#what-are-the-responsibilities" title="Permanent link">#</a></h3>
<ol>
<li>Help prepare for projects and incidents,<ul>
<li>Setup communications channels.</li>
<li>Create the DoIT board(s) and other project planning related materials.</li>
<li>Funnel people to these communications channels.</li>
<li>Train team members on how to communicate and train other TL's.</li>
</ul>
</li>
<li>Drive incidents and projects to resolution,<ul>
<li>Get everyone on the same communication channel.</li>
<li>Collect information from team members for their services/area of ownership status.</li>
<li>Collect proposed repair actions, then recommend repair actions to be taken.</li>
<li>Delegate all repair actions, the TL is NOT a resolver.</li>
<li>Be the single authority on system status</li>
<li>Communicate directly with the customers and end-users<ul>
<li>not the engineers themselves!</li>
</ul>
</li>
</ul>
</li>
<li>Post Mortem,<ul>
<li>Creating the initial template right after the incident so people can put in their thoughts while fresh.</li>
<li>Assigning the post-mortem after the event is over, this can be done after the call.</li>
<li>Work with Managers/Support on scheduling preventive actions.</li>
</ul>
</li>
</ol>
<h3 id="who-are-they">Who are they?<a class="headerlink" href="#who-are-they" title="Permanent link">#</a></h3>
<p>Anyone on the TL on-call schedule. Trainees are typically on the TL Shadow schedule.</p>
<h3 id="how-can-i-become-one">How can I become one?<a class="headerlink" href="#how-can-i-become-one" title="Permanent link">#</a></h3>
<p>Take a look at our <a href="../../training/incident_commander/">Team Leader training guide</a>.</p>
<hr />
<h2 id="sysadmin">Sysadmin<a class="headerlink" href="#sysadmin" title="Permanent link">#</a></h2>
<h3 id="what-is-it_1">What is it?<a class="headerlink" href="#what-is-it_1" title="Permanent link">#</a></h3>
<p>A Sysadmin is a direct support role for the Team Leader. This is not a shadow where the person just observes, the Sysadmin is expected to perform important tasks during an incident.</p>
<h3 id="why-have-one_1">Why have one?<a class="headerlink" href="#why-have-one_1" title="Permanent link">#</a></h3>
<p>It's important for the TL to focus on the problem at hand, rather than worrying about documenting the steps or monitoring timers. The Sysadmin helps to support the TL and keep them stay focussed on the incident.</p>
<h3 id="what-are-the-responsibilities_1">What are the responsibilities?<a class="headerlink" href="#what-are-the-responsibilities_1" title="Permanent link">#</a></h3>
<p>The Sysadmin is expected to:</p>
<ol>
<li>Bring up issues to the TL that may otherwise not be addressed (keeping an eye on timers that have been started, circling back around to missed items from a roll call, etc).</li>
<li>Be a "hot standby" TL, should the primary need to either transition to a SME, or otherwise have to step away from the TL role.</li>
<li>Page SME's or other on-call engineers as instructed by the Team Leader.</li>
<li>Manage the incident call, and be prepared to remove people from the call if instructed by the Team Leader.</li>
<li>Liaise with stakeholders and provide status updates on DoIT (using worklogs and comments), Slack and email/telefone as necessary.</li>
</ol>
<h3 id="who-are-they_1">Who are they?<a class="headerlink" href="#who-are-they_1" title="Permanent link">#</a></h3>
<p>Any Team Leader can act as a Sysadmin. Sysadmins need to be trained as an Team Leader as they may be required to take over command.</p>
<h3 id="how-can-i-become-one_1">How can I become one?<a class="headerlink" href="#how-can-i-become-one_1" title="Permanent link">#</a></h3>
<p>Take a look at our <a href="../../training/deputy/">Sysadmin training guide</a>. Sysadmins also need to be <a href="../../training/incident_commander/">trained as an Team Leaders</a>.</p>
<hr />
<p>TODO:::move scribe responsibilities to TL and Sysadmin
::: or assign this to our juniors?</p>
<h2 id="scribe">Scribe<a class="headerlink" href="#scribe" title="Permanent link">#</a></h2>
<h3 id="what-is-it_2">What is it?<a class="headerlink" href="#what-is-it_2" title="Permanent link">#</a></h3>
<p>A Scribe documents the timeline of an incident as it progresses, and makes sure all important decisions and data are captured for later review.</p>
<h3 id="why-have-one_2">Why have one?<a class="headerlink" href="#why-have-one_2" title="Permanent link">#</a></h3>
<p>The incident commander will need to focus on the problem at hand, and the subject matter experts will need to focus on resolving the incident. It is important to capture a timeline of events as they happen so that they can be reviewed during the post-mortem to determine how well we performed, and so we can accurate determine any additional impact that we might not have noticed at the time.</p>
<h3 id="what-are-the-responsibilities_2">What are the responsibilities?<a class="headerlink" href="#what-are-the-responsibilities_2" title="Permanent link">#</a></h3>
<p>The Scribe is expected to:</p>
<ol>
<li>Ensure the incident call is being recorded.</li>
<li>Note in Slack important data, events, and actions, as they happen. Specifically:<ul>
<li>Key actions as they are taken (Example: "prod-server-387723 is being restarted to attempt to remove the stuck lock")</li>
<li>Status reports when one is provided by the IC (Example: "We are in SEV-1, service A is currently not processing events due to a stuck lock, X is restarting the app stack, next checkin in 3 minutes")</li>
<li>Any key callouts either during the call or at the ending review (Example: "Note: (Bob B) We should have a better way to determine stuck locks.")</li>
</ul>
</li>
</ol>
<h3 id="who-are-they_2">Who are they?<a class="headerlink" href="#who-are-they_2" title="Permanent link">#</a></h3>
<p>Anyone can act as a scribe during an incident, and are chosen by the Incident Commander at the start of the call. Typically the Deputy will act as the Scribe, but that doesn't necessarily need to happen, and for larger incidents may not be possible.</p>
<h3 id="how-can-i-become-one_2">How can I become one?<a class="headerlink" href="#how-can-i-become-one_2" title="Permanent link">#</a></h3>
<p>Follow our <a href="../../training/scribe/">Scribe training guide</a>, and then notify the Incident Commanders that you would like to be considered for scribing for the next incident.</p>
<p>TODO::: END move scribe responsibilities to TL and Sysadmin</p>
<hr />
<h2 id="subject-matter-expert">Subject Matter Expert<a class="headerlink" href="#subject-matter-expert" title="Permanent link">#</a></h2>
<h3 id="what-is-it_3">What is it?<a class="headerlink" href="#what-is-it_3" title="Permanent link">#</a></h3>
<p>A Subject Matter Expert (SME), sometimes called a "Resolver" or "Architect", is a domain expert or designated owner of a component or service that is part of the Spearhead Systems service delivery concept.</p>
<h3 id="why-have-one_3">Why have one?<a class="headerlink" href="#why-have-one_3" title="Permanent link">#</a></h3>
<p>The TL and Sysadmins are not all-knowing super beings. When there is a problem with a service or a particular system, an expert in that service is needed to be able to quickly help identify and fix issues.</p>
<h3 id="what-are-the-responsibilities_3">What are the responsibilities?<a class="headerlink" href="#what-are-the-responsibilities_3" title="Permanent link">#</a></h3>
<ol>
<li>Being able to diagnose common problems with the service.</li>
<li>Being able to rapidly fix issues found during an incident.</li>
<li>Concise communication skills, specifically for CAN reports:<ul>
<li>Condition: What is the current state of the service? Is it healthy or not?</li>
<li>Actions: What actions need to be taken if the service is not in a healthy state?</li>
<li>Needs: What support does the resolver need to perform an action?</li>
</ul>
</li>
</ol>
<h3 id="who-are-they_3">Who are they?<a class="headerlink" href="#who-are-they_3" title="Permanent link">#</a></h3>
<p>Anyone who is considered a "domain expert" can act as a resolver for an incident. Typically the service's primary on-call will act as the SME for that service.</p>
<h3 id="how-can-i-become-one_3">How can I become one?<a class="headerlink" href="#how-can-i-become-one_3" title="Permanent link">#</a></h3>
<p>Take a look at our <a href="../../training/subject_matter_expert/">Subject Matter Expert training guide</a>. You should also discuss with your team and service owner to determine what the requirements are for your particular service.</p>
<hr />
<h2 id="customer-liaison">Customer Liaison<a class="headerlink" href="#customer-liaison" title="Permanent link">#</a></h2>
<h3 id="what-is-it_4">What is it?<a class="headerlink" href="#what-is-it_4" title="Permanent link">#</a></h3>
<p>A person responsible for interacting with customers, either directly, or via our public communication channels. Typically a member of the Customer Support team.</p>
<h3 id="why-have-one_4">Why have one?<a class="headerlink" href="#why-have-one_4" title="Permanent link">#</a></h3>
<p>All of the other roles will be actively working on identifying the cause and resolving the issue, we need a role which is focused purely on the customer interaction side of things so that it can be done properly, with the due care and attention it needs.</p>
<h3 id="what-are-the-responsibilities_4">What are the responsibilities?<a class="headerlink" href="#what-are-the-responsibilities_4" title="Permanent link">#</a></h3>
<ol>
<li>Post any publicly facing messages regarding the incident (DoIT, Twitter, StatusPage, etc).</li>
<li>Notify the TL of any customers reporting that they are affected by the incident.</li>
</ol>
<h3 id="who-are-they_4">Who are they?<a class="headerlink" href="#who-are-they_4" title="Permanent link">#</a></h3>
<p>Any member of the Support Team can act as a customer liaison.</p>
<h3 id="how-can-i-become-one_4">How can I become one?<a class="headerlink" href="#how-can-i-become-one_4" title="Permanent link">#</a></h3>
<p>Discuss with the Support Team about becoming our next customer liaison.</p>
<aside class="copyright" role="note">
Copyright &copy; Spearhead Systems, Inc. &ndash;
Documentation built with
<a href="http://www.mkdocs.org" target="_blank">MkDocs</a>
using the
<a href="http://squidfunk.github.io/mkdocs-material/" target="_blank">
Material
</a>
theme.
</aside>
<footer class="footer">
<nav class="pagination" aria-label="Footer">
<div class="previous">
<a href="../severity_levels/" title="Severity Levels">
<span class="direction">
Previous
</span>
<div class="page">
<div class="button button-previous" role="button" aria-label="Previous">
<i class="icon icon-back"></i>
</div>
<div class="stretch">
<div class="title">
Severity Levels
</div>
</div>
</div>
</a>
</div>
<div class="next">
<a href="../call_etiquette/" title="Call Etiquette">
<span class="direction">
Next
</span>
<div class="page">
<div class="stretch">
<div class="title">
Call Etiquette
</div>
</div>
<div class="button button-next" role="button" aria-label="Next">
<i class="icon icon-forward"></i>
</div>
</div>
</a>
</div>
</nav>
</footer>
</div>
</article>
<div class="results" role="status" aria-live="polite">
<div class="scrollable">
<div class="wrapper">
<div class="meta"></div>
<div class="list"></div>
</div>
</div>
</div>
</main>
<script>
var base_url = '../..';
var repo_id = 'spearheadsys/issue-response-docs';
</script>
<script src="../../assets/javascripts/application-997097ee0c.js"></script>
</body>
</html>

View File

@ -1,605 +0,0 @@
<!DOCTYPE html>
<!--[if lt IE 7 ]><html class="no-js ie6"><![endif]-->
<!--[if IE 7 ]><html class="no-js ie7"><![endif]-->
<!--[if IE 8 ]><html class="no-js ie8"><![endif]-->
<!--[if IE 9 ]><html class="no-js ie9"><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Severity Levels - Spearhead Systems Incident Response Documentation</title>
<!-- Author and License -->
<meta name="author" content="Spearhead Systems, Inc." />
<meta name="dcterms.license" content="http://www.apache.org/licenses/LICENSE-2.0" />
<!-- Page Description -->
<meta name="keywords" content="spearhead, incident, response" />
<meta name="robots" content="index, follow, noarchive" />
<!-- Mobile -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
<meta name="theme-color" content="#1f293a" />
<!-- Canonical Link -->
<link rel="canonical" href="https://response.spearhead.systems/before/severity_levels/">
<!-- Favicon -->
<link rel="shortcut icon" type="image/x-icon" href="../../assets/img/icon.png" />
<link rel="icon" type="image/x-icon" href="../../assets/img/icon.png" />
<!-- Apple -->
<meta name="apple-mobile-web-app-title" content="Spearhead Systems Incident Response Documentation" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<link rel="apple-touch-icon" href="../../assets/img/icon.png">
<!-- Open Graph -->
<meta property="og:url" content="https://response.spearhead.systems/before/severity_levels/" />
<meta property="og:title" content="Severity Levels - Spearhead Systems Incident Response Documentation" />
<meta property="og:site_name" content="Spearhead Systems Incident Response Documentation" />
<meta property="og:description" content="A collection of information about the Spearhead Systems incident response process. Not only how to prepare new employees for on-call responsibilities, but also how to handle major incidents, both in preparation and after-work." />
<meta property="og:image" content="https://response.spearhead.systems/assets/img/cover.png" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="website" />
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Severity Levels - Spearhead Systems Incident Response Documentation" />
<meta name="twitter:description" content="A collection of information about the Spearhead Systems incident response process. Not only how to prepare new employees for on-call responsibilities, but also how to handle major incidents, both in preparation and after-work." />
<meta name="twitter:image" content="https://response.spearhead.systems/assets/img/cover.png" />
<!-- Style -->
<style>
@font-face {
font-family: 'Icon';
src: url('../../assets/fonts/icon.eot?52m981');
src: url('../../assets/fonts/icon.eot?#iefix52m981')
format('embedded-opentype'),
url('../../assets/fonts/icon.woff?52m981')
format('woff'),
url('../../assets/fonts/icon.ttf?52m981')
format('truetype'),
url('../../assets/fonts/icon.svg?52m981#icon')
format('svg');
font-weight: normal;
font-style: normal;
}
</style>
<link rel="stylesheet" href="../../assets/stylesheets/application-a422ff04cc.css">
<link rel="stylesheet" href="../../assets/stylesheets/palettes-05ab2406df.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Colfax Regular:400,700|Roboto+Mono">
<style>
body, input {
font-family: 'Colfax Regular', Helvetica, Arial, sans-serif;
}
pre, code {
font-family: 'Roboto Mono', 'Courier New', 'Courier', monospace;
}
</style>
<link rel="stylesheet" href="../../assets/css/extra.css">
<!-- Scripts -->
<script src="../../assets/javascripts/modernizr-4ab42b99fd.js"></script>
</head>
<body class="palette-primary-green palette-accent-blue-grey">
<div class="backdrop">
<div class="backdrop-paper"></div>
</div>
<input class="toggle" type="checkbox" id="toggle-drawer">
<input class="toggle" type="checkbox" id="toggle-search">
<label class="toggle-button overlay" for="toggle-drawer"></label>
<header class="header">
<nav aria-label="Header">
<div class="bar default">
<div class="button button-menu" role="button" aria-label="Menu">
<label class="toggle-button icon icon-menu" for="toggle-drawer">
<span></span>
</label>
</div>
<div class="stretch">
<div class="mainlogo">
<a href="/" title="Go to homepage.">
<img src="../../assets/img/logo.png" title="PagerDuty" />
</a>
</div>
<div class="title">
<span class="path">
Incident Response
<i class="icon icon-link"></i>
</span>
<span class="path">
Before an Incident <i class="icon icon-link"></i>
</span>
Severity Levels
</div>
</div>
<div class="button button-twitter" role="button" aria-label="Twitter">
<a href="https://twitter.com/spearhead_sys" title="@spearhead_sys on Twitter" target="_blank" class="toggle-button icon icon-twitter"></a>
</div>
<div class="button button-github" role="button" aria-label="GitHub">
<a href="https://github.com/spearheadsys" title="@spearheadsys on GitHub" target="_blank" class="toggle-button icon icon-github"></a>
</div>
<div class="button button-search" role="button" aria-label="Search">
<label class="toggle-button icon icon-search" title="Search" for="toggle-search"></label>
</div>
</div>
<div class="bar search">
<div class="button button-close" role="button" aria-label="Close">
<label class="toggle-button icon icon-back" for="toggle-search"></label>
</div>
<div class="stretch">
<div class="field">
<input class="query" type="text" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false">
</div>
</div>
<div class="button button-reset" role="button" aria-label="Search">
<button class="toggle-button icon icon-close" id="reset-search"></button>
</div>
</div>
</nav>
</header>
<main class="main">
<div class="drawer">
<nav aria-label="Navigation">
<a href="https://github.com/spearheadsys/issue-response-docs" class="project">
<div class="banner">
<div class="logo">
<img src="../../assets/img/icon.png">
</div>
<div class="name">
<strong>
Spearhead Systems Incident Response Documentation
<span class="version">
</span>
</strong>
<br>
spearheadsys/issue-response-docs
</div>
</div>
</a>
<div class="scrollable">
<div class="wrapper">
<ul class="repo">
<li class="repo-download">
<a href="https://github.com/spearheadsys/issue-response-docs/archive/master.zip" target="_blank" title="Download" data-action="download">
<i class="icon icon-download"></i> Download
</a>
</li>
<li class="repo-stars">
<a href="https://github.com/spearheadsys/issue-response-docs/stargazers" target="_blank" title="Stargazers" data-action="star">
<i class="icon icon-star"></i> Stars
<span class="count">&ndash;</span>
</a>
</li>
</ul>
<hr/>
<div class="toc">
<ul>
<li>
<a class="" title="Home" href="../..">
Home
</a>
</li>
<li>
<span class="section">On-Call</span>
<ul>
<li>
<a class="" title="Being On-Call" href="../../oncall/being_oncall/">
Being On-Call
</a>
</li>
<li>
<a class="" title="Alerting Principles" href="../../oncall/alerting_principles/">
Alerting Principles
</a>
</li>
</ul>
</li>
<li>
<span class="section">Before an Incident</span>
<ul>
<li>
<a class="current" title="Severity Levels" href="./">
Severity Levels
</a>
</li>
<li>
<a class="" title="Different Roles" href="../different_roles/">
Different Roles
</a>
</li>
<li>
<a class="" title="Call Etiquette" href="../call_etiquette/">
Call Etiquette
</a>
</li>
</ul>
</li>
<li>
<span class="section">During an Incident</span>
<ul>
<li>
<a class="" title="During An Incident" href="../../during/during_an_incident/">
During An Incident
</a>
</li>
<li>
<a class="" title="Security Incident" href="../../during/security_incident_response/">
Security Incident
</a>
</li>
</ul>
</li>
<li>
<span class="section">After an Incident</span>
<ul>
<li>
<a class="" title="Post-Mortem Process" href="../../after/post_mortem_process/">
Post-Mortem Process
</a>
</li>
<li>
<a class="" title="Post-Mortem Template" href="../../after/post_mortem_template/">
Post-Mortem Template
</a>
</li>
</ul>
</li>
<li>
<span class="section">Training</span>
<ul>
<li>
<a class="" title="Overview" href="../../training/overview/">
Overview
</a>
</li>
<li>
<a class="" title="Incident Commander" href="../../training/incident_commander/">
Incident Commander
</a>
</li>
<li>
<a class="" title="Deputy" href="../../training/deputy/">
Deputy
</a>
</li>
<li>
<a class="" title="Scribe" href="../../training/scribe/">
Scribe
</a>
</li>
<li>
<a class="" title="Subject Matter Expert" href="../../training/subject_matter_expert/">
Subject Matter Expert
</a>
</li>
<li>
<a class="" title="Glossary" href="../../training/glossary/">
Glossary
</a>
</li>
</ul>
</li>
<li>
<a class="" title="About" href="../../about/">
About
</a>
</li>
</ul>
</div>
</div>
</div>
</nav>
</div>
<article class="article">
<div class="wrapper">
<h1>Severity Levels</h1>
<p>The first step in any incident response process is to determine what actually constitutes an incident. We have two high level categories for classifying incidents: this is done using "SR" or "IN" defintions with an attached priority of "Minor", "Normal" or "Major". "SR" are "Service requests" initiated by a customer and usually do not constitute a critical issue (there are exceptions) and "IN" are "incidents" which are generally "urgent".</p>
<p>All of our operational issues are to be classified as either a Service Request or an Incident. Incidents have priority over Service Requests provided that there are no Service Requests with a higher priority. In general you will want to resolve a higher severity SR or IN than a lower one (a "Major" priority gets a more intensive response than a "Normal" incident for example).</p>
<div class="admonition note">
<p class="admonition-title">Always Assume The Worst</p>
<p>If you are unsure which level an incident is (e.g. not sure if IN is Major or Normal), <strong>treat it as the higher one</strong>. During an incident is not the time to discuss or litigate severities, just assume the highest and review during a post-mortem.</p>
</div>
<table class="custom-table">
<thead>
<tr>
<th>Severity</th>
<th>Description</th>
<th>What To Do</th>
</tr>
</thead>
<tbody>
<tr>
<td class="sev-1">Major</td>
<td>
<ul>
<li>The system is in a critical state and is actively impacting a large number of customers.</li>
<li>Functionality has been severely impaired for a long time, breaking SLA.</li>
<li>Customer-data-exposing security vulnerability has come to our attention.</li>
</ul>
</td>
<td>See <a href="/during/during_an_incident">During an Incident</a>.</td>
</tr>
<tr>
<td class="sev-2">Normal</td>
<td>
<ul>
<li>Functionality of virtualization platform is severely impaired.</li>
<li>E-mail system is offline.</li>
</ul>
</td>
<td>See <a href="/during/during_an_incident">During an Incident</a>.</td>
</tr>
<tr>
<td class="warning" colspan="3">Anything above this line is considered a "Major Incident". These are generally Incidents (IN). Below are service requests (SR) which are usually initiated by a human who can help with prioritizing. A call is triggered for all major incidents (indifferently of SR or IN).</td>
</tr>
<tr>
<td class="sev-2">Normal</td>
<td>
<ul>
<li>Partial loss of functionality, only affecting minority of customers.</li>
<li>Something that has the likelihood of becoming Major if nothing is done.</li>
<li>No redundancy in a service (failure of 1 more node will cause outage).</li>
</ul>
</td>
<td>
<ul>
<li>Work on issue as your top priority.</li>
<li>Liaise with engineers of affected systems to identify cause.</li>
<li>If related to recent deployment, rollback.</li>
<li>Monitor status and notice if/when it escalates.</li>
<li>Mention on Slack if you think it has the potential to escalate.</li>
</ul>
</td>
</tr>
<tr>
<td class="sev-2">Normal</td>
<td>
<ul>
<li>Performance issues (delays, etc). Tasks that require non-immediate attention.</li>
<li>Job failure (not impacting alerting).</li>
</ul>
</td>
<td>
<ul>
<li>Work on the issue as your first priority (above "Low" tasks).</li>
<li>Monitor status and notice if/when it escalates.</li>
</ul>
</td>
</tr>
<tr>
<td class="sev-5">Low</td>
<td>
<ul>
<li>Normal bugs which aren't impacting system use, cosmetic issues, etc.</li>
</ul>
</td>
<td>
<ul>
<li>Create a DoIT ticket and assign to owner of affected system.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<div class="admonition note">
<p class="admonition-title">Be Specific</p>
<p>When creating Cards in Doit, be as specific as possible and include all necessary details. Include relevant details regarding when the issue started, what may have triggered it, etc.. Document your efforts through worklogs and be specific there as well. </p>
</div>
<aside class="copyright" role="note">
Copyright &copy; Spearhead Systems, Inc. &ndash;
Documentation built with
<a href="http://www.mkdocs.org" target="_blank">MkDocs</a>
using the
<a href="http://squidfunk.github.io/mkdocs-material/" target="_blank">
Material
</a>
theme.
</aside>
<footer class="footer">
<nav class="pagination" aria-label="Footer">
<div class="previous">
<a href="../../oncall/alerting_principles/" title="Alerting Principles">
<span class="direction">
Previous
</span>
<div class="page">
<div class="button button-previous" role="button" aria-label="Previous">
<i class="icon icon-back"></i>
</div>
<div class="stretch">
<div class="title">
Alerting Principles
</div>
</div>
</div>
</a>
</div>
<div class="next">
<a href="../different_roles/" title="Different Roles">
<span class="direction">
Next
</span>
<div class="page">
<div class="stretch">
<div class="title">
Different Roles
</div>
</div>
<div class="button button-next" role="button" aria-label="Next">
<i class="icon icon-forward"></i>
</div>
</div>
</a>
</div>
</nav>
</footer>
</div>
</article>
<div class="results" role="status" aria-live="polite">
<div class="scrollable">
<div class="wrapper">
<div class="meta"></div>
<div class="list"></div>
</div>
</div>
</div>
</main>
<script>
var base_url = '../..';
var repo_id = 'spearheadsys/issue-response-docs';
</script>
<script src="../../assets/javascripts/application-997097ee0c.js"></script>
</body>
</html>

31
docs/about.md Normal file
View File

@ -0,0 +1,31 @@
This site documents parts of the Spearhead Systems Issue Response process. It is a cut-down version of our internal documentation, used at Spearhead Systems for any incident or service request, and to prepare new employees for on-call responsibilities. It provides information not only on preparation but also what to do during and after.
Few companies seem to talk about their internal processes for dealing with major incidents. We would like to change that by opening up our documentation to the community, in the hopes that it proves useful to others who may want to formalize their own processes. Additionally, it provides an opportunity for others to suggest improvements, which ends up helping everyone.
This documentation is complementary to what is available in our [existing wiki](https://sphsys.sharepoint.com).
## What is this?
A collection of pages detailing how to efficiently deal with any incident or service request that might arise, along with information on how to go on-call effectively. It provides lessons learned the hard way, along with training material for getting you up to speed quickly.
## Who is this for?
It is intended for on-call practitioners and those involved in an operational incident or service request response process, or those wishing to enact a formal incident response process. Specifically this is for all of our Technical Support staff.
## Why do I need it?
As a service provider Spearhead Systems deals with service requests on a daily basis. The reason we exist is to deliver a service which in most cases boils down to incidents and service requests. We want to deliver a smooth and seamless experience for resolving our customers issues therefore this documentation is a guideline for how we handle these requests. This documentation will allow you give you a head start on how to deal with issues in a way which leads to the fastest possible recovery time.
## What is covered?
Anything from preparing to [go on-call](/oncall/being_oncall.md), definitions of [severities](/before/severity_levels.md), incident [call etiquette](/before/call_etiquette.md), all the way to how to run a [post-mortem](/after/post_mortem_process.md), providing a [post-mortem template](/after/post_mortem_template.md) and even a [security incident response process](/during/security_incident_response.md).
## What is missing?
Lots, dig in an help us complete the picture. We can migrate most processes from Sharepoint here.
## License
This documentation is provided under the Apache License 2.0. In plain English that means you can use and modify this documentation and use it both commercially and for private use. However, you must include any original copyright notices, and the original LICENSE file.
Whether you are a Spearhead Systems customer or not, we want you to have the ability to use this documentation internally at your own company. You can view the source code for all of this documentation on our GitHub account, feel free to fork the repository and use it as a base for your own internal documentation.

View File

@ -0,0 +1,91 @@
For every major incident (SEV-2/1), we need to follow up with a post-mortem. A blame-free, detailed description, of exactly what went wrong in order to cause the incident, along with a list of steps to take in order to prevent a similar incident from occurring again in the future. The incident response process itself should also be included.
![Post-Mortem](../assets/img/headers/pagerduty_post_mortem.jpg)
## Owner Designation
The first step is that a post-mortem owner will be designated. This is done by the IC either at the end of a major incident call, or very shortly after. You will be notified directly by the IC if you are the owner for the post-mortem. The owner is responsible for populating the post-mortem page, looking up logs, managing the followup investigation, and keeping all interested parties in the loop. Please use Slack for coordinating followup. A detailed list of the steps is available below,
## Owner Responsibilities
As owner of a post-mortem, you are responsible for the following,
* Scheduling the post-mortem meeting (on the shared calendar) and inviting the relevant people (this should be scheduled within 5 business days of the incident).
* Updating the page with all of the necessary content.
* Investigating the incident, pulling in whomever you need from other teams to assist in the investigation.
* Creating follow-up JIRA tickets (_You are only responsible for creating the tickets, not following them up to resolution_).
* Running the post-mortem meeting (_these generally run themselves, but you should get people back on topic if the conversation starts to wander_).
* In cases where we need a public blog post, creating & reviewing it with appropriate parties.
## Post-Mortem Wiki Page
Once you've been designated as the owner of a post-mortem, you should start updating the page with all the relevant information.
1. (If not already done by the IC) Create a new post-mortem page for the incident.
1. Schedule a post-mortem meeting for within 5 business days of the incident. You should schedule this before filling in the page, just so it's on the calendar.
* Create the meeting on the "Incident Post-Mortem Meetings" shared calendar.
1. Begin populating the page with all of the information you have.
* The timeline should be the main focus to begin with.
* The timeline should include important changes in status/impact, and also key actions taken by responders.
* You should mark the start of the incident in red, and the resolution in green (for when we went into/out of SEV).
* Go through the history in Slack to identify the responders, and add them to the page.
* Identify the Incident Commander and Scribe in this list.
1. Populate the page with more detailed information.
* For each item in the timeline, identify a metric, or some third-party page where the data came from. This could be a link to a Datadog graph, a SumoLogic search, a Tweet, etc. Anything which shows the data point you're trying to illustrate in the timeline.
1. Perform an analysis of the incident.
* Capture all available data regarding the incident. What caused it, how many customers were affected, etc.
* Any commands or queries you use to look up data should be posted in the page so others can see how the data was gathered.
* Capture the impact to customers (generally in terms of event submission, delayed processing, and slow notification delivery)
* Identify the underlying cause of the incident (What happened, and why did it happen).
1. Create any followup action JIRA tickets (or note down topics for discussion if we need to decide on a direction to go before creating tickets),
* Go through the history in Slack to identify any TODO items.
* Label all tickets with their severity level and date tags.
* Any actions which can reduce re-occurrence of the incident.
* (There may be some trade-off here, and that's fine. Sometimes the ROI isn't worth the effort that would go into it).
* Identify any actions which can make our incident response process better.
* Be careful with creating too many tickets. Generally we only want to create things that are P0/P1's. Things that absolutely should be dealt with.
1. Write the external message that will be sent to customers. This will be reviewed during the post-mortem meeting before it is sent out.
* Avoid using the word "outage" unless it really was a full outage, use the word "incident" instead. Customers generally see "outage" and assume everything was down, when in reality it was likely just some alerts delivered outside of SLA.
* Look at other examples of previous post-mortems to see the kind of thing you should send.
## Post-Mortem Meeting
These meetings should generally last 15-30 minutes, and are intended to be a wrap up of the post-mortem process. We should discuss what happened, what we could've done better, and any followup actions we need to take. The goal is to suss out any disagreement on the facts, analysis, or recommended actions, and to get some wider awareness of the problems that are causing reliability issues for us.
You should invite the following people to the post-mortem meeting,
* Always
* The incident commander.
* Service owners involved in the incident.
* Key engineer(s)/responders involved in the incident.
* Optional
* Customer liaison. (Only SEV-1 incidents)
A general agenda for the meeting would be something like,
1. Recap the timeline, to make sure everyone agrees and is on the same page.
1. Recap important points, and any unusual items.
1. Discuss how the problem could've been caught.
* Did it show up in canary?
* Could it have been caught in tests, or loadtest environment?
1. Discuss customer impact. Any comments from customers, etc.
1. Review action items that have been created, discuss if appropriate, or if more are needed, etc.
## Examples
Here are some examples of post-mortems from other companies as a reference,
* [Stripe](https://support.stripe.com/questions/outage-postmortem-2015-10-08-utc)
* [LastPass](https://blog.lastpass.com/2015/06/lastpass-security-notice.html/comment-page-2/)
* [AWS](https://aws.amazon.com/message/5467D2/)
* [Twilio](https://www.twilio.com/blog/2013/07/billing-incident-post-mortem-breakdown-analysis-and-root-cause.html)
* [Heroku](https://status.heroku.com/incidents/151)
* [Netflix](http://techblog.netflix.com/2012/10/post-mortem-of-october-222012-aws.html)
* [GOV.UK Rail Accident Investigation](https://www.gov.uk/government/publications/kyle-beck-safety-digest/near-miss-at-kyle-beck-3-august-2016)
* [A List of Post-mortems!](https://github.com/danluu/post-mortems)
## Useful Resources
* [Advanced PostMortem Fu and Human Error 101 (Velocity 2011)](http://www.slideshare.net/jallspaw/advanced-postmortem-fu-and-human-error-101-velocity-2011)
* [Blame. Language. Sharing.](http://fractio.nl/2015/10/30/blame-language-sharing/)

View File

@ -0,0 +1,79 @@
This is a standard template we use for post-mortems at PagerDuty. Each section describes the type of information you will want to put in that section.
---
!!! note "Guidelines"
This page is intended to be reviewed during a post-mortem meeting that should be scheduled within 5 business days of any event.
Your first step should be to schedule the post-mortem meeting in the shared calendar for within 5 business days after the incident.
Don't wait until you've filled in the info to schedule the meeting, however make sure the page is completed by the meeting.
** Post-Mortem Owner:** _Your name goes here._
** Meeting Scheduled For:** _Schedule the meeting on the "Incident Post-Mortem Meetings" shared calendar, for within 5 business days after the incident. Put the date/time here._
** Call Recording:** _Link to the incident call recording._
## Overview
_Include a **short** sentence or two summarizing the root cause, timeline summary, and the impact. E.g. "On the morning of August 99th, we suffered a 1 minute SEV-1 due to a runaway process on our primary database machine. This slowness caused roughly 0.024% of alerts that had begun during this time to be delivered out of SLA."_
## What Happened
_Include a short description of what happened._
## Root Cause
_Include a description of the root cause. If there were any actions taken that exacerbated the issue, also include them here with the intention of learning from any mistakes made during the resolution process._
## Resolution
_Include a description what solved the problem. If there was a temporary fix in place, describe that along with the long-term solution._
## Impact
_Be very specific here, include exact numbers._
| Time in SEV-1 | ?mins |
| Time in SEV-2 | ?mins |
| Notifications Delivered out of SLA | ??% (?? of ??) |
| Events Dropped / Not Accepted | ??% (?? of ??) _Should usually be 0, but always check_ |
| Accounts Affected | ?? |
| Users Affected | ?? |
| Support Requests Raised | ?? _Include any relevant links to tickets_ |
## Responders
* _Who was the IC?_
* _Who was the scribe?_
* _Who else was involved?_
* _Who else was involved?_
## Timeline
_Some important times to include: (1) time the root cause began, (2) time of the page, (3) time that the status page was updated (i.e. when the incident became public), (4) time of any significant actions, (5) time the SEV-2/1 ended, (6) links to tools/logs that show how the timestamp was arrived at._
| Time (UTC) | Event | Data Link |
| ---------- | ----- | --------- |
## How'd We Do?
### What Went Well?
* _List anything you did well and want to call out. It's OK to not list anything._
### What Didn't Go So Well?
* _List anything you think we didn't do very well. The intent is that we should follow up on all points here to improve our processes._
## Action Items
_Each action item should be in the form of a JIRA ticket, and each ticket should have the same set of two tags: “sev1_YYYYMMDD” (such as sev1_20150911) and simply “sev1”. Include action items such as: (1) any fixes required to prevent the root cause in the future, (2) any preparedness tasks that could help mitigate the problem if it came up again, (3) remaining post-mortem steps, such as the internal email, as well as the status-page public post, (4) any improvements to our incident response process._
## Messaging
### Internal Email
_This is a follow-up for employees. It should be sent out right after the post-mortem meeting is over. It only needs a short paragraph summarizing the incident and a link to this wiki page._
> Briefly summarize what happened and where the post-mortem page (this page) can be found.
### External Message
_This is what will be included on the status.pagerduty.com website regarding this incident. What are we telling customers, including an apology? (The apology should be genuine, not rote.)_
> Summary
> What Happened?
> What Are We Doing About This?

399
docs/assets/css/extra.css Normal file
View File

@ -0,0 +1,399 @@
/* Colfax Font */
@font-face {
font-family: 'Colfax Regular';
font-style: normal;
font-weight: 400;
src: local('ColfaxRegular'), url(https://www.pagerduty.com/wp-content/themes/startit-child/fonts/ColfaxWebRegular.woff) format('woff2');
}
@font-face {
font-family: 'Colfax Light';
font-style: normal;
font-weight: 100;
src: local('ColfaxRegular'), url(https://www.pagerduty.com/wp-content/themes/startit-child/fonts/ColfaxWebLight.woff) format('woff2');
}
/* Defaults */
body {
font-weight: 500;
-webkit-font-smoothing: antialiased;
}
/* Change the colour theme to better match PagerDuty */
/* background: pd-green */
.repo a {
background: #25c151;
}
@media only screen and (max-width: 959px) {
.palette-primary-green .project {
background: #25c151;
}
}
/* background: pd-navy */
.palette-primary-green,
.palette-primary-green .footer,
.palette-primary-green .header,
.palette-primary-green .results .meta,
.palette-primary-green .article table th {
background: #1f293a;
}
.palette-primary-green .article table th {
background: #555;
}
/* font: pd-green */
.palette-primary-green .article h1,
.palette-primary-green .article h2,
.palette-primary-green .drawer .toc a.current,
.palette-primary-green .drawer .toc a:focus,
.palette-primary-green .drawer .toc a:hover,
.palette-primary-green .article a:hover {
color: #25c151;
}
/* font: pd-navy */
.palette-primary-green .article a,
.palette-primary-green .article code,
.palette-primary-green .article h1,
.palette-primary-green .article h2 {
color: #1f293a;
}
/* Selected nav section */
.palette-primary-green .drawer .anchor a {
border-left: 3px solid #25c151;
}
/* Hide the page title, already in the navbar */
.article h1 {
display: none;
}
/* But show it when printing */
@media print {
.article h1 {
display: block;
padding-top: 0em;
padding-bottom: 0.1em;
margin-top: 0em;
margin-bottom: 0em;
border-bottom: none;
}
/* Also add a heading when printing */
.article h1:before {
background: url(/assets/img/logo.png) 0em -0.07em no-repeat;
background-size: 7em;
display: block;
height: 2em;
width: 100%;
padding-left: 7.2em;
content: 'Incident Response';
border-bottom: 1px solid #ddd;
margin-bottom: 0.6em;
}
}
/* Want the font to be bigger for articles, easier reading. */
.article {
font-size: 1.45em;
}
/* Too much whitespace at the top, not enough at bottom */
.article .wrapper {
padding: 56px 16px 132px !important;
}
@media only screen and (min-width: 720px) {
.article .wrapper {
padding: 70px 24px 126px !important;
}
}
/* Get rid of the whitespace when printing, let people set own margins. */
@media print {
.article .wrapper {
padding: 0em !important;
}
}
ul, ol {
padding-left: 1em;
}
/* Expanding border menu */
.drawer .toc li a {
overflow: hidden;
position: relative;
}
.drawer .toc li a:before {
display: block;
content: '';
position: absolute;
height: 2em;
left: 0px;
top: 0.5em;
border-left: 5px solid #25c151;
transform: scaleY(0);
transition: transform 250ms ease-in-out;
}
.drawer .toc li a:hover:before {
transform: scaleY(1);
}
/* Don't do it on active menu items */
.drawer .toc a.current:hover:before,
.drawer .toc li.anchor a:hover:before {
transform: scaleY(0);
display: none;
}
/* Don't overflow horizontally on nav */
.drawer .toc ul li a {
white-space: nowrap;
text-overflow: ellipsis;
}
/* Change the title bar to include the PD logo */
nav div.mainlogo {
width: 15em;
display: table-cell;
}
nav div.mainlogo a {
min-height: 3.5em;
margin-bottom: -1.25em;
width: 14.5em;
background: url(/assets/img/logo.png) 0em 0.1em no-repeat;
background-size: contain;
}
nav div.mainlogo img {
display: none;
}
/* Admonition */
.admonition {
background: #25c151;
}
.admonition.info {
background: #f5a623;
}
@media print {
.admonition {
padding: 1em 2em !important;
}
}
/* Typography */
h4 {
font-weight: bold;
text-decoration: underline;
}
.project .logo+.name {
font-size: 13px;
}
span.bad {
color: #f00;
}
span.good {
color: #008800;
}
span.code,
code {
font-family: monospace;
color: #00f !important;
border-radius: 2px;
padding: 0.1em;
border: 1px solid #eee;
background: #f4f4f4;
}
/* Icons */
.button .icon:hover {
transition: color 250ms ease-in-out;
color: #25c151;
}
/* Images */
.article .wrapper {
overflow: hidden;
}
/* Center all images */
.article img {
display: block;
margin: 0 auto;
}
/* Header images */
.article h1 + p + p img {
max-width: 110%;
margin-left: -2em;
}
/* Image Captions */
img + em {
position: relative;
font-size: 0.8em;
margin-right: -2.3em;
padding: 0em 1em;
float: right;
margin-top: -2.1em;
color: #000;
border-top-left-radius: 3px;
background: rgba(255, 255, 255, 0.7);
}
/* Fixes for smaller screen sizes */
@media only screen and (max-width: 720px) {
.article h1 + p + p img {
max-width: 120%;
}
.article h1 + p + p img + em {
margin-right: -1.4em;
margin-top: -2em;
}
}
/* Hack to hide the header images when printing. */
@media print {
.article h1 + p + p img {
display: none;
}
.article h1 + p + p img + em {
display: none;
}
}
/* Quotes */
.article blockquote {
border-left: 3px solid #555;
background: #f9f9f9;
padding: 1em;
padding-left: 16px;
margin-top: 1em;
color: #333;
font-style: italic;
}
.article blockquote p {
margin: 0em;
padding: 0.5em 0em;
}
/* Horizontal Rules */
.article hr {
margin-top: 2em;
border-top: 2px solid #f4f4f4;
}
/* Don't care about copyright notice for this project, Apache License. */
aside.copyright {
display: none;
}
/* Custom tables */
table.custom-table td ul {
margin-top: -0.8em;
padding-top: 0px;
padding-left: 0px;
}
table.custom-table td.warning {
font-weight: bold;
text-align: center;
color: #f00;
background: #f4f4f4;
}
table.custom-table td.sev-1 {
background: #ffe7e7;
color: #f00;
font-weight: bold;
}
table.custom-table td.sev-2 {
background: #ffd;
color: rgb(255,153,0);
font-weight: bold;
}
table.custom-table td.sev-3 {
background: #e0f0ff;
color: rgb(51,102,255);
font-weight: bold;
}
table.custom-table td.sev-4 {
background: #f0f0f0;
color: rgb(128,128,128);
font-weight: bold;
}
table.custom-table td.sev-5 {
background: #ddfade;
color: rgb(0,128,0);
font-weight: bold;
}
table.custom-table td.centered {
text-align: center;
}
/* Embeds */
iframe {
display: block;
margin: 0 auto;
margin-top: 1em;
}
/* Contact summary table */
#contact-summary {
margin-bottom: -2em;
background: #fff;
color: #000;
}
/* Super horrible hack to get the training PDF images correct */
#national-incident-management-system-nims ~ p img {
display: inline;
}
#national-incident-management-system-nims ~ p:nth-of-type(6) {
text-align: center;
}
/* 404 Page */
#error {
text-align: center;
padding: 0em 5em;
}
#error h1 {
display: block;
font-size: 2.5em;
padding-bottom: 1em;
margin-bottom: 1em;
margin-top: 1em;
border-bottom: 1px solid #eee;
}
#error p {
font-style: italic;
color: #555;
}

BIN
docs/assets/img/cover.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 891 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

BIN
docs/assets/img/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
docs/assets/img/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Some files were not shown because too many files have changed in this diff Show More