├── .github └── workflows │ ├── build.yaml │ └── deploy.yaml ├── .gitignore ├── LICENSE ├── README.md ├── docs ├── about.md ├── after │ ├── after_an_incident.md │ ├── effective_post_mortems.md │ ├── post_mortem_process.md │ └── post_mortem_template.md ├── assets │ ├── css │ │ ├── custom.css │ │ ├── pagerduty.css │ │ └── slides.css │ ├── img │ │ ├── chatops │ │ │ ├── ic.png │ │ │ ├── ic_page.png │ │ │ ├── ic_page_responders.png │ │ │ ├── ic_page_rich.png │ │ │ ├── ic_responders.png │ │ │ ├── ic_who_rich.png │ │ │ ├── status.png │ │ │ ├── status_stalk.png │ │ │ └── test_for_failure.png │ │ ├── covers │ │ │ ├── alerting_principles.png │ │ │ ├── anti-patterns.png │ │ │ ├── being_on-call.png │ │ │ ├── blameless.png │ │ │ ├── call_etiquette.png │ │ │ ├── chatops.png │ │ │ ├── complex_incidents.png │ │ │ ├── customer_liaison.png │ │ │ ├── default.png │ │ │ ├── definitions.png │ │ │ ├── deputy.png │ │ │ ├── dont_panic.png │ │ │ ├── getting_started.png │ │ │ ├── incident.png │ │ │ ├── incident_commander.png │ │ │ ├── incident_response_docs.png │ │ │ ├── internal_liaison.png │ │ │ ├── post-mortem_process.png │ │ │ ├── post-mortem_template.png │ │ │ ├── reading.png │ │ │ ├── resolved.png │ │ │ ├── roles.png │ │ │ ├── scribe.png │ │ │ ├── security_incident.png │ │ │ ├── severity_levels.png │ │ │ ├── sme.png │ │ │ ├── training_overview.png │ │ │ └── whos_on-call.png │ │ ├── favicon.png │ │ ├── headers │ │ │ ├── alert_fatigue.png │ │ │ ├── fountain_pen.jpg │ │ │ ├── gene_kranz.jpg │ │ │ ├── getting_started.jpg │ │ │ ├── incident.png │ │ │ ├── incident_command_support.jpg │ │ │ ├── incident_response.jpg │ │ │ ├── internal_liaison.jpg │ │ │ ├── obama_phone.jpg │ │ │ ├── pagerduty_ir.jpg │ │ │ ├── pagerduty_logo.png │ │ │ ├── pagerduty_post_mortem.jpg │ │ │ ├── resources.jpg │ │ │ ├── server_incident.png │ │ │ ├── status_page.jpg │ │ │ └── who_oncall.png │ │ ├── icon.png │ │ ├── logo.png │ │ ├── logo.svg │ │ ├── misc │ │ │ ├── ack.png │ │ │ ├── communicate.png │ │ │ ├── escalation.png │ │ │ ├── handling_incidents.png │ │ │ ├── incident_response_roles.png │ │ │ ├── incident_response_roles_sub_teams.png │ │ │ └── mobile_alerts.png │ │ ├── screenshots │ │ │ ├── high_business_hours.png │ │ │ ├── high_urgency.png │ │ │ ├── low_urgency.png │ │ │ └── suppressed.png │ │ └── thumbnails │ │ │ ├── nims_core.png │ │ │ └── nims_training.png │ ├── js │ │ ├── jquery-1.10.2.min.js │ │ └── lazy_load_images.js │ ├── pdf │ │ └── pagerduty_incident_response_training_public.pdf │ └── slides │ │ └── incident_response │ │ ├── incident_response.001.jpeg │ │ ├── incident_response.002.jpeg │ │ ├── incident_response.003.jpeg │ │ ├── incident_response.004.jpeg │ │ ├── incident_response.005.jpeg │ │ ├── incident_response.006.jpeg │ │ ├── incident_response.007.jpeg │ │ ├── incident_response.008.jpeg │ │ ├── incident_response.009.jpeg │ │ ├── incident_response.010.jpeg │ │ ├── incident_response.011.jpeg │ │ ├── incident_response.012.jpeg │ │ ├── incident_response.013.jpeg │ │ ├── incident_response.014.jpeg │ │ ├── incident_response.015.jpeg │ │ ├── incident_response.016.jpeg │ │ ├── incident_response.017.jpeg │ │ ├── incident_response.018.jpeg │ │ ├── incident_response.019.jpeg │ │ ├── incident_response.020.jpeg │ │ ├── incident_response.021.jpeg │ │ ├── incident_response.022.jpeg │ │ ├── incident_response.023.jpeg │ │ ├── incident_response.024.jpeg │ │ ├── incident_response.025.jpeg │ │ ├── incident_response.026.jpeg │ │ ├── incident_response.027.jpeg │ │ ├── incident_response.028.jpeg │ │ ├── incident_response.029.jpeg │ │ ├── incident_response.030.jpeg │ │ ├── incident_response.031.jpeg │ │ ├── incident_response.032.jpeg │ │ ├── incident_response.033.jpeg │ │ ├── incident_response.034.jpeg │ │ ├── incident_response.035.jpeg │ │ ├── incident_response.036.jpeg │ │ ├── incident_response.037.jpeg │ │ ├── incident_response.038.jpeg │ │ ├── incident_response.039.jpeg │ │ ├── incident_response.040.jpeg │ │ ├── incident_response.041.jpeg │ │ ├── incident_response.042.jpeg │ │ ├── incident_response.043.jpeg │ │ ├── incident_response.044.jpeg │ │ ├── incident_response.045.jpeg │ │ ├── incident_response.046.jpeg │ │ ├── incident_response.047.jpeg │ │ ├── incident_response.048.jpeg │ │ ├── incident_response.049.jpeg │ │ ├── incident_response.050.jpeg │ │ ├── incident_response.051.jpeg │ │ ├── incident_response.052.jpeg │ │ ├── incident_response.053.jpeg │ │ ├── incident_response.054.jpeg │ │ ├── incident_response.055.jpeg │ │ ├── incident_response.056.jpeg │ │ ├── incident_response.057.jpeg │ │ ├── incident_response.058.jpeg │ │ ├── incident_response.059.jpeg │ │ ├── incident_response.060.jpeg │ │ ├── incident_response.061.jpeg │ │ ├── incident_response.062.jpeg │ │ ├── incident_response.063.jpeg │ │ ├── incident_response.064.jpeg │ │ ├── incident_response.065.jpeg │ │ ├── incident_response.066.jpeg │ │ ├── incident_response.067.jpeg │ │ ├── incident_response.068.jpeg │ │ ├── incident_response.069.jpeg │ │ ├── incident_response.070.jpeg │ │ ├── incident_response.071.jpeg │ │ ├── incident_response.072.jpeg │ │ ├── incident_response.073.jpeg │ │ ├── incident_response.074.jpeg │ │ ├── incident_response.075.jpeg │ │ ├── incident_response.076.jpeg │ │ ├── incident_response.077.jpeg │ │ ├── incident_response.078.jpeg │ │ ├── incident_response.079.jpeg │ │ ├── incident_response.080.jpeg │ │ ├── incident_response.081.jpeg │ │ ├── incident_response.082.jpeg │ │ ├── incident_response.083.jpeg │ │ └── incident_response.084.jpeg ├── before │ ├── call_etiquette.md │ ├── complex_incidents.md │ ├── different_roles.md │ ├── severity_levels.md │ └── what_is_an_incident.md ├── during │ ├── during_an_incident.md │ └── security_incident_response.md ├── getting_started.md ├── index.md ├── oncall │ ├── alerting_principles.md │ ├── being_oncall.md │ └── whos_oncall.md ├── resources │ ├── anti_patterns.md │ ├── chatops.md │ └── reading.md └── training │ ├── courses │ └── incident_response.md │ ├── customer_liaison.md │ ├── deputy.md │ ├── glossary.md │ ├── incident_commander.md │ ├── internal_liaison.md │ ├── overview.md │ ├── scribe.md │ └── subject_matter_expert.md ├── mkdocs.yml ├── requirements.txt ├── screenshot.png └── theme ├── 404.html ├── base.html ├── drawer.html ├── favicon.ico ├── fonts ├── colfax │ ├── ColfaxWebLight.eot │ ├── ColfaxWebLight.woff │ ├── ColfaxWebLightItalic.eot │ ├── ColfaxWebLightItalic.woff │ ├── ColfaxWebMedium.eot │ ├── ColfaxWebMedium.woff │ ├── ColfaxWebMediumItalic.eot │ ├── ColfaxWebMediumItalic.woff │ ├── ColfaxWebRegular.eot │ ├── ColfaxWebRegular.woff │ ├── ColfaxWebRegularItalic.eot │ └── ColfaxWebRegularItalic.woff └── icons │ ├── icons.eot │ ├── icons.svg │ ├── icons.ttf │ ├── icons.woff │ ├── loading.eot │ ├── loading.svg │ ├── loading.ttf │ ├── loading.woff │ ├── pagerduty.eot │ ├── pagerduty.svg │ ├── pagerduty.ttf │ └── pagerduty.woff ├── header.html ├── js └── github_forks.js └── robots.txt /.github/workflows/build.yaml: -------------------------------------------------------------------------------- 1 | name: Build static sites 2 | 3 | on: 4 | push: 5 | branches: 6 | - "*" 7 | - "!master" 8 | 9 | jobs: 10 | build: 11 | name: Build 12 | runs-on: ubuntu-latest 13 | 14 | steps: 15 | - name: Checkout 16 | uses: actions/checkout@v2 17 | - name: Set up Python 18 | uses: actions/setup-python@v2 19 | with: 20 | python-version: 2.7.18 21 | - name: Install mkdocs 22 | run: pip install --requirement requirements.txt 23 | - name: Build mkdocs 24 | run: mkdocs build --clean 25 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yaml: -------------------------------------------------------------------------------- 1 | name: Build static sites and deploy them to github pages 2 | 3 | on: 4 | push: 5 | branches: 6 | - "master" 7 | 8 | jobs: 9 | build: 10 | name: Build 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - name: Checkout master 15 | uses: actions/checkout@v2 16 | - name: Set up Python 17 | uses: actions/setup-python@v2 18 | with: 19 | python-version: 2.7.18 20 | - name: Install mkdocs 21 | run: pip install --requirement requirements.txt 22 | - name: Build mkdocs 23 | run: | 24 | mkdocs build --clean 25 | 26 | - name: Checkout gh-pages 27 | uses: actions/checkout@v2 28 | with: 29 | path: gh-pages 30 | ref: gh-pages 31 | - name: Deploy sites to github pages 32 | env: 33 | DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }} 34 | GIT_SSH_COMMAND: "ssh -o StrictHostKeyChecking=no" 35 | run: | 36 | cp -r gh-pages/.git site/ 37 | cd site/ 38 | 39 | git add . 40 | if [ -z "$(git diff --cached --name-only)" ]; then 41 | exit 0 42 | fi 43 | 44 | git config --global user.name "Shin'ya Ueoka" 45 | git config --global user.email "ueokande@i-beam.org" 46 | eval "$(ssh-agent -s)" 47 | ssh-add - <<< "${DEPLOY_KEY}" 48 | 49 | git commit -m"Update on $(date +'%Y-%m-%d %H:%M:%S%z')" 50 | git remote set-url origin "git@github.com:${GITHUB_REPOSITORY}" 51 | git push origin gh-pages 52 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | site/ 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2016 PagerDuty, Inc. 2 | 3 | Apache License 4 | Version 2.0, January 2004 5 | http://www.apache.org/licenses/ 6 | 7 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 8 | 9 | 1. Definitions. 10 | 11 | "License" shall mean the terms and conditions for use, reproduction, 12 | and distribution as defined by Sections 1 through 9 of this document. 13 | 14 | "Licensor" shall mean the copyright owner or entity authorized by 15 | the copyright owner that is granting the License. 16 | 17 | "Legal Entity" shall mean the union of the acting entity and all 18 | other entities that control, are controlled by, or are under common 19 | control with that entity. For the purposes of this definition, 20 | "control" means (i) the power, direct or indirect, to cause the 21 | direction or management of such entity, whether by contract or 22 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 23 | outstanding shares, or (iii) beneficial ownership of such entity. 24 | 25 | "You" (or "Your") shall mean an individual or Legal Entity 26 | exercising permissions granted by this License. 27 | 28 | "Source" form shall mean the preferred form for making modifications, 29 | including but not limited to software source code, documentation 30 | source, and configuration files. 31 | 32 | "Object" form shall mean any form resulting from mechanical 33 | transformation or translation of a Source form, including but 34 | not limited to compiled object code, generated documentation, 35 | and conversions to other media types. 36 | 37 | "Work" shall mean the work of authorship, whether in Source or 38 | Object form, made available under the License, as indicated by a 39 | copyright notice that is included in or attached to the work 40 | (an example is provided in the Appendix below). 41 | 42 | "Derivative Works" shall mean any work, whether in Source or Object 43 | form, that is based on (or derived from) the Work and for which the 44 | editorial revisions, annotations, elaborations, or other modifications 45 | represent, as a whole, an original work of authorship. For the purposes 46 | of this License, Derivative Works shall not include works that remain 47 | separable from, or merely link (or bind by name) to the interfaces of, 48 | the Work and Derivative Works thereof. 49 | 50 | "Contribution" shall mean any work of authorship, including 51 | the original version of the Work and any modifications or additions 52 | to that Work or Derivative Works thereof, that is intentionally 53 | submitted to Licensor for inclusion in the Work by the copyright owner 54 | or by an individual or Legal Entity authorized to submit on behalf of 55 | the copyright owner. For the purposes of this definition, "submitted" 56 | means any form of electronic, verbal, or written communication sent 57 | to the Licensor or its representatives, including but not limited to 58 | communication on electronic mailing lists, source code control systems, 59 | and issue tracking systems that are managed by, or on behalf of, the 60 | Licensor for the purpose of discussing and improving the Work, but 61 | excluding communication that is conspicuously marked or otherwise 62 | designated in writing by the copyright owner as "Not a Contribution." 63 | 64 | "Contributor" shall mean Licensor and any individual or Legal Entity 65 | on behalf of whom a Contribution has been received by Licensor and 66 | subsequently incorporated within the Work. 67 | 68 | 2. Grant of Copyright License. Subject to the terms and conditions of 69 | this License, each Contributor hereby grants to You a perpetual, 70 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 71 | copyright license to reproduce, prepare Derivative Works of, 72 | publicly display, publicly perform, sublicense, and distribute the 73 | Work and such Derivative Works in Source or Object form. 74 | 75 | 3. Grant of Patent License. Subject to the terms and conditions of 76 | this License, each Contributor hereby grants to You a perpetual, 77 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 78 | (except as stated in this section) patent license to make, have made, 79 | use, offer to sell, sell, import, and otherwise transfer the Work, 80 | where such license applies only to those patent claims licensable 81 | by such Contributor that are necessarily infringed by their 82 | Contribution(s) alone or by combination of their Contribution(s) 83 | with the Work to which such Contribution(s) was submitted. If You 84 | institute patent litigation against any entity (including a 85 | cross-claim or counterclaim in a lawsuit) alleging that the Work 86 | or a Contribution incorporated within the Work constitutes direct 87 | or contributory patent infringement, then any patent licenses 88 | granted to You under this License for that Work shall terminate 89 | as of the date such litigation is filed. 90 | 91 | 4. Redistribution. You may reproduce and distribute copies of the 92 | Work or Derivative Works thereof in any medium, with or without 93 | modifications, and in Source or Object form, provided that You 94 | meet the following conditions: 95 | 96 | (a) You must give any other recipients of the Work or 97 | Derivative Works a copy of this License; and 98 | 99 | (b) You must cause any modified files to carry prominent notices 100 | stating that You changed the files; and 101 | 102 | (c) You must retain, in the Source form of any Derivative Works 103 | that You distribute, all copyright, patent, trademark, and 104 | attribution notices from the Source form of the Work, 105 | excluding those notices that do not pertain to any part of 106 | the Derivative Works; and 107 | 108 | (d) If the Work includes a "NOTICE" text file as part of its 109 | distribution, then any Derivative Works that You distribute must 110 | include a readable copy of the attribution notices contained 111 | within such NOTICE file, excluding those notices that do not 112 | pertain to any part of the Derivative Works, in at least one 113 | of the following places: within a NOTICE text file distributed 114 | as part of the Derivative Works; within the Source form or 115 | documentation, if provided along with the Derivative Works; or, 116 | within a display generated by the Derivative Works, if and 117 | wherever such third-party notices normally appear. The contents 118 | of the NOTICE file are for informational purposes only and 119 | do not modify the License. You may add Your own attribution 120 | notices within Derivative Works that You distribute, alongside 121 | or as an addendum to the NOTICE text from the Work, provided 122 | that such additional attribution notices cannot be construed 123 | as modifying the License. 124 | 125 | You may add Your own copyright statement to Your modifications and 126 | may provide additional or different license terms and conditions 127 | for use, reproduction, or distribution of Your modifications, or 128 | for any such Derivative Works as a whole, provided Your use, 129 | reproduction, and distribution of the Work otherwise complies with 130 | the conditions stated in this License. 131 | 132 | 5. Submission of Contributions. Unless You explicitly state otherwise, 133 | any Contribution intentionally submitted for inclusion in the Work 134 | by You to the Licensor shall be under the terms and conditions of 135 | this License, without any additional terms or conditions. 136 | Notwithstanding the above, nothing herein shall supersede or modify 137 | the terms of any separate license agreement you may have executed 138 | with Licensor regarding such Contributions. 139 | 140 | 6. Trademarks. This License does not grant permission to use the trade 141 | names, trademarks, service marks, or product names of the Licensor, 142 | except as required for reasonable and customary use in describing the 143 | origin of the Work and reproducing the content of the NOTICE file. 144 | 145 | 7. Disclaimer of Warranty. Unless required by applicable law or 146 | agreed to in writing, Licensor provides the Work (and each 147 | Contributor provides its Contributions) on an "AS IS" BASIS, 148 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 149 | implied, including, without limitation, any warranties or conditions 150 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 151 | PARTICULAR PURPOSE. You are solely responsible for determining the 152 | appropriateness of using or redistributing the Work and assume any 153 | risks associated with Your exercise of permissions under this License. 154 | 155 | 8. Limitation of Liability. In no event and under no legal theory, 156 | whether in tort (including negligence), contract, or otherwise, 157 | unless required by applicable law (such as deliberate and grossly 158 | negligent acts) or agreed to in writing, shall any Contributor be 159 | liable to You for damages, including any direct, indirect, special, 160 | incidental, or consequential damages of any character arising as a 161 | result of this License or out of the use or inability to use the 162 | Work (including but not limited to damages for loss of goodwill, 163 | work stoppage, computer failure or malfunction, or any and all 164 | other commercial damages or losses), even if such Contributor 165 | has been advised of the possibility of such damages. 166 | 167 | 9. Accepting Warranty or Additional Liability. While redistributing 168 | the Work or Derivative Works thereof, You may choose to offer, 169 | and charge a fee for, acceptance of support, warranty, indemnity, 170 | or other liability obligations and/or rights consistent with this 171 | License. However, in accepting such obligations, You may act only 172 | on Your own behalf and on Your sole responsibility, not on behalf 173 | of any other Contributor, and only if You agree to indemnify, 174 | defend, and hold each Contributor harmless for any liability 175 | incurred by, or claims asserted against, such Contributor by reason 176 | of your accepting any such warranty or additional liability. 177 | 178 | END OF TERMS AND CONDITIONS 179 | 180 | APPENDIX: How to apply the Apache License to your work. 181 | 182 | To apply the Apache License to your work, attach the following 183 | boilerplate notice, with the fields enclosed by brackets "[]" 184 | replaced with your own identifying information. (Don't include 185 | the brackets!) The text should be enclosed in the appropriate 186 | comment syntax for the file format. We also recommend that a 187 | file or class name and description of purpose be included on the 188 | same "printed page" as the copyright notice for easier 189 | identification within third-party archives. 190 | 191 | Copyright [yyyy] [name of copyright owner] 192 | 193 | Licensed under the Apache License, Version 2.0 (the "License"); 194 | you may not use this file except in compliance with the License. 195 | You may obtain a copy of the License at 196 | 197 | http://www.apache.org/licenses/LICENSE-2.0 198 | 199 | Unless required by applicable law or agreed to in writing, software 200 | distributed under the License is distributed on an "AS IS" BASIS, 201 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 202 | See the License for the specific language governing permissions and 203 | limitations under the License. 204 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PagerDuty Incident Response Documentation [![Build Status](https://circleci.com/gh/PagerDuty/incident-response-docs/tree/master.svg?style=svg)](https://circleci.com/gh/PagerDuty/incident-response-docs) 2 | This is a public version of the Incident Response process used at PagerDuty. It is also used to prepare new employees for on-call responsibilities, and provides information not only on preparing for an incident, 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. 3 | 4 | You can view the documentation [directly](/docs/index.md) in this repository, or rendered as a website at https://response.pagerduty.com. 5 | 6 | [![PagerDuty Incident Response Documentation](screenshot.png)](https://response.pagerduty.com) 7 | 8 | ## Development 9 | We use [MkDocs](http://www.mkdocs.org/) to create a static site from this repository. For local development, 10 | 11 | 1. Install v0.1.0 of [MkDocs Bootswatch](https://github.com/mkdocs/mkdocs-bootswatch) `pip install mkdocs-bootswatch==0.1.0` 12 | 1. Install v0.1.1 of [MkDocs Bootstrap](https://github.com/mkdocs/mkdocs-bootstrap) `pip install mkdocs-bootstrap==0.1.1` 13 | 1. Install v0.15.3 of [MkDocs](http://www.mkdocs.org/#installation). `pip install mkdocs==0.15.3` 14 | 1. Install v0.2.4 of the [MkDocs Material theme](https://github.com/squidfunk/mkdocs-material). `pip install mkdocs-material==0.2.4` 15 | 1. Install v6.2.1 of [MkDocs PyMdown Extensions](https://squidfunk.github.io/mkdocs-material/extensions/pymdown/). `pip install pymdown-extensions==6.2.1` 16 | 1. To test locally, run `mkdocs serve` from the project directory. 17 | 18 | ## Deploying 19 | 1. Run `mkdocs build --clean` to produce the static site for upload. 20 | 1. Upload the `site` directory to S3 (or wherever you would like it to be hosted). 21 | 22 | aws s3 sync ./site/ s3://[BUCKET_NAME] \ 23 | --acl public-read \ 24 | --exclude "*.py*" \ 25 | --delete 26 | 27 | ## License 28 | [Apache 2](http://www.apache.org/licenses/LICENSE-2.0) (See [LICENSE](LICENSE) file) 29 | 30 | ## Contributing 31 | 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. 32 | 33 | Here is our preferred process for submitting a pull request, 34 | 35 | 1. Fork it ( https://github.com/PagerDuty/incident-response-docs/fork ) 36 | 1. Create your feature branch (`git checkout -b my-new-feature`) 37 | 1. Commit your changes (`git commit -am 'Add some feature'`) 38 | 1. Push to the branch (`git push origin my-new-feature`) 39 | 1. Create a new Pull Request. 40 | -------------------------------------------------------------------------------- /docs/about.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/incident_response_docs.png 3 | --- 4 | ![PagerDuty](./assets/img/headers/pagerduty_logo.png) 5 | 6 | 7 | このサイトはPagerDutyのインシデント対応プロセスの一部をドキュメント化しました。 8 | これはPagerDutyの全ての重大インシデントで使用している、全ての新入オンコールエンジニアが利用している、社内ドキュメントの縮小版です。 9 | インシデントへの対策だけではなく、インシデント発生中やインシデント収束後についても述べています。 10 | 11 | 重大インシデントを取り扱うプロセスについて議論している企業は少ししかありません。 12 | 私たちのドキュメントコミュニティに公開して、独自のプロセスを策定したい人にとって役立つことを期待します。 13 | また他の人に改善を提案できる機会を提供し、それがみんなの助けになることでしょう。 14 | 15 | ## これは何ですか? 16 | 17 | どうやって効果的にオンコールに対応し、発生するかもしれない重大インシデントの効率的な対応の仕方を紹介します。 18 | 苦労して学んだ教訓を、すばやく習得できるトレーニング資料と共に提供します。 19 | 20 | ## これは誰のためですか? 21 | 22 | これはオンコール参加者と、運用上のインシデント対応プロセスに関わっている人たちのためです。 23 | またインシデント対応プロセスを制定したい人も対象とします。 24 | 25 | ## なぜ必要ですか? 26 | 27 | インシデント対応は絶対に必要ないと願いたいですが、必要になったときは、スムーズかつシームレスに済ませたいです。 28 | 通常、社内でのインシデントの対応方法は、時間とともに蓄積されて、インシデントとともに改善されています。 29 | [PagerDutyの重大インシデント向けのアプリケーション](https://www.pagerduty.com/applications/#major-incidents-application)などのツールは問題の迅速な収束に役立ちますが、実行するプロセスもまた重要です。 30 | このドキュメントにより、私たちが数年にもわたり築き上げてきたものを最初から学ぶことができます。 31 | 可能な限り最短の復旧時間を実現できる、重大インシデントの扱い方を先取りできます。 32 | 33 | 34 | ## 何がカバーされていますか? 35 | 36 | [オンコール](/oncall/being_oncall.md)の始め方、[深刻度](/before/severity_levels.md)の定義、インシデントの[通話中のエチケット](/before/call_etiquette.md)、[ポストモーテム](/after/post_mortem_process.md)の方法、[ポストモーテムのテンプレート](/after/post_mortem_template.md)などが含まれます。 37 | 38 | ## なにがカバーされていないですか? 39 | 40 | これは社内ドキュメントの複製ですが、一部の状態が削除されています。 41 | 電話番号、(まだ)オープンソース化されていない内部ツールとシステムの名前、ダッシュボードの画像などです。 42 | 基本的にはPagerDuty固有の情報や、秘密情報が含まれているものは共有していません。 43 | 44 | ## License 45 | 46 | このドキュメントおよびその邦訳版はApache License 2.0の元で提供されます。 47 | 商用利用および個人利用で、このドキュメントの利用、編集ができます。 48 | ただし元の著作権情報と、元のLICENSEファイルを含める必要があります。 49 | 50 | PagerDutyの顧客であろうとなかろうと、このドキュメントを自社の内部で使用できるようにします。 51 | PagerDutyのGitHubアカウントで、全てのドキュメントのソースコードを閲覧できます。 52 | レポジトリをフォークして、独自のドキュメントのベースとして自由に利用できます。 53 | -------------------------------------------------------------------------------- /docs/after/after_an_incident.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/resolved.png 3 | description: 重大インシデント収束後に何をすべきか。フォローアップとレビューについて紹介します。 4 | --- 5 | 6 | 重大インシデント収束後に何をすべきか。 7 | 事後対応とレビューについて紹介します。 8 | 9 | ## 各役割ごとの事後対応 10 | 11 | インシデントで直接発生したフォローアップ項目に加えて、それぞれの役割ごとにいくつかのフォローアップタスクがあります。 12 | これらは情報の整理と顧客に対しての補足など、軽微な作業であることが多いです。 13 | 14 | ### インシデントコマンダーのステップ 15 | 16 | 1. PagerDuty内のインシデントを更新します。 17 | * 関連するインシデントを最初のインシデントに関連付ける。 18 | * 最終的なインシデントの深刻度を設定する。 19 | * インシデントを解決する。 20 | 21 | 1. インシデントに対するポストモーテムを作成し、オーナーを割り当てる。 22 | 23 | 1. 関係するステークホルダーに対して、インシデントが発生したこととポストモーテムへのリンクを送る。 24 | 25 | 1. ときどきポストモーテムの進捗をチェックして、目的の時間までに終わるようにする。 26 | 27 | ### 補佐のステップ 28 | 29 | インシデント解決後は追加の作業はありません。 30 | しかしインシデントコマンダーが各手順で確認する事があるかもしれません。 31 | 32 | ### 記録係のステップ 33 | 34 | 1. チャットの会話を確認して、主要なイベントを関連する項目を抜き出します。 35 | 36 | 1. 全ての `TODO` 項目をポストモーテムに追加します。 37 | 38 | ### 内容領域専門家のステップ 39 | 40 | 1. ポストモーテムに重要と思われるメモを追加します。 41 | 42 | ### 顧客連絡のステップ 43 | 44 | 1. インシデントについて受け取った問い合わせへの返答をします。 45 | 46 | 1. ポストモーテムプロセスをフォローアップして、外部向けのメッセージができればステータスページに更新します。 47 | 48 | ### 内部連絡のステップ 49 | 50 | インシデント解決後は追加の作業はありません。 51 | しかしインシデントコマンダーから、ステークホルダーへの回答について確認することがあるかも知れません。 52 | 53 | ## インシデントのレビュー 54 | 55 | インシデントの詳細をレビューして、問題の原因や発生した理由、そして再発防止のために何ができるか確認するのは大切です。 56 | これらは、アフターアクションレビュー、インシデントレビュー、フォローアップレビューなどと呼ばれます。 57 | 私たちはポストモーテムと呼びます。 58 | 59 | 私たちの[ポストモーテムプロセス](post_mortem_process.md)で詳しく説明します。 60 | 61 | ## プロセスのレビュー 62 | 63 | インシデントのレビューと同じように、プロセスのレビューも大切です。 64 | インシデントに適切に対応できたか、また改善できる部分はあるか、などです。 65 | 66 | このレビューは正式なやり方はまだありません。 67 | 普段はインシデントコマンダーが何人か集まり、他の手段が無かったか、インシデント対応プロセスに追加できる改善点はないかを議論します。 68 | 69 | この打ち合わせに興味がある場合は、参加したいとインシデントコマンダーの誰かに伝えてください。 70 | -------------------------------------------------------------------------------- /docs/after/effective_post_mortems.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/blameless.png 3 | description: 効果的なポストモーテムを書くことで、ミスに早く気づき、私たちのシステムとプロセスの全てを改善できます。私たちは最大限の恩恵を受けるため、詳細かつ正確なポストモーテムを書くことを心がけています。このガイドではポストモーテムが効果的になるようないくつの事柄を説明します。 4 | --- 5 | 6 | 効果的なポストモーテムを書くことで、ミスに早く気づき、私たちのシステムとプロセスの全てを改善できます。 7 | 私たちは最大限の恩恵を受けるため、詳細かつ正確なポストモーテムを書くことを心がけています。 8 | このガイドではポストモーテムが効果的になるようないくつの事柄を説明します。 9 | 10 | ## やること 11 | 12 | * タイムラインがイベントに対して正確であることを確認してください。 13 | * 新しくチームに入った人が理解できるように、技術用語や略語を説明してください。 14 | * [インシデントによって、サービスの正常性や回復性への理解につながるか議論します。](https://www.pagerduty.com/blog/postmortem-understand-service-reliability/). 15 | 16 | ## やらないこと 17 | 18 | * 本当にサービスが停止した場合を除き「停止」という言葉は使わないでください。 19 | 私たちはインシデントの影響を正確に反映したいので、「停止」という言葉は意味が広いです。 20 | また顧客に対して何もできなかったと思わせることになります。 21 | * 「見栄えを良くする」ために詳細やイベントを書き換えないでください。 22 | 効果的なポストモーテムにならないので、自分自身にも正直である必要があります。 23 | * 名前を挙げたり恥をかかせないようにしてください。 24 | ポストモーテムは誰かを責めないようにします。 25 | もし誰かが壊れる変更をデプロイしても、それは彼らの失敗ではなく、破壊的な変更ができるシステムである私たちの責任です。 26 | 27 | 28 | ## 推奨事項 29 | 30 | * 「ヒューマンエラー」という概念を避けます。 31 | これは上記の「名前を挙げたり恥をかかせない」と言うのに関連してますが、微妙な違いがあります。 32 | 人に起因するミスはとても稀で、多くの場合は対処すべき要因があります(たとえば、人間が実行するスクリプトにレートリミットが無かったり、ドキュメントが古かったり)。 33 | * タイムライン、または説明の節で、仮定の話は避けます。 34 | たとえば「早朝からサービスXのトラフィック増加が確認でき、リクエストへの応答が停止した。 _*もしサービスXに*_ レートリミットがあれば、リクエストに失敗 _*していないだろう*_。」「今晩にサービスXのレスポンスが遅くなり始めました。これはCPU使用率の上昇を検知する _*モニタリングが不十分*_ でした。」 35 | この2つの例は実際に起きた問題と、対策の仮定を混同して議論しています。 36 | これらは別々に適切に議論できるようにします。 37 | * 以下のビデオは上記の点について詳しく説明しています。 38 | * "[Three analytical traps in accident investigation](https://www.youtube.com/watch?v=TqaFT-0cY7U)" 39 | * "[Two views on Human Error](https://www.youtube.com/watch?v=rHeukoWWtQ8)" 40 | 41 | ## レビュー 42 | 43 | 設定したミーティングの前にレビューできるSlackルームがあります。 44 | 以下の観点でレビューします。 45 | 46 | * 詳細が十分に説明されているか? 47 | * 問題の原因を指し示すだけでなく、問題の根本原因まで掘り下げて議論されているか? 48 | * 「何が起こったか」と「どう修正するか」を分けて説明できてるか。 49 | * ポストモーテムが理解できるように書かれているか? 50 | * 外部への告知メッセージは顧客が納得できるか、怒らせてしまわないか? 51 | 52 | ポストモーテムのレビューは単なるタイポを指摘するだけではありません(外部告知にはスペルミスがないことを確認する必要があります)。 53 | 最大限の恩恵を受けるための、価値のある変更ができる建設的なフィードバックを提供します。 54 | 55 | ## 例 56 | 57 | 以下に他社のポストモーテムの例を示します。 58 | 59 | * [Stripe](https://support.stripe.com/questions/outage-postmortem-2015-10-08-utc) 60 | * [LastPass](https://blog.lastpass.com/2015/06/lastpass-security-notice.html/comment-page-2/) 61 | * [AWS](https://aws.amazon.com/message/5467D2/) 62 | * [Twilio](https://www.twilio.com/blog/2013/07/billing-incident-post-mortem-breakdown-analysis-and-root-cause.html) 63 | * [Heroku](https://status.heroku.com/incidents/151) 64 | * [Netflix](http://techblog.netflix.com/2012/10/post-mortem-of-october-222012-aws.html) 65 | * [GOV.UK Rail Accident Investigation](https://www.gov.uk/government/publications/kyle-beck-safety-digest/near-miss-at-kyle-beck-3-august-2016) 66 | * [A List of Post-mortems!](https://github.com/danluu/post-mortems) 67 | 68 | ## 役立つ情報 69 | 70 | * [Advanced PostMortem Fu and Human Error 101 (Velocity 2011)](http://www.slideshare.net/jallspaw/advanced-postmortem-fu-and-human-error-101-velocity-2011) 71 | * [Blame. Language. Sharing.](http://fractio.nl/2015/10/30/blame-language-sharing/) 72 | -------------------------------------------------------------------------------- /docs/after/post_mortem_process.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/post-mortem_process.png 3 | description: 全ての重大インシデント (SEV-2/SEV-1) では、ポストモーテムによるフォローアップが必要です。誰も責めず、何が問題でインシデントを引き起こしたか、今後に再発を防止するために何ができるかを詳細に記述します。 4 | --- 5 | ![ポストモーテム](../assets/img/headers/pagerduty_post_mortem.jpg) 6 | 7 | 全ての重大インシデント (SEV-2/SEV-1) では、ポストモーテムによるフォローアップが必要です。 8 | 誰も責めず、何が問題でインシデントを引き起こしたか、今後に再発を防止するために何ができるかを詳細に記述します。 9 | インシデント対応プロセス自身も含める必要があります。 10 | 11 | !!! warning "ポストモーテムをおろそかにしないで" 12 | インシデント対応後のポストモーテムをおろそかにしないでください。 13 | ポストモーテムがないと、何が正しいのか、どこが改善できるのか、そして最も重要な再発防止策がわからなくなります。 14 | よく設計され、誰も責めないポストモーテムは、チームに継続的に学ぶ機会を与え、インフラとインシデント対応プロセスを反復的に改善できます。 15 | 16 | ## オーナーの指名 17 | 18 | 最初のステップはポストモーテムのオーナーを指名することです。 19 | これはインシデントコマンダーが、重大インシデントの通話の終わり、または直後に指名します。 20 | オーナーはポストモーテムを記録し、ログを精査し、追加調査を管理し、全ての関係者に情報を提供する責務があります。 21 | 詳しい手順は次で説明します。 22 | 23 | ## オーナーの責務 24 | 25 | ポストモーテムのオーナーになると次のような責務があります。 26 | 27 | * ポストモーテムのミーティングを(共有カレンダーに)設定し、関係者を招待します(SEV-1の場合は**3営業日**以内、SEV-2の場合は**5営業日**以内が望ましいです)。 28 | * インシデントの調査をして、他のチームから調査の助けになりそうな人を選びます。 29 | * 必要な内容をまとめてページを更新します。 30 | * 追加調査用のJIRAチケットを作成しします(_あなたの責務はチケットを作成することで、追加調査することではありません_)。 31 | * ミーティングの前に、関係者とポストモーテムのレビューをします。 32 | * ポストモーテムのミーティングで、議題について説明します(インシデントコマンダーがミーティングを進行するが、実際はあなたがほとんど喋ります)。 33 | * ポストモーテムの結果を内部に伝えます。 34 | 35 | 36 | ## ステータス 37 | 38 | 私たちのポストモーテムには「ステータス」フィールドがあります。 39 | このフィールドの使い方は以下のとおりです。 40 | 41 | | Status | Description | 42 | | - | - | 43 | | **Draft** | ポストモーテムの内容をまだ書いてる段階です。 | 44 | | **In Review** | ポストモーテムの内容が書き終わり、レビュー可能な状態です。 | 45 | | **Reviewed** | ミーティングが終了し、内容がレビューされて確認できました。
もし外部への告知が必要な場合は、ステータスページを更新するようカスタマーサポートに連絡します。 | 46 | | **Closed** | ポストモーテムに関する新たな作業はありません(まだ解決してない問題はJIRAによって追跡します)。
もし外部への告知がない場合は、ミーティング終了後このステータスをスキップできます。
もし外部への告知が必要な場合は、サポートチームが告知を出したあとに、サポートチームがステータスを更新します。 | 47 | 48 | ## ポストモーテム 49 | 50 | ポストモーテムのオーナーに指名されたときは、ポストモーテムの作成と関連情報を更新しましょう。 51 | 52 | 1. (もしインシデントコマンダーがまだ作って無ければ)ポストモーテムを作成します。 53 | 54 | 1. SEV-1の場合は**3営業日**以内に、SEV-2の場合は**5営業日**以内に、ポストモーテムのミーティングを設定します。 55 | ポストモーテムを書き始める前にミーティングを設定したほうが良いです。 56 | * 共有カレンダーに「インシデントポストモーテムミーティング」を追加します。 57 | 58 | 1. 持っている全ての情報を記入します。 59 | * タイムラインに主眼を置いて書くべきです。 60 | * タイムラインには、重要なステータスや影響の変化や、応答者によって行われた主要なアクションを記入すべきです。 61 | * Slackの履歴をさかのぼり、誰が対応したかを記入します。 62 | * インシデントコマンダーと記録係もリストに入れます。 63 | 64 | 1. より詳細な情報をポストモーテムに記入します。 65 | * タイムラインのそれぞれの項目では、データのもととなるメトリクスやサードパーティのページを特定します。 66 | これはDataDog上のグラフや、SumoLogicの検索結果、ツイートなどへのリンクです。 67 | タイムラインで説明しようとしているデータなら何でも構いません。 68 | * インシデントの通話録音へのリンクを追加します。 69 | 70 | 1. インシデントの解析を行います。 71 | * 全てのインシデントに関するデータを収集します。 72 | なにが原因で、どれくらいの顧客に影響があったか、などです。 73 | * どうやってデータを収集したかを他の人がわかるように、全てのコマンドやクエリを残します。 74 | * インシデントの根本原因を特定します(なにが起こって _なぜ_ 発生したのか)。 75 | 76 | 1. 顧客に送られる告知メッセージを書きます。これは顧客に送る前に、ポストモーテムのミーティングで確認します。 77 | * 本当にサービスが停止している場合を除いて、「停止(outage)」という言葉を使わないでください。 78 | 代わりに「インシデント」または「サービス劣化」などの用語を使ってください。 79 | 顧客は「停止」という言葉を見ると、最悪の事態を想定します。 80 | * 過去のポストモーテムから、どのような文章を送るべきか確認できます。 81 | 82 | 1. 内部関係者でポストモーテムの内容やスタイルをレビューするためにSlackにリンクを送ります。 83 | これは設定したミーティングの**24時間より前**を目指すべきです。 84 | * 経験豊富なポストモーテム執筆者が、どれくらい詳細に書くかや、ポストモーテムの内容についてレビューしてくれます。 85 | これでミーティング中の無駄な時間を回避します。 86 | 87 | 1. ポストモーテムのミーティングに出席します(詳細は後述します)。 88 | 89 | 1. 追加調査のためのJIRAチケットを作成します(あるいはチケットを作成前に方針を決めたい場合は、議論のためのメモを書き留めておきます)。 90 | * Slackの履歴を遡り、全てのTODOを拾い上げます。 91 | * 全てのチケットに、緊急度のレベルと日付タグを付与します。 92 | * インシデント再発を減らすための全てのアクション。 93 | * (これはトレードオフですが、それでも構わないです。ときには費やす労力が結果に見合わないこともあります)。 94 | * インシデント対応プロセスを良くするためのアクションを特定します。 95 | * チケットをあまり作りすぎないようにしましょう。絶対に対応すべきP0/P1のチケットのみを作成します。 96 | 97 | 1. インシデントから何を学んだかを社内に報告します。 98 | * 関係するステークホルダーに、結果と主に何を学んだかをメールします。 99 | * ポストモーテムへのリンクを含めます。 100 | 101 | ## ポストモーテムのミーティング 102 | 103 | このミーティングは通常15-30分で、ポストモーテム手順のまとめのために実施します。 104 | 何が発生して、どうすればよかったか、必要な追加調査について話し合います。 105 | このミーティングの目的は、事実や解析、推奨事項に関する認識をあわせ、信頼性に関する問題が発生していることを広く認知してもらいます。 106 | 107 | ポストモーテムのミーティングには、以下の人たちを招待すべきです。 108 | 109 | * 常に参加 110 | * インシデントコマンダー 111 | * インシデントコマンダーの補佐(いれば) 112 | * インシデントに関するサービスオーナー 113 | * インシデントに関わった主要なエンジニアや対応者 114 | * 影響のあったシステムのエンジニアリングマネージャー 115 | * 影響のあったシステムのプロダクトマネージャー 116 | * 任意参加 117 | * 顧客連絡(SEV-1のみ) 118 | 119 | インシデントコマンダーが会議を進行して議題が逸れないようにします。 120 | しかしオーナーがポストモーテムを通してほとんど喋ることになります。 121 | 122 | ミーティングの主な議題は以下のとおりです 123 | 124 | 1. タイムラインの要約と確認。 125 | 1. 重要な点と変わった点の要約。 126 | 1. 問題をどうすれば気づくことができたかの議論。 127 | * [カナリア](https://www.pagerduty.com/blog/continuous-build-break-fix-fast#canary-releases)では発見できなかったか? 128 | * テストや、ロードテストの環境で発見できなかったか? 129 | 1. 顧客への影響について議論。顧客からのコメントなどは無かったか。 130 | 1. 作成されたアクションの各項目をレビューし、適切かどうか、追加でやるべきかどうかを議論。 131 | 132 | ## 例 133 | 134 | 他社のポストモーテムの例をいくつか列挙します 135 | 136 | * [Stripe](https://support.stripe.com/questions/outage-postmortem-2015-10-08-utc) 137 | * [LastPass](https://blog.lastpass.com/2015/06/lastpass-security-notice.html/comment-page-2/) 138 | * [AWS](https://aws.amazon.com/message/5467D2/) 139 | * [Twilio](https://www.twilio.com/blog/2013/07/billing-incident-post-mortem-breakdown-analysis-and-root-cause.html) 140 | * [Heroku](https://status.heroku.com/incidents/151) 141 | * [Netflix](http://techblog.netflix.com/2012/10/post-mortem-of-october-222012-aws.html) 142 | * [GOV.UK Rail Accident Investigation](https://www.gov.uk/government/publications/kyle-beck-safety-digest/near-miss-at-kyle-beck-3-august-2016) 143 | * [A List of Post-mortems!](https://github.com/danluu/post-mortems) 144 | 145 | ## 参考文献 146 | 147 | * [Advanced PostMortem Fu and Human Error 101 (Velocity 2011)](http://www.slideshare.net/jallspaw/advanced-postmortem-fu-and-human-error-101-velocity-2011) 148 | * [Blame. Language. Sharing.](http://fractio.nl/2015/10/30/blame-language-sharing/) 149 | -------------------------------------------------------------------------------- /docs/after/post_mortem_template.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/post-mortem_template.png 3 | description: これはPagerDutyで利用している標準的なポストモーテムのテンプレートです。それぞれのセクションでは、あなたがポストモーテムに書くべき情報について説明します。 4 | --- 5 | 6 | これはPagerDutyで利用している標準的なポストモーテムのテンプレートです。 7 | それぞれのセクションでは、あなたがポストモーテムに書くべき情報について説明します。 8 | 9 | --- 10 | 11 | !!! note "ガイドライン" 12 | このページはインシデント発生後5営業日以内に設定されるポストモーテムのミーティングで確認することを目的とします。 13 | 最初のステップはインシデント発生の5営業日以内に、共有カレンダーにミーティングを設定することです。 14 | 情報が埋まるまでミーティングの設定を待ってはいけませんが、ミーティングまでにページができているようにしてください。 15 | 16 | ** ポストモーテムのオーナー:** _ここにはあなたの名前が入ります。_ 17 | 18 | ** ミーティングの対象:** _インシデント発生後5営業日以内に、「インシデントポストモーテムミーティング」を共有カレンダーにスケジュールします。ここに日付を入力してください_ 19 | 20 | ** 通話の記録:** _インシデントの通話の記録へのリンクを貼る。_ 21 | 22 | ## オーバービュー 23 | 24 | _**短い**1、2文で、インシデントの原因や、タイムライン、および影響などを要約します。 25 | たとえば「8月9日の朝、プライマリデータベースマシンの暴走により1分間のSEV-1が発生しました。この遅延により、0.024%のPagerDutyアラートがSLA違反となりました。」_ 26 | 27 | ## 何が起こったか 28 | 29 | _何が起こったかを簡潔に書く_ 30 | 31 | ## 根本原因 32 | 33 | _問題を引き起こした全ての条件を書く。問題を悪化させるようなアクションをしても、対応中に犯したミスから学ぶために全て書く。_ 34 | 35 | ## 解決 36 | 37 | _何によって問題が解決したか書く。一時的な措置を施した場合は、長期的な対策と共に書く。_ 38 | 39 | ## 影響 40 | 41 | _具体的な数字で正確に書く_ 42 | 43 | | | | 44 | | - | - | 45 | | SEV-1の時間 | ?分 | 46 | | SEV-2の時間 | ?分 | 47 | | SLA違反となった通知 | ??% (?? 中 ??) | 48 | | 破棄された/処理されなかったイベント | ??% (?? 中 ??) _通常は0であるべきだが確認する_ | 49 | | 影響を受けたアカウント | ?? | 50 | | 影響を受けたユーザー数 | ?? | 51 | | 発生したサポートリクエスト | ?? _関連するチケットへのリンク_ | 52 | 53 | ## 対応者 54 | 55 | * _インシデントコマンダーはだれか?_ 56 | * _補佐は誰か?_ 57 | * _他に誰が関わったか?_ 58 | 59 | ## タイムライン 60 | 61 | _重要な時刻を書く。(1) 原因が発生した時刻、 (2) ページされた時刻、 (3) ステータスページが更新された時刻(つまり外部告知された時刻)、(4) 重要なアクションを実行した時刻、(5) SEV2/SEV-1が終わった時刻、(6) タイムスタンプが取得されたツール、ログへのリンク_ 62 | 63 | | Time (UTC) | Event | Data Link | 64 | | ---------- | ----- | --------- | 65 | 66 | ## どうだったか? 67 | 68 | ### うまくいったこと 69 | 70 | * _あなたがうまくいったと思ったことや、書きたいことをリストにします。全てを挙げなくても大丈夫です。_ 71 | 72 | ### うまくいかなかったこと 73 | 74 | * _あなたがうまくいかなかったと思ったことをリストにします。その目的は、プロセスを改善して全ての点でフォローアップするためです。_ 75 | 76 | ## アクションアイテム 77 | 78 | _各アクションアイテムはJIRAチケットの形式で、それぞれのチケットは "sev1_YYYYMMDD" と "sev1" のタグを持ちます。 79 | アクションアイテムは (1) 再発防止のための修正、(2) 問題が再発しても問題が小さくなるような措置、 (3) 内部メールやステータスページの更新などのポストモーテムの残り作業、 (4) インシデント対応プロセスの改善、などです。_ 80 | 81 | ## メッセージ 82 | 83 | ### 内部メール 84 | 85 | _従業員に対するフォローアップです。ポストモーテムミーティングが終わった後すぐに送るべきです。メールにはインシデントの簡単な説明とwikiへのリンクを貼ります_ 86 | 87 | > 何が起こったか、ポストモーテムへのページがどこにあるかを、簡単に要約します 88 | 89 | ### 外部告知 90 | 91 | _インシデントに関してstatus.pagerduty.comに掲載することです。顧客に何を伝えて、どう謝罪しますか?(謝罪は定型文ではなく真摯に書くべきです)_ 92 | 93 | > 概要 94 | 95 | > 何が起こったか 96 | 97 | > これに対して私たちは何をしている 98 | -------------------------------------------------------------------------------- /docs/assets/css/custom.css: -------------------------------------------------------------------------------- 1 | /* CSS alterations for this particular site only. */ 2 | 3 | /* Heading when printing */ 4 | .article h1:before { 5 | content: 'Incident Response'; 6 | } 7 | 8 | /* Super horrible hack to get the training PDF images correct */ 9 | #national-incident-management-system-nims ~ p img { 10 | display: inline; 11 | } 12 | #national-incident-management-system-nims ~ p:nth-of-type(8) { 13 | text-align: center; 14 | } 15 | 16 | /* Custom severity table */ 17 | table.custom-table td ul { 18 | margin-top: -0.8em; 19 | padding-top: 0px; 20 | padding-left: 0px; 21 | } 22 | 23 | table.custom-table td.warning { 24 | font-weight: bold; 25 | text-align: center; 26 | color: #f00; 27 | background: #ffe7e7; 28 | } 29 | 30 | table.custom-table td.sev-1 { 31 | background: #ffe7e7; 32 | color: #f00; 33 | font-weight: bold; 34 | } 35 | 36 | table.custom-table td.sev-2 { 37 | background: #ffd; 38 | color: rgb(255,153,0); 39 | font-weight: bold; 40 | } 41 | 42 | table.custom-table td.sev-3 { 43 | background: #e0f0ff; 44 | color: rgb(51,102,255); 45 | font-weight: bold; 46 | } 47 | 48 | table.custom-table td.sev-4 { 49 | background: #f0f0f0; 50 | color: rgb(128,128,128); 51 | font-weight: bold; 52 | } 53 | 54 | table.custom-table td.sev-5 { 55 | background: #ddfade; 56 | color: rgb(0,128,0); 57 | font-weight: bold; 58 | } 59 | 60 | table.custom-table td.centered { 61 | text-align: center; 62 | } 63 | 64 | /* Contact summary table */ 65 | #contact-summary { 66 | margin-bottom: -2em; 67 | background: #fff; 68 | color: #000; 69 | } 70 | 71 | /* Reviewed dates */ 72 | #reviewed-dates { 73 | margin-top: 1em; 74 | text-align: right; 75 | } 76 | 77 | #reviewed-dates abbr { 78 | border-bottom: 1px dashed #aaa; 79 | } 80 | 81 | #reviewed-dates span { 82 | padding-left: 1em; 83 | } 84 | -------------------------------------------------------------------------------- /docs/assets/css/slides.css: -------------------------------------------------------------------------------- 1 | /* 2 | Theme used on pages which are presenting slides from a talk with presenter notes. It will also need 3 | the usual pagerduty.css loaded beforehand as it overrides from that. 4 | */ 5 | 6 | /* Kill the left margin so we can use the space for slides. */ 7 | .article { 8 | margin-left: 0px; 9 | } 10 | 11 | /* Hide the nav drawer when larger screen, want the space for slides. */ 12 | @media only screen and (min-width: 959px) { 13 | .drawer { 14 | display: none; 15 | } 16 | } 17 | 18 | /* Background should go full width. */ 19 | .backdrop-paper:after { 20 | margin-left: 0px 21 | } 22 | 23 | /* We want the slides to take up 50% width, with an extra 2% padding on the right. 24 | Any line tagged with "slide_dim:" will need to be changed if those values are altered. */ 25 | 26 | /* Slide text always appears on right hand side. */ 27 | .article .wrapper > p { 28 | width: 100%; 29 | padding-left: 51%; /* slide_dim: Width of slide + padding. */ 30 | } 31 | 32 | /* Clear all floats between slides. */ 33 | .article hr { 34 | clear: both; 35 | height: 0em; 36 | visibility: hidden; 37 | } 38 | 39 | .article hr + hr { 40 | visibility: visible; 41 | margin-top: 0em; 42 | padding-bottom: 1em; 43 | margin-bottom: 1em; 44 | } 45 | 46 | /* Display slide images by the side. */ 47 | .article p > label, 48 | .article p > img, 49 | .article p > em img { 50 | display: block; 51 | float: left; 52 | z-index: 99; 53 | width: 100%; /* slide_dim: Full width of the float, which is 50% of container. */ 54 | box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.2); /* Keep it subtle. */ 55 | margin-left: -104%; /* slide_dim: 2*2% difference so we have some padding between slide and text. */ 56 | } 57 | 58 | /* Videos should take up full frame. */ 59 | .article iframe { 60 | position: absolute; 61 | top: -1em; 62 | left: 0px; 63 | width: 100%; 64 | height: 100%; 65 | } 66 | 67 | /* Hack to make image heights a 16:9 ratio. 68 | This way, they don't load in as 0 height, and then push all the content once the image loads. */ 69 | .article p label { 70 | position: relative; 71 | height: 0; 72 | padding-top: 56.25%; /* 16:9 */ 73 | z-index: 0; /* Don't show it above the hedaer. */ 74 | background: #f3f3f3; 75 | } 76 | 77 | .article p label img { 78 | position: absolute; 79 | top: 0px; 80 | left: 0px; 81 | } 82 | 83 | /* Emphesized images take full width as normal. */ 84 | .article p em label { 85 | width: 204%; 86 | margin-left: -104%; 87 | padding-top: 114.75%; /* 16:9 */ 88 | float: none; 89 | } 90 | 91 | .article p em label img { 92 | position: absolute; 93 | left: 104%; 94 | } 95 | 96 | /* Image Captions */ 97 | .article p img + em, 98 | .article p em + em, 99 | .article p a + em , 100 | .article p label + em { 101 | float: left; 102 | position: relative; 103 | width: 100%; 104 | margin-right: 0em; 105 | margin-top: 0em; 106 | margin-left: -104%; 107 | font-size: 0.8em; 108 | padding: 0em 0.2em; 109 | margin-top: 56.5%; /* Instead of padding. */ 110 | color: #353535; 111 | background: transparent; 112 | } 113 | 114 | /* Image References */ 115 | .article p img + em a, 116 | .article p em + em a, 117 | .article p a + em a, 118 | .article p label + em a { 119 | position: relative; 120 | margin-left: 1.5em; 121 | height: 1.7em; 122 | margin-top: -.1em; 123 | float: right; 124 | font-style: normal; 125 | } 126 | 127 | .article p img + em a:before, 128 | .article p em + em a:before, 129 | .article p a + em a:before, 130 | .article p label + em a:before { 131 | font-family: 'icons'; 132 | font-style: normal; 133 | color: #2196f3; 134 | content: "\e904"; 135 | position: absolute; 136 | left: -1.2em; 137 | } 138 | 139 | /* Emphesized image captions take full width as normal. */ 140 | .article p em + em { 141 | width: 204%; 142 | margin-left: -104%; 143 | padding-top: .2em; 144 | margin-top: 0%; 145 | } 146 | 147 | /* Slide titles. Only really used for anchors. */ 148 | .article h3 { 149 | margin-bottom: -3.5em; 150 | padding-bottom: 0em; 151 | padding-top: 0em; 152 | padding-left: .5em; 153 | margin-top: 0.5em; 154 | margin-left: 0em; 155 | color: #fff; 156 | text-indent: -999px; /* Hide the text, since only for anchors anywya. */ 157 | } 158 | 159 | /* Keep the permalinks though. */ 160 | .article h3 a.headerlink { 161 | text-indent: 0px; 162 | color: #888; 163 | float: left; 164 | margin-left: -1.7em; 165 | } 166 | 167 | /* Lists */ 168 | .article ul, 169 | .article ol { 170 | padding-left: 52%; 171 | } 172 | 173 | .article blockquote ul, 174 | .article blockquote ol { 175 | padding-left: 1em; 176 | margin-top: 0em; 177 | margin-bottom: 1em; 178 | } 179 | 180 | .article .admonition ul, 181 | .article .admonition ol { 182 | padding-left: 1em; 183 | } 184 | 185 | /* Offset anchor targets, since we need to account for the header bar. */ 186 | .article h3:target:before { 187 | content: ""; 188 | display :block; 189 | height: 75px; 190 | margin: -75px 0 0; 191 | } 192 | 193 | /* If linked to an anchor, higlight the image. */ 194 | .article h3:target + p img { 195 | box-shadow: 0px 0px 8px rgba(37, 193, 81, 0.5); 196 | transition: box-shadow ease-in-out 0.2s; 197 | } 198 | 199 | /* Quotes should be half width. */ 200 | .article blockquote { 201 | width: 45%; 202 | margin-left: 55%; 203 | } 204 | 205 | /* Asides should also be half width. */ 206 | .article details { 207 | width: 45%; 208 | margin-left: 55%; 209 | } 210 | 211 | /* Unless we specifically want full width. */ 212 | .article details.full-width { 213 | width: calc(100% - 3em); 214 | margin-left: 3em; 215 | margin-top: 1.6em; 216 | } 217 | 218 | /* For smaller screens, show images full size. */ 219 | @media only screen and (max-width: 720px) { 220 | /* No side-by-side content. */ 221 | .article .wrapper > p { 222 | padding-left: 0%; 223 | } 224 | 225 | /* Don't float images, full width. */ 226 | .article p img, 227 | .article p label, 228 | .article p em label { 229 | float: none; 230 | margin-left: 0%; 231 | width: 100%; 232 | } 233 | 234 | /* Reset ratio for emphasized images. */ 235 | .article p em label { 236 | padding-top: 56.25%; 237 | } 238 | 239 | /* Reset emphasized images to normal. */ 240 | .article p em img, 241 | .article p em label img { 242 | min-width: 100%; 243 | margin-left: 0px; 244 | left: 0; 245 | } 246 | 247 | /* Reset image captions. */ 248 | .article p img + em, 249 | .article p em + em, 250 | .article p a + em, 251 | .article p label + em { 252 | float: none; 253 | width: 100%; 254 | margin-left: 0%; 255 | padding-top: 0%; 256 | } 257 | 258 | /* Move permalinks to better position. */ 259 | .article h3 a.headerlink { 260 | margin-left: -1.4em; 261 | } 262 | 263 | /* Indent lists slightly. */ 264 | .article ul, 265 | .article ol { 266 | padding-left: 1em; 267 | } 268 | } 269 | 270 | 271 | /* Hide all checkboxes, using it for a hacky CSS-only lightbox effect. */ 272 | .article input[type=checkbox] { 273 | display: none; 274 | } 275 | 276 | .article label { 277 | display: block; 278 | } 279 | 280 | /* Lightbox animation. */ 281 | @-webkit-keyframes zoomIn { 282 | from { 283 | opacity: 0; 284 | -webkit-transform: scale3d(0.3, 0.3, 0.3); 285 | transform: scale3d(0.3, 0.3, 0.3); 286 | } 287 | 288 | 50% { 289 | opacity: 1; 290 | } 291 | } 292 | 293 | @keyframes zoomIn { 294 | from { 295 | opacity: 0; 296 | -webkit-transform: scale3d(0.3, 0.3, 0.3); 297 | transform: scale3d(0.3, 0.3, 0.3); 298 | } 299 | 300 | 50% { 301 | opacity: 1; 302 | } 303 | } 304 | 305 | /* Lightbox background. */ 306 | .article input[type=checkbox]:checked + label { 307 | -webkit-perspective: 1000; 308 | position: fixed; 309 | float: none; 310 | left: 0; 311 | top: 0; 312 | display: flex; 313 | height: 100vh; 314 | width: 100vw; 315 | margin: 0px; 316 | z-index: 9; 317 | padding-top: 0px; 318 | transition: background 0.2s ease-in-out; 319 | background: rgba(0, 0, 0, 0.9); 320 | } 321 | 322 | /* Image. Using vh/vw to center it no matter the screen dimensions. */ 323 | .article input[type=checkbox]:checked + label img { 324 | width: auto; 325 | height: auto; 326 | left: initial; 327 | top: initial; 328 | position: initial; 329 | max-width: 90vw; 330 | max-height: 90vh; 331 | margin: auto; 332 | z-index: 9; 333 | animation: zoomIn 0.2s 0s 1 normal forwards; 334 | } 335 | 336 | .article em input[type=checkbox]:checked + label img { 337 | min-width: 0%; 338 | } 339 | 340 | .article input[type=checkbox]:checked + label:after, 341 | .article input[type=checkbox]:checked + label img:after { 342 | content: none; 343 | } 344 | 345 | /* Loading related icons. */ 346 | @font-face { 347 | font-family: 'loading'; 348 | font-style: normal; 349 | font-weight: normal; 350 | src: url('/incident-response-docs-ja/fonts/icons/loading.eot'); 351 | src: url('/incident-response-docs-ja/fonts/icons/loading.eot?#iefix') format('embedded-opentype'), 352 | url('/incident-response-docs-ja/fonts/icons/loading.woff') format('woff'), 353 | url('/incident-response-docs-ja/fonts/icons/loading.ttf') format('truetype'), 354 | url('/incident-response-docs-ja/fonts/icons/loading.svg#hour-glass') format('svg'); 355 | } 356 | 357 | /* For image lazy loading. */ 358 | .article label img { 359 | opacity: 1; 360 | -webkit-transition: opacity 0.2s ease-in-out; 361 | -moz-transition: opacity 0.2s ease-in-out; 362 | -ms-transition: opacity 0.2s ease-in-out; 363 | -o-transition: opacity 0.2s ease-in-out; 364 | transition: opacity 0.2s ease-in-out; 365 | } 366 | 367 | .article label.hidden img { 368 | opacity: 0; 369 | -webkit-transition: opacity 0s; 370 | -moz-transition: opacity 0s; 371 | -ms-transition: opacity 0s; 372 | -o-transition: opacity 0s; 373 | transition: opacity 0s; 374 | } 375 | 376 | /* Images loading via lazy loading, show a loading icon. */ 377 | .article label.hidden:after { 378 | content: "\e979"; /* Loading... */ 379 | font-family: 'loading'; 380 | color: #888; 381 | font-size: 1.5em; 382 | font-style: normal; 383 | text-align: center; 384 | padding-top: 25%; 385 | display: block; 386 | position: absolute; 387 | z-index: 2; 388 | top: 0; 389 | left: 0; 390 | width: 100%; 391 | height: 100%; 392 | background: #f3f3f3; 393 | } 394 | 395 | /* Remove any overlays for loaded images. */ 396 | .article label.loaded:after { 397 | content: none; 398 | } 399 | 400 | /* Show all images when printing. */ 401 | @media print { 402 | .article label.hidden img { 403 | opacity: 1; 404 | } 405 | } 406 | 407 | /* Images in the process of loading. */ 408 | .article label img { 409 | width: 100%; 410 | height: 100%; 411 | } 412 | 413 | /* Broken images, show a broken line icon. */ 414 | .article img:after { 415 | content: "\e900"; /* Broken link */ 416 | font-family: 'loading'; 417 | color: #888; 418 | font-size: 1.5em; 419 | font-style: normal; 420 | text-align: center; 421 | padding-top: 25%; 422 | display: block; 423 | position: absolute; 424 | z-index: 2; 425 | top: 0; 426 | left: 0; 427 | width: 100%; 428 | height: 100%; 429 | background: #f3f3f3; 430 | } 431 | 432 | /* Download links. */ 433 | .download-link { 434 | float: right; 435 | margin-top: 2.5em; 436 | margin-left: 1em; 437 | } 438 | 439 | #download-link-pdf a, 440 | #download-link-keynote a { 441 | display: inline-block; 442 | padding: 0 10px 0 6px; 443 | font-size: 12px; 444 | line-height: 30px; 445 | height: 30px; 446 | font-weight: 700; 447 | border-bottom: none; 448 | text-decoration: none; 449 | text-transform: uppercase; 450 | background: #06ac38; 451 | color: #fff; 452 | border-radius: 3px; 453 | -webkit-transition: box-shadow .4s,opacity .4s; 454 | transition: box-shadow .4s,opacity .4s; 455 | } 456 | 457 | .download-link a .icon { 458 | font-size: 18px; 459 | vertical-align: -4px; 460 | padding-right: 2px; 461 | } 462 | 463 | .download-link a:focus, 464 | .download-link a:hover { 465 | box-shadow: 0 4px 7px rgba(0,0,0,.23),0 8px 25px rgba(0,0,0,.05); 466 | opacity: .8; 467 | } 468 | 469 | /* For smaller screens, show button differently. */ 470 | @media only screen and (max-width: 540px) { 471 | .download-link { 472 | display: block; 473 | margin-top: 1.3em; 474 | float: none; 475 | text-align: right; 476 | } 477 | } 478 | 479 | /* Hide download link when printing. */ 480 | @media print { 481 | .download-link { 482 | display: none; 483 | } 484 | } 485 | 486 | /* Debugging outlines for lazy loading. */ 487 | /* 488 | .article label.hidden { outline: 2px solid #f00 !important; } 489 | .article label.loaded { outline: 2px solid #0f0 !important; } 490 | */ 491 | -------------------------------------------------------------------------------- /docs/assets/img/chatops/ic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/chatops/ic.png -------------------------------------------------------------------------------- /docs/assets/img/chatops/ic_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/chatops/ic_page.png -------------------------------------------------------------------------------- /docs/assets/img/chatops/ic_page_responders.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/chatops/ic_page_responders.png -------------------------------------------------------------------------------- /docs/assets/img/chatops/ic_page_rich.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/chatops/ic_page_rich.png -------------------------------------------------------------------------------- /docs/assets/img/chatops/ic_responders.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/chatops/ic_responders.png -------------------------------------------------------------------------------- /docs/assets/img/chatops/ic_who_rich.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/chatops/ic_who_rich.png -------------------------------------------------------------------------------- /docs/assets/img/chatops/status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/chatops/status.png -------------------------------------------------------------------------------- /docs/assets/img/chatops/status_stalk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/chatops/status_stalk.png -------------------------------------------------------------------------------- /docs/assets/img/chatops/test_for_failure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/chatops/test_for_failure.png -------------------------------------------------------------------------------- /docs/assets/img/covers/alerting_principles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/alerting_principles.png -------------------------------------------------------------------------------- /docs/assets/img/covers/anti-patterns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/anti-patterns.png -------------------------------------------------------------------------------- /docs/assets/img/covers/being_on-call.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/being_on-call.png -------------------------------------------------------------------------------- /docs/assets/img/covers/blameless.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/blameless.png -------------------------------------------------------------------------------- /docs/assets/img/covers/call_etiquette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/call_etiquette.png -------------------------------------------------------------------------------- /docs/assets/img/covers/chatops.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/chatops.png -------------------------------------------------------------------------------- /docs/assets/img/covers/complex_incidents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/complex_incidents.png -------------------------------------------------------------------------------- /docs/assets/img/covers/customer_liaison.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/customer_liaison.png -------------------------------------------------------------------------------- /docs/assets/img/covers/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/default.png -------------------------------------------------------------------------------- /docs/assets/img/covers/definitions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/definitions.png -------------------------------------------------------------------------------- /docs/assets/img/covers/deputy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/deputy.png -------------------------------------------------------------------------------- /docs/assets/img/covers/dont_panic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/dont_panic.png -------------------------------------------------------------------------------- /docs/assets/img/covers/getting_started.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/getting_started.png -------------------------------------------------------------------------------- /docs/assets/img/covers/incident.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/incident.png -------------------------------------------------------------------------------- /docs/assets/img/covers/incident_commander.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/incident_commander.png -------------------------------------------------------------------------------- /docs/assets/img/covers/incident_response_docs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/incident_response_docs.png -------------------------------------------------------------------------------- /docs/assets/img/covers/internal_liaison.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/internal_liaison.png -------------------------------------------------------------------------------- /docs/assets/img/covers/post-mortem_process.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/post-mortem_process.png -------------------------------------------------------------------------------- /docs/assets/img/covers/post-mortem_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/post-mortem_template.png -------------------------------------------------------------------------------- /docs/assets/img/covers/reading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/reading.png -------------------------------------------------------------------------------- /docs/assets/img/covers/resolved.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/resolved.png -------------------------------------------------------------------------------- /docs/assets/img/covers/roles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/roles.png -------------------------------------------------------------------------------- /docs/assets/img/covers/scribe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/scribe.png -------------------------------------------------------------------------------- /docs/assets/img/covers/security_incident.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/security_incident.png -------------------------------------------------------------------------------- /docs/assets/img/covers/severity_levels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/severity_levels.png -------------------------------------------------------------------------------- /docs/assets/img/covers/sme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/sme.png -------------------------------------------------------------------------------- /docs/assets/img/covers/training_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/training_overview.png -------------------------------------------------------------------------------- /docs/assets/img/covers/whos_on-call.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/covers/whos_on-call.png -------------------------------------------------------------------------------- /docs/assets/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/favicon.png -------------------------------------------------------------------------------- /docs/assets/img/headers/alert_fatigue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/headers/alert_fatigue.png -------------------------------------------------------------------------------- /docs/assets/img/headers/fountain_pen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/headers/fountain_pen.jpg -------------------------------------------------------------------------------- /docs/assets/img/headers/gene_kranz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/headers/gene_kranz.jpg -------------------------------------------------------------------------------- /docs/assets/img/headers/getting_started.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/headers/getting_started.jpg -------------------------------------------------------------------------------- /docs/assets/img/headers/incident.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/headers/incident.png -------------------------------------------------------------------------------- /docs/assets/img/headers/incident_command_support.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/headers/incident_command_support.jpg -------------------------------------------------------------------------------- /docs/assets/img/headers/incident_response.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/headers/incident_response.jpg -------------------------------------------------------------------------------- /docs/assets/img/headers/internal_liaison.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/headers/internal_liaison.jpg -------------------------------------------------------------------------------- /docs/assets/img/headers/obama_phone.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/headers/obama_phone.jpg -------------------------------------------------------------------------------- /docs/assets/img/headers/pagerduty_ir.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/headers/pagerduty_ir.jpg -------------------------------------------------------------------------------- /docs/assets/img/headers/pagerduty_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/headers/pagerduty_logo.png -------------------------------------------------------------------------------- /docs/assets/img/headers/pagerduty_post_mortem.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/headers/pagerduty_post_mortem.jpg -------------------------------------------------------------------------------- /docs/assets/img/headers/resources.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/headers/resources.jpg -------------------------------------------------------------------------------- /docs/assets/img/headers/server_incident.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/headers/server_incident.png -------------------------------------------------------------------------------- /docs/assets/img/headers/status_page.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/headers/status_page.jpg -------------------------------------------------------------------------------- /docs/assets/img/headers/who_oncall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/headers/who_oncall.png -------------------------------------------------------------------------------- /docs/assets/img/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/icon.png -------------------------------------------------------------------------------- /docs/assets/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/logo.png -------------------------------------------------------------------------------- /docs/assets/img/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/assets/img/misc/ack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/misc/ack.png -------------------------------------------------------------------------------- /docs/assets/img/misc/communicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/misc/communicate.png -------------------------------------------------------------------------------- /docs/assets/img/misc/escalation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/misc/escalation.png -------------------------------------------------------------------------------- /docs/assets/img/misc/handling_incidents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/misc/handling_incidents.png -------------------------------------------------------------------------------- /docs/assets/img/misc/incident_response_roles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/misc/incident_response_roles.png -------------------------------------------------------------------------------- /docs/assets/img/misc/incident_response_roles_sub_teams.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/misc/incident_response_roles_sub_teams.png -------------------------------------------------------------------------------- /docs/assets/img/misc/mobile_alerts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/misc/mobile_alerts.png -------------------------------------------------------------------------------- /docs/assets/img/screenshots/high_business_hours.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/screenshots/high_business_hours.png -------------------------------------------------------------------------------- /docs/assets/img/screenshots/high_urgency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/screenshots/high_urgency.png -------------------------------------------------------------------------------- /docs/assets/img/screenshots/low_urgency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/screenshots/low_urgency.png -------------------------------------------------------------------------------- /docs/assets/img/screenshots/suppressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/screenshots/suppressed.png -------------------------------------------------------------------------------- /docs/assets/img/thumbnails/nims_core.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/thumbnails/nims_core.png -------------------------------------------------------------------------------- /docs/assets/img/thumbnails/nims_training.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/img/thumbnails/nims_training.png -------------------------------------------------------------------------------- /docs/assets/js/lazy_load_images.js: -------------------------------------------------------------------------------- 1 | // Rather than downloading every single slide, try to be nice to users and lazy load the images 2 | // instead. This will only work if they have JavaScript enabled of course. The site should still 3 | // function correctly for those without JavaScript. 4 | 5 | // Returns true if *any* part of an element is in view on the page. 6 | function inView(el) 7 | { 8 | if (el instanceof jQuery) { el = el[0]; } 9 | 10 | var r, html; 11 | if ( !el || 1 !== el.nodeType ) { return false; } 12 | html = document.documentElement; 13 | r = el.getBoundingClientRect(); 14 | 15 | return ( !!r 16 | && r.bottom >= 0 17 | && r.right >= 0 18 | && r.top <= html.clientHeight 19 | && r.left <= html.clientWidth 20 | ); 21 | } 22 | 23 | // TODO: Implement this without jQuery. No need to load a 100k library for this. 24 | $(function() 25 | { 26 | // Add event handler to fade in images once they're loaded so it's not so jarring. 27 | // Transition is controlled via CSS classes "hidden" and "loaded". 28 | $(".article img").one("load", function() 29 | { 30 | $(this).parent().removeClass("hidden").addClass("loaded"); 31 | }); 32 | 33 | // Loop over every image/slide in the article. 34 | $(".article img").each(function() 35 | { 36 | // If the image is already loaded (i.e. was cached in browser), show it immediately. 37 | if (this.complete) 38 | { 39 | $(this).addClass("loaded"); 40 | } 41 | // If the image hasn't already loaded. 42 | else 43 | { 44 | // Add CSS class to hide the image from view while loading. 45 | $(this).parent().addClass("hidden"); 46 | 47 | // Remove the "src" attribute on images to stop them loading over the network. Keep the value 48 | // in "data-src" so we can retrieve it later. 49 | $(this).attr("data-src", $(this).attr("src")).removeAttr("src"); 50 | } 51 | }); 52 | 53 | // As page scrolls/resizes, check for images within viewable area. 54 | $(window).on("scroll resize load", function() 55 | { 56 | $(".article img").each(function() 57 | { 58 | // If it's in view, and hasn't been triggered to load yet. 59 | if (inView($(this)) && !$(this).attr("src")) 60 | { 61 | $(this).attr("src", $(this).attr("data-src")); // Swap back into "src" to load the image. 62 | } 63 | }); 64 | }); 65 | }); 66 | -------------------------------------------------------------------------------- /docs/assets/pdf/pagerduty_incident_response_training_public.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/pdf/pagerduty_incident_response_training_public.pdf -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.001.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.001.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.002.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.002.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.003.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.003.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.004.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.004.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.005.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.005.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.006.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.006.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.007.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.007.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.008.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.008.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.009.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.009.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.010.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.010.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.011.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.011.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.012.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.012.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.013.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.013.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.014.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.014.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.015.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.015.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.016.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.016.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.017.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.017.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.018.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.018.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.019.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.019.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.020.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.020.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.021.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.021.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.022.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.022.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.023.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.023.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.024.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.024.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.025.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.025.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.026.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.026.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.027.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.027.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.028.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.028.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.029.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.029.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.030.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.030.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.031.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.031.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.032.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.032.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.033.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.033.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.034.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.034.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.035.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.035.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.036.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.036.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.037.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.037.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.038.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.038.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.039.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.039.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.040.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.040.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.041.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.041.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.042.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.042.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.043.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.043.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.044.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.044.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.045.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.045.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.046.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.046.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.047.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.047.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.048.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.048.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.049.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.049.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.050.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.050.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.051.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.051.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.052.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.052.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.053.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.053.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.054.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.054.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.055.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.055.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.056.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.056.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.057.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.057.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.058.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.058.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.059.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.059.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.060.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.060.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.061.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.061.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.062.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.062.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.063.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.063.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.064.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.064.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.065.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.065.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.066.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.066.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.067.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.067.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.068.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.068.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.069.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.069.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.070.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.070.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.071.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.071.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.072.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.072.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.073.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.073.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.074.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.074.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.075.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.075.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.076.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.076.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.077.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.077.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.078.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.078.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.079.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.079.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.080.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.080.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.081.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.081.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.082.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.082.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.083.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.083.jpeg -------------------------------------------------------------------------------- /docs/assets/slides/incident_response/incident_response.084.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/docs/assets/slides/incident_response/incident_response.084.jpeg -------------------------------------------------------------------------------- /docs/before/call_etiquette.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/call_etiquette.png 3 | description: あなたはインシデントの通話に参加したばかりで、これまでに参加したことがありませんでした。何が起こっているのか、また何をすべきかがわかりません。このページでは初めてインシデント通話に参加する際に役立ち、今後の通話に備えて参考にできます。 4 | --- 5 | ![通話中のオバマ](../assets/img/headers/obama_phone.jpg) 6 | *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* 7 | 8 | あなたはインシデント通話に参加したばかりで、これまでに参加したことがありませんでした。 9 | 何が起こっているのか、また何をすべきかがわかりません。 10 | このページでは初めてインシデント通話に参加する際に役立ち、今後の通話に備えて参考にできます。 11 | 12 | ## 最初のステップ 13 | 14 | * インシデントの通話に参加する場合は、通話とSlackの両方に参加する必要があります。 15 | * 通話に参加するために静かな環境にいることを確認してください。背景のノイズは最小に抑えるべきです。 16 | * 自分が喋るまで、マイクをミュートにしておきます。 17 | * 通話に参加したときは、あなたの名前と専門であるシステムを宣言してください。 18 | * はっきりとした大きな声で喋ります。 19 | * 直接的で、事実に基づきましょう。 20 | * 会話や議論は、短く要点を絞りましょう。 21 | * 懸念点があれば通話中にインシデントコマンダーに報告してください。 22 | * インシデントコマンダーによって与えられた制限時間を守ってください。 23 | 24 | ## 専門用語 25 | 26 | **通話中は頭字語や略語を用いずに、明確な用語を用いてください。明確で正確な会話は素早い会話よりも大事です。** 27 | 28 | ![Communication](../assets/img/misc/communicate.png) 29 | 30 | 通話中は標準的な[無線電話](https://en.wikipedia.org/wiki/Voice_procedure#Words_in_voice_procedure)に従う必要はありません。 31 | しかし、通話中に聞こえてくるかも知れないので(あるいは自分が使う必要があるかもしれないので)、その言葉に慣れる必要があります。 32 | 重大インシデントでよく使われる言葉に、以下のものがあります。 33 | 34 | * **Ack/Rog** - 「受信して、理解しました」 35 | * **Say Again** - 「さっきの言葉を繰り返してください」 36 | * **Standby** - 「次の返答まで少し待ってください」 37 | * **Wilco** - 「Will comply(遵守します)」 38 | 39 | 新しい略語を作らないでください。 40 | 他の人がその略語を知らないがために誤解が生じてしまうので、略語で時間を節約するよりも、明確に伝えたほうが良いです。 41 | 42 | ## コマンダー 43 | 44 | インシデントコマンダーは、インシデント対応プロセスのリーダーで、インシデントを解決に導く責務があります。 45 | インシデントコマンダーは通話の開始をアナウンスし、会話のほとんどで喋ります。 46 | 47 | * インシデントコマンダーからの指示は例外なく従うこと。 48 | * インシデントコマンダーからの指示がない限り、いかなる行動もしないこと。 49 | * コマンダーは通常大きな行動をする前に、強い反対意見が無いかを確認します。異議がある場合はそれを伝えてください。 50 | * コマンダーが意思決定をします。その決定は確定的で、反対意見があったとしても従うべきです。 51 | * コマンダーからの質問には、明確かつ簡潔に答えてください。 52 | * 「知らない」という答えも受け入れられます。推測をしないでください。 53 | * コマンダーはあなたに何らかの調査を依頼して、X分以内に帰ってくるよう言うかも知れません。指定された時間内に返答を返せるよう準備しましょう。 54 | * 更に時間が必要だというのも受け入れられますが、どのくらい時間が必要か見積もりを提示する必要があります。 55 | 56 | ## 問題発生? 57 | 58 | #### インシデントコマンダーが通話にいない。どうすればいいかわからない。 59 | 60 | インシデントコマンダーがいるか確認してみましょう。 61 | もしいなければSlackで`!ic page`を入力してください。 62 | このコマンドはプライマリとバックアップのインシデントコマンダーが呼び出されます。 63 | 64 | #### 通話またはSlackのどちらかのみ参加できます。どうすればいいですか? 65 | 66 | 私たちのチャンネルに参加するのは歓迎しますが、片方のみにしか参加できない場合はコミュニケーションがまばらになるので、インシデント対応に積極的に参加すべきではありません。 67 | あなたが持っている情報を取り上げてもらうために、Slackと通話の両方にいる誰かに連絡をとりましょう。 68 | -------------------------------------------------------------------------------- /docs/before/complex_incidents.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/complex_incidents.png 3 | description: 多くのリソースにまたがった、インシデント(または同時多発的な複数インシデント)に出くわす時が来るでしょう。このような場合には、全員が効果的に管理範囲を守ることが重要です。このページでは、このようなインシデントにどう対処するかを説明します。 4 | --- 5 | 6 | 多くのリソースにまたがった、インシデント(または同時多発的な複数インシデント)に出くわす時が来るでしょう。 7 | このような場合には、全員が効果的に[管理範囲](../training/glossary.md#span-of-control)を守ることが重要です。 8 | このページでは、このようなインシデントにどう対処するかを説明します。 9 | 10 | ## 複雑なインシデントを特定する 11 | 12 | おそらく、同時に複数の問題が発生するか、すでに発生したインシデントが連鎖的に他のサービスに影響を与えることがあるでしょう。 13 | 混乱や疲れ果てる事がないように、これらの種類のインシデントを特定するのは重要です。 14 | ここでは複雑なインシデントの特定に役立つ、インシデントコマンダーが注意すべきいくつかの点を紹介します。 15 | 16 | 1. 複数のチームが関係していますか? 17 | * それらのチームは複数の問題を調査していますか? 18 | 19 | 1. 複数の症状があり、明らかな相関関係がなさそうですか? 20 | 21 | 1. SMEのグループが同じ分析に取り組んでいます。 22 | 23 | 1. インシデントの通話が「混雑」しています。これは曖昧な指標ですが、通話に参加している人が多いとそう感じるでしょう。 24 | 25 | ## サブチーム 26 | 27 | 複雑なインシデントが発生していると判明した場合、インシデントコマンダーはそれぞれ独立した問題に対応する、サブチームを作るべきです。 28 | 私たちにはインシデントコマンダーが割り当てる、3つのサブチーム、Alpha、Bravo、Charlieが予め用意されています。 29 | 各チームはそれぞれのSlackルームとWeb会議室が設定されており、いつでもそれを利用できる状況です。 30 | 31 | !!! note "チーム名" 32 | 私たちはチーム名に無線用のアルファベットを用いました。 33 | 「Red Team」「Blue Team」という名前はセキュリティインシデント対応で別の意味を持つため採用しません。 34 | 混乱を避けるためです。 35 | 36 | | | | | 37 | | - | - | - | 38 | | Alpha Team | #team-alpha | +1.555.123.4567 | 39 | | Bravo Team | #team-bravo | +1.555.123.4568 | 40 | | Charlie Team | #team-charlie | +1.555.123.4569 | 41 | 42 | 3つのサブチーム全てが同時に活動する必要あ張りません。 43 | インシデントに応じて、1チームだけでも良いですし、必要ならば3チームを超えても構いません。 44 | インシデントコマンダーによってチームリーダーが選ばれてそれぞれのチームに割り当てられます。 45 | 46 | ### 役割構造 47 | 48 | サブチームは私たちのインシデント対応の役割構造に、どう適合するのでしょうか? 49 | 通常は、内容領域専門家がチームリーダーとなり、それぞれの内容領域専門家のメンバーはチームリーダーに報告します。 50 | この構造は、インシデントコマンダーとチームリーダーが、それぞれの管理範囲を維持できます。 51 | 52 | ![Incident Response Structure for Complex Incidents](../assets/img/misc/incident_response_roles_sub_teams.png) 53 | 54 | ### サブチームを作る 55 | 56 | 1. インシデントコマンダーは、直接報告してもらうチームリーダーを割り当てます。他のチームメンバーからの報告は、チームメンバーを経由します。 57 | * チームリーダーを割り当てるとき、インシデントコマンダーはどのチームに属するかを指定します。 58 | * _チームリーダーにはインシデントコマンダーとしてのトレーニングは必要ありませんが、リーダー経験があると望ましいです_ 59 | 60 | 1. それぞれのチームには特定のタスクが割り当てられ、通常のインシデント対応と同じようにタイムボックスが設けられます。 61 | 62 | チームをどのように分割するかは、インシデントコマンダーの裁量に委ねられます。 63 | 可能性のある構成は以下のとおりです。 64 | 65 | * それぞれのグループが問題全体を対応する、機能横断型グループ 66 | * 大きな問題の特定の1要素に焦点を当てた、内容領域専門家のグループ 67 | * 通常の日々の役割に基づくチーム 68 | 69 | ### サブチームの切り替え 70 | 71 | もし他のサブチームの方が適していると感じた場合には、**今のチームリーダー**に相談してください。 72 | インシデントコマンダーや参加したいチームリーダーに話を持ち込まないでください。 73 | インシデントは現在も進行中で、引き続きエスカレーションパスに従う必要があります。 74 | -------------------------------------------------------------------------------- /docs/before/different_roles.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/roles.png 3 | description: PagerDutyのインシデント対応チームには、いくつかの重要な役割があります。このページではいくつかの役割を説明し、なぜその役割が重要か、彼らの責務は何なのかを解説します。 4 | --- 5 | 6 | PagerDutyのインシデント対応チームには、いくつかの重要な役割があります。 7 | 特定の役割は1つのインシデントに対して1人しかいなかったり(例えばインシデントコマンダー(Incident Commander))、複数人で構成される場合があります(例えば内容領域専門家(Subject Matter Expert))。 8 | それらのチームが一丸となり、問題に取り組んで迅速に問題を解決します。 9 | 10 | 私たちの役割の階層図を示します。 11 | このページの残りで、それぞれの役割について解説します。 12 | 13 | ![Incident Response Structure](../assets/img/misc/incident_response_roles.png) 14 | 15 | 大規模で複雑なインシデントでは、サブチームも考慮した役割を構成できます。 16 | 詳細については[複雑なインシデント](/before/complex_incidents.md)を参照してください。 17 | 18 | !!! tip "柔軟に構成する" 19 | 全てのインシデントにおいて、各役割をそれぞれ別の人で構成する必要はありません。 20 | 例えばインシデントのスコープが十分に小さい場合は、補佐(Deputy)は記録係(Scribe)と内部連絡(Internal Liaison)をしても良いのです。 21 | インシデントの規模に基づいてスケールできるように、チームの構成は柔軟であるべきです。 22 | 23 | --- 24 | 25 | ## インシデントコマンダー(Incident Commander: IC) 26 | 27 | ### この役割はなにか? 28 | 29 | インシデントコマンダー(Incident Commander)は、重大インシデント発生中で何が起こっているか、何が起ころうとしているかの、唯一の信頼できる情報源です。 30 | この役割がすることは多種多様です。 31 | 32 | ### なぜ必要か? 33 | 34 | ソフトウェアシステムの規模や複雑度が大きくなると、物事が壊れてインシデントが発生します。 35 | インシデントコマンダーは、重大インシデントを解決に導くのに必要な役割です。 36 | 37 | ### この役割の責務は? 38 | 39 | 1. 重大インシデントの準備を支援 40 | * 重大インシデントのコミュニケーションチャネルの用意。 41 | * 重大インシデント発生中に、人々をコミュニケーションチャネルに集める。 42 | * インシデント発生中のコミュニケーションのとり方をチームメンバーに教えたり、他のインシデントコマンダーを教育する。 43 | 1. 重大インシデントを解決に導く 44 | * みんなを同じコミュニケーションチャンネルに集める。 45 | * サービスや領域の所有者から、ステータスに関する情報を収集する。 46 | * 問題を修正するアクションの提案を収集して、それを実施するように進める。 47 | * 全てのアクションを委譲する。インシデントコマンダーは解決する人ではない。 48 | * システムの状態に関する唯一の権限を持っている 49 | 1. ポストモーテム 50 | * インシデント直後にテンプレートを作成し、記憶の新しいうちに関係者が記入できるようにする 51 | * イベントが終わった後に、ポストモーテムを割り当てる。これは後日でもできる。 52 | * リーダーやマネージャーと共に、再発防止のためのスケジュールを準備する。 53 | 54 | ### 誰がすべきか? 55 | 56 | オンコールスケジュール上の誰でもできます。 57 | トレーニングを受けるには、インシデントコマンダーをシャドウイングようスケジュールに入ります。 58 | 59 | ### どうすればなれるか? 60 | 61 | [インシデントコマンダーのトレーニングガイド](/training/incident_commander.md)を読んでください。 62 | 63 | --- 64 | 65 | ## 補佐(Deputy) 66 | 67 | ### この役割はなにか? 68 | 69 | 補佐(Deputy)は、インシデントコマンダーを直接サポートします。 70 | この役割はただ一緒に観察するためにいるのではなく、インシデント発生中に重要な役割が期待されます。 71 | 72 | ### なぜ必要か? 73 | 74 | インシデントコマンダーにとって重要なことは、手順の記録やタイマーを測ることではなく、目の前の問題に集中することです。 75 | 補佐はインシデントコマンダーをサポートして、インシデントコマンダーがインシデントに集中できるように支援します。 76 | 77 | ### この役割の責務は? 78 | 79 | 補佐は以下のことが期待されます 80 | 81 | 1. 他の人が対応できないことを、インシデントコマンダーに提示する(開始したタイマーを監視し、点呼で見逃した項目を後で見返すなど)。 82 | 1. インシデントコマンダーが内容領域専門家や他の役割になった場合、インシデントコマンダーの「ホットスタンバイ」となる。 83 | 1. インシデント通話を管理し、インシデントコマンダーから指示されると通話から人を外す。 84 | 85 | ### 誰がすべきか? 86 | 87 | インシデントコマンダーは補佐もできます。 88 | 補佐はインシデントコマンダーを引き継ぐ可能性があるので、インシデントコマンダーとしてのトレーニングが必要です。 89 | 90 | ### どうすればなれるか? 91 | 92 | [補佐のトレーニングガイド](/training/deputy.md)を読んでください。 93 | 補佐は[インシデントコマンダー](/training/incident_commander.md)のトレーニングも必要です。 94 | 95 | --- 96 | 97 | ## 記録係(Scribe) 98 | 99 | ### この役割はなにか? 100 | 101 | 記録係(Scribe)は、後から見返すときに役立つように、インシデントの経過を時系列に基づき記録します。 102 | 103 | ### なぜ必要か? 104 | 105 | インシデントコマンダーは目の前のインシデントに集中する必要があり、内容領域専門家はインシデントの解決に集中する必要があります。 106 | ポストモーテムで私たちに何ができたかを振り返ったり、そのとき気づけなかった影響を正確に特定するために、何が起こったかを時系列に基づいて記録することは重要です。 107 | 108 | ### この役割の責務は? 109 | 110 | 記録係は以下のとこが期待されます。 111 | 112 | 1. インシデント通話が記録されていることを確認する 113 | 1. Slackの重要なデータ、イベント、行動などが発生したことを記録する。 114 | * 実行した主要なアクション (例えば「stuck lockを解除するために `prod-server-387723` を再起動しました」など) 115 | * インシデントコマンダーからの提供された状況報告 (例えば「インシデントはSEV-1で、サービスAは現在stuck lockのため、イベント処理をしていない。Xはアプリを再起動して、次の3分以内に報告する」) 116 | * 通話中や終了後の振り返りでの主要な発言(例えば"Note: (Bob B) stuck lockを特定する良い方法があるはず") 117 | 118 | ### 誰がすべきか? 119 | 120 | インシデント対応中は誰でも記録係になることができ、通話の最初でインシデントコマンダーが指名します。 121 | 通常は補佐が記録係をしますが、必ずしもその必要はなく、大規模なインシデントの場合はできません。 122 | 123 | ### どうすればなれるか? 124 | 125 | [記録係のトレーニングガイド](/training/scribe.md)を読んで、次回のインシデントで記録係になりたいとインシデントコマンダーに伝えてください。 126 | 127 | --- 128 | 129 | ## 内容領域専門家(Subject Matter Expert) 130 | 131 | ### この役割はなにか? 132 | 133 | 内容領域専門家(Subject Matter Expert : SME)は、解決者(Resolver)とも呼ばれ、PagerDutyを構成するコンポーネントやサービスの、ドメインエキスパートまたはオーナーです。 134 | 135 | ### なぜ必要か? 136 | 137 | インシデントコマンダーや補佐は、全てを知っている超人的存在ではありません。 138 | サービスで問題が発生した場合、問題を迅速に特定して解決するために、サービスの専門家が必要になります。 139 | 140 | ### この役割の責務は? 141 | 142 | 1. サービスの共通的な問題に対する診断をする。 143 | 1. インシデント発生中に発見した問題を即座に修正する 144 | 1. 簡潔にコミュニケーションするスキル、特にCANレポートと呼ばれる 145 | * 状態 (Condition): サービスの現在の状態は?正常かどうか? 146 | * 行動 (Actions): サービスが正常じゃない場合、どのような行動が必要か? 147 | * 要請 (Needs): サービスを解決するために何が必要か? 148 | 149 | ### 誰がすべきか? 150 | 151 | 「ドメインエキスパート」なら誰でもできます。 152 | 通常はサービスの最初のオンコールは、内容領域専門家となります。 153 | 154 | ### どうすればなれるか? 155 | 156 | [内容領域専門家のトレーニングガイド](/training/subject_matter_expert.md)を読んでください。 157 | また、あなたのチームのオーナーと話し合い、サービス固有の要件が何なのかを判断する必要があります。 158 | 159 | --- 160 | 161 | ## 顧客連絡(Customer Liaison) 162 | 163 | ### この役割はなにか? 164 | 165 | 顧客と直接または外部公開してるチャネルを経由して、やり取りをする人です。 166 | 通常はカスタマーサポートチームのメンバーです。 167 | 168 | ### なぜ必要か? 169 | 170 | 他の全ての役割は、問題の原因究明や解決に取り組んでいます。 171 | 顧客とのやり取りを適切に処理できるよう、それに焦点を当てた役割が必要になります。 172 | 173 | ### この役割の責務は? 174 | 175 | 1. インシデントに関するメッセージを公開する(Twitter、StatusPageなど) 176 | 1. インシデントの影響がある顧客について、インシデントコマンダーに知らせる 177 | 1. ポストモーテムが完了したら、顧客にメッセージを提供する 178 | 179 | ### 誰がすべきか? 180 | 181 | サポートチームのメンバーは誰でも顧客連絡になれます。 182 | 183 | ### どうすればなれるか? 184 | 185 | [顧客連絡のトレーニングガイド](/training/customer_liaison.md)を読んで、サポートチームで誰が顧客窓口になるか話し合ってください。 186 | 187 | --- 188 | 189 | ## 内部連絡(Internal Liaison) 190 | 191 | ### この役割はなにか? 192 | 193 | 社内のステークホルダーとのやり取りをする人です。 194 | インシデントの内部チームにお知らせをするか、組織から追加の対応者を動員します。 195 | 196 | ### なぜ必要か? 197 | 198 | 大規模インシデントでは、組織をまたいだ複数チームが関係する事があります。 199 | これらのチームを動員して、迅速にインシデントに対応できるように、特定の連絡を設置します。 200 | 201 | ### この役割の責務は? 202 | 203 | 1. インシデントコマンダーの指示に応じて、内容領域専門家やオンコールのエンジニアを呼び出す 204 | 1. インシデントコマンダーの指示に応じて、組織内の他のチームに通知する(経理、法務、マーケティングなど) 205 | 1. ステークホルダーと連絡を取り、必要に応じて状況を伝える 206 | 1. 社内のステークホルダーからの質問に答え、オンコール対応している人の妨げにならないようにする 207 | 208 | ### 誰がすべきか? 209 | 210 | インシデント対応中に、インシデントコマンダーが指名した人。 211 | 212 | ### どうすればなれるか? 213 | 214 | [内部連絡トレーニング](/training/internal_liaison.md)を読んでください。 215 | -------------------------------------------------------------------------------- /docs/before/severity_levels.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/severity_levels.png 3 | description: インシデントは通常、深刻度や優先度によって種類分けされます。PagerDutyでは、小さいな数字ほど緊急度が高い 'SEV' レベルを使っています。運用上の問題はこの深刻度レベルによって分類され、一般的には深刻度の高い問題を解決するにはリスクの高い行動を取ることができます。 4 | --- 5 | 6 | インシデント対応プロセスの最初のステップは、何が[インシデントを引き起こしている](/before/what_is_an_incident.md)かを特定することです。 7 | そのあとインシデントは深刻度によって分類され、通常は数字が低いと深刻度が高くなる "SEV" の定義が利用されます。 8 | 運用上の問題はこの深刻度レベルによって分類され、一般的には深刻度の高い問題を解決するにはリスクの高い行動を取ることができます。 9 | SEV-3を超える深刻度は機械的に重大インシデント (Major Incident) とみなされ、通常のインシデントよりも優先的に対応されます。 10 | 11 | !!! tip "常に最悪の事態を考える" 12 | もしインシデントのレベルがわからない場合(SEV-2かSEV-1かわからない場合など)は、**より深刻度の高い方**に分類します。 13 | インシデント対応中は、深刻度を議論したりそれを決める時間ではありません。 14 | 深刻度の高いものとして扱い、後のポストモーテムで振り返りましょう。 15 | 16 | !!! question "SEV-3は重大インシデントか?" 17 | 全てのSEV-2は重大インシデントですが、全ての重大インシデントがSEV-2に分類される必要はありません。 18 | 問題の深刻度が低くても、連携した対応が必要な場合は、インシデント対応プロセスをトリガーします。 19 | インシデントコマンダーが、インシデント対応が必要かどうかを意思決定します。 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 40 | 49 | 50 | 51 | 52 | 62 | 69 | 70 | 71 | 72 | 73 | 74 | 82 | 93 | 94 | 95 | 96 | 105 | 112 | 113 | 114 | 115 | 121 | 127 | 128 | 129 |
深刻度解説典型的な対応
SEV-1 33 |

外部への告知と幹部との連絡が必要な、致命的な問題

34 |
    35 |
  • システムは致命的な状態で、多くの顧客に影響がある状態。
  • 36 |
  • 長期的にわたり機能が利用できず、SLAを破っている。
  • 37 |
  • 顧客データが漏洩する可能性のある脆弱性が報告されている。
  • 38 |
39 |
41 |

重大インシデント対応

42 |
    43 |
  • Slackでインシデント司令官を呼び出す!ic page.
  • 44 |
  • インシデント発生中を読む
  • 45 |
  • 社内のステークホルダーに通知する
  • 46 |
  • 外部へ通知する
  • 47 |
48 |
SEV-2 53 |

顧客が製品を利用するのに影響がある致命的なシステムの問題

54 |
    55 |
  • 通知パイプラインに重大な障害が発生している。
  • 56 |
  • インシデント対応の機能(応答、解決、など)が利用できない。
  • 57 |
  • Webアプリが利用できないか、多くのユーザーにパフォーマンス劣化が発生している。
  • 58 |
  • 重大インシデントに対するPagerDutyの監視システムが停止している
  • 59 |
  • PagerDutyの従業員がインシデント対応が必要だとみなしたイベント
  • 60 |
61 |
63 |

重大インシデント対応

64 | 68 |
このラインを超えるのは「重大インシデント」と扱います。私たちのインシデント対応プロセスは、あらゆる重大インシデントに対してトリガーされるべきです。
SEV-3 75 |

サービスオーナーが直ちに対応する必要がある、安定性や一部の顧客に影響がある軽微な問題。

76 |
    77 |
  • 一部の機能が使えないが、多くの顧客には影響しない。
  • 78 |
  • 何もしなければSEV-2になる可能性があるもの。
  • 79 |
  • サービスの冗長度がないもの(もう1つのノードが停止すると障害になる)。
  • 80 |
81 |
83 |

サービスチームへの緊急度の高いページ

84 |
    85 |
  • 最優先で問題に取り掛かる。
  • 86 |
  • 影響するシステムのエンジニアと連絡をとり、原因の特定する。
  • 87 |
  • 最近の開発によるものならロールバックする。
  • 88 |
  • ステータスを監視して事態が悪化しているか、いつから悪化しているかを知らせる。
  • 89 |
  • エスカレーションする可能性のある人にSlackで通知する。
  • 90 |
  • 必要ならインシデント対応を発動する(!ic page)。
  • 91 |
92 |
SEV-4 97 |

顧客が製品を使うのには影響しない、軽微な問題

98 |
    99 |
  • パフォーマンス問題(遅延など)
  • 100 |
  • 1つのホストでの障害(クラスタから1つのノードが抜けるなど)
  • 101 |
  • 遅延したジョブによる障害(イベント、通知パイプラインには影響しない)
  • 102 |
  • Cronの障害(イベント、通知パイプラインには影響しない)
  • 103 |
104 |
106 |

サービスチームへの緊急度の低いページ

107 |
    108 |
  • 最優先で問題に取り掛かる(通常のタスクよりも上)。
  • 109 |
  • ステータスを監視して事態が悪化しているか、いつから悪化しているかを知らせる。
  • 110 |
111 |
SEV-5 116 |

製品を利用する顧客には影響しない、表面的な問題やバグ

117 |
    118 |
  • システムを使う上で即座に影響しないバグ
  • 119 |
120 |
122 |

JIRAチケット

123 |
    124 |
  • JIRAチケットを作成して影響のあるシステムのオーナーに割り当てる。
  • 125 |
126 |
130 | 131 | 132 | !!! note "具体的に" 133 | これらの深刻度の解説は、PagerDutyの社内で利用している定義から、より一般的な説明に置き換えています。 134 | 読者の内部ドキュメントとして利用する場合は、ユーザーやアカウントの何%に影響しているかなどを元にした、具体的な定義を作ることをお勧めします。 135 | 通常はメトリクスに基づいて深刻度を定義するのが望ましいです。 136 | -------------------------------------------------------------------------------- /docs/before/what_is_an_incident.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/incident.png 3 | description: インシデント対応プロセスを定義する前に、まずは私たちの対応するべきインシデント(または重大インシデント)が何なのかを定義します。 4 | --- 5 | 6 | ![インシデント](../assets/img/headers/server_incident.png) 7 | 8 | まずインシデント対応プロセスを定義する前に、何がインシデントで何が重大インシデントか定義します。 9 | 10 | ## インシデントとはなにか? 11 | 12 | 顧客がPagerDutyを利用する上で、計画していないサービス停止やパフォーマンス劣化です。 13 | 14 | ## 重大インシデント(major incident)とはなにか? 15 | 16 | 複数のチームで協力して対応が必要なインシデントです。 17 | 18 | ## インシデント対応(incident response)とはなにか? 19 | 20 | インシデントの対応や管理をする体系的なアプローチです。 21 | そのゴールはインシデントを解決するだけでなく、被害を最小に抑え、復旧時間とコストを削減できるよう状況に対処することです。 22 | 23 | ## インシデント対応プロセスのトリガーはなにか? 24 | 25 | 私たちのインシデント対応プロセスは、重大インシデントに対して開始します。 26 | 効果的に対応できて、すばやく問題解決できるフレームワークを提供します。 27 | 私たちのインシデント対応プロセスは、自動化された監視やアラート、あるいは人手による手動アクションのいずれかの方法でトリガーできます。 28 | 29 | ### 自動化された監視 30 | 31 | システム全体を通して様々なメトリクスを監視することで、人の手によって対応すべき状態にあるかを検知します。 32 | 監視するメトリクスと何を監視すべきかを決めるために、以下の質問をします。 33 | もしいずれかの答えが "No" の場合は、インシデント対応プロセスをトリガーする必要があります。 34 | 35 | 1. PagerDutyの顧客は、全てのプラットフォームで、PagerDutyのインシデント対応機能を利用できるか? 36 | * たとえば、PagerDutyがサポートしている全ての方法で、インシデントに応答、割り当て、解決ができるか? 37 | 1. 顧客はSLAの範囲内で通知を受け取っているか? 38 | 39 | ### 人によるエスカレーション 40 | 41 | 自動化はプロセスの一部に過ぎません。 42 | 機能の一部で必要な監視ができていない箇所があるかも知れません。 43 | その場合はあらかじめ準備されたインシデント対応プロセスをトリガーできることが重要です。 44 | 例えばサポートチームがシステムの問題が報告されたとき、私たちの対応が必要になります。 45 | PagerDutyの従業員はいつでもインシデント対応プロセスをトリガーできます。 46 | 47 | 48 | 計画外のサービス停止やパフォーマンス劣化が発生すると、PagerDutyの従業員は必要だと判断した場合にトリガーします。 49 | 50 | !!! question "対応が必要か?" 51 | 対応が必要かわからない場合は、インシデント対応プロセスをトリガーしてください。 52 | プロセスを開始するには、Slackで `!ic page` と打ってICを呼び出してください。 53 | 54 | ## インシデントの深刻度 55 | 56 | 私たちの[深刻度の定義](/before/severity_levels.md)では、ガイドラインに基づいて、インシデントがどの程度深刻であると _考えられるか_ を分類しています。 57 | これはインシデント対応者に、対応の種類を示すことができます。 58 | 例えば深刻度が高くなると、システムを正常に戻すために高いリスクの意思決定ができます。 59 | 60 | 深刻度は複雑な応答が必要か、準備された対応が必要になるかを判断するのに役立ちます。 61 | しかしこれは、重大インシデントを白黒はっきりと定義するものではありません。 62 | もし深刻度の定義によりカバーされて無くても、インシデント対応が必要だと思われる場合は、インシデント対応が必要になります。 63 | 「これは重大インシデントか?」がわかればよいのです。 64 | 深刻度レベルは後からも決めることができ、対応プロセスをトリガーするものではありません。 65 | 66 | ## 気持ちの入れ替え 67 | 68 | インシデント対応プロセスにおける重要な考えの1つに、インシデント中に気持ちの入れ替えが重要というのがあります。 69 | 私たちはこれを、「平時(Peacetime)と戦時(Wartime)」の気持ちの入れ替えと呼んでいます。 70 | この考え方はインシデント発生中の意思決定プロセスが変化し、日中のオペレーションよりもリスクの高い行動ができるということです。 71 | この考えを理解するのは難しいかも知れませんが、平時の考え方に考えが固まり、潜在的にリスクのあるアクションをしたくないという理由で、インシデント対応プロセスが滞ってしまう可能性があります。 72 | 平時と戦時の考えについては、[トレーニングガイド](/training/subject_matter_expert)に詳しく記述されています。 73 | 74 | !!!info "平常時と緊急時" 75 | 「平時と戦時」という言葉を好まない人もいますが、その場合は他の言葉を用いても構いません。 76 | 「平常時 (Normal) と緊急事態 (Emergency)」はよくある言葉ですし、「OKとNot OK」でも構いません。 77 | 重要なのはどのように気持ちを入れ替えるかであって、どのような名前を付けるかは重要ではありません。 78 | -------------------------------------------------------------------------------- /docs/during/during_an_incident.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/dont_panic.png 3 | description: 重大インシデント発生中に何をすべきかについて説明します。 4 | --- 5 | 6 | 重大インシデント発生中に何をすべきかについて説明します。 7 | 何が重大インシデントに該当するかは、[深刻度レベル](/before/severity_levels.md)を参照してください。 8 | 9 | !!! note "ドキュメント化" 10 | あなたの社内ドキュメントでこのページに重要な情報が掲載されていることを確認してください。 11 | 例えばWeb会議のURLや、Slackルーム、重要なチャットコマンドなどです。 12 | 次に例を示します。 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
#incident-chathttps://a-voip-provider.com/incident-call+1 555 BIG FIRE (+1 555 244 3473) / PIN: 123456
Need an IC? Do !ic page in Slack
For executive summary updates only, join #executive-summary-updates.
31 | 32 | !!! warning "セキュリティインシデント?" 33 | もしセキュリティインシデントは発生したのなら、[セキュリティインシデント対応](/during/security_incident_response.md)プロセスに従ってください。 34 | 35 | ## パニックにならないで 36 | 37 | 1. まずインシデントの通話とチャットに参加します(リンクは後述します)。 38 | * 通話に参加したり、チャットでインシデントを追うのは誰でも歓迎します。 39 | * もし参加したい場合は両方に参加すべきです。もし何らかの理由で両方に参加できない場合は、通話に参加している特定の人に代理してもらってください。チャットルームでまばらな議論をするのは返って迷惑です。 40 | 41 | 1. 通話、チャットに参加して、適切だと思うコメントを残してください。ただし目の前の問題に関する議論をしてください。 42 | * もしあなたが内容領域専門家でない場合、プライマリの内容領域専門家を通じて議論をしてみてください。多くの人が同時に議論すると気後れするので、可能な限り通話では組織構造を維持すべきです。 43 | 44 | 1. インシデントコマンダーからの指示に従います。 45 | * **通話にインシデントコマンダーがいない?** 46 | * Slackで `!ic page` と打ってインシデントコマンダーを手動で呼び出してください。 47 | このコマンドはプライマリとバックアップのインシデントコマンダーを呼び出します。 48 | * インシデントコマンダーを呼び出すのを躊躇しないでください。 49 | いないよりもいたほうがいいです。 50 | 51 | ## インシデントコマンダーの手順 52 | 53 | 補佐に支援をしてもらいながら、可能な限りインシデントをすばやく安全に解決に導きます。 54 | インシデントコマンダーの裁量で、タスクをそれぞれの専門に委譲します。 55 | 56 | 1. インシデントの通話とSlackで、あなたがインシデントコマンダーであることと、指名した補佐と記録係をアナウンスします。 57 | 58 | 1. インシデントの明らかな原因(直近のデプロイ、トラフィックのスパイクなど)があるかどうか特定して、関係する専門家に調査を委譲してください。 59 | * 通話でサービスの専門家たちに、分析を支援してもらうようにします。 60 | 彼らは迅速に原因を特定できるはずですが、必ずしもその限りではありません。 61 | 原因が明らかにならない場合は、インシデントコマンダーの判断に委ねられます。 62 | サービスのオーナーと話し合い、彼らの知見を元に支援してもらいます。 63 | 64 | 1. 調査と復旧のアクションを特定し(ロールバック、レートリミットなど)、サービスの専門家にアクションを委譲します。一般的には以下のことを行います(もちろんすべて網羅してるわけではありません)。 65 | * **良くないデプロイ:** ロールバックする。 66 | * **アプリケーションがスタックまたはクラッシュ:** ローリングリスタートする。 67 | * **大量のイベント:** 自動スロットリングが十分か確認し、そうでなければ手動で調整する。 68 | * **データセンターの停止:** 悪いデータセンターが自動で外されているか確認。もしそうでなければ強制的に外す。 69 | * **負荷がかかってないがサービスが劣化:** データを収集して(ヒープダンプなど)、ローリングリスタートを検討。 70 | 71 | 1. 補佐から深刻度が上がるか助言をもらい、外部に公開するか判断します。また状況に応じて顧客連絡とやり取りします。 72 | * 外部に告知するかどうかは、インシデントコマンダーの判断に任されます。 73 | もし判断できない場合は外部に告知してください(疑わしい場合はツイートしてください)。 74 | 75 | 1. 自分の[管理範囲](/training/glossary.md#span-of-control)を把握しておきます。もし対応が大規模になってきたり、インシデントが複雑化している場合は、より効率的に対応できるよう[サブチームへ分割](/before/complex_incidents.md#spinning-off-sub-teams)することも検討してください。 76 | 77 | 1. インシデントが解決したり、解決に向かっている場合は、通話の終了をアナウンスします。これはインシデントに対して取るべき作業が無いということです。 78 | * 残りの急がない議論は議論はSlackに移行します。 79 | * インシデント収束を告知するために、顧客連絡とやり取りします。 80 | * ポストモーテムや後処理が必要か判断します。 81 | * 根本的な原因の報告や分析をします。 82 | 83 | 1. 通話が終わったら、[インシデント対応後](/after/after_an_incident.md)のステップに従います。 84 | 85 | ## 補佐の手順 86 | 87 | 必要に応じてインシデントコマンダーをサポートします。 88 | 89 | 1. インシデントの状態を監視し、深刻度が上がるのならインシデントコマンダーに知らせます。 90 | 91 | 1. インシデントコマンダーからの指示に従います。 92 | 93 | 1. 通話が終了すると、[インシデント対応後](/after/after_an_incident.md)のステップに従います。 94 | 95 | ## 記録係の手順 96 | 97 | Slackに流れているインシデントに関する重要な情報をまとめます。 98 | 99 | 1. 誰がインシデントコマンダー、補佐、記録係なのかを、Slackルームに反映します。 100 | * 例: "IC: Bob Boberson, 補佐: Deputy Deputyson, 記録係: Writer McWriterson" 101 | 102 | 1. 対応者全員が現在のステータスを聞かなくてもわかるように、ステータスを監視するBotを起動します。 103 | * OfficerURLはSlack上でステータスを監視するのに役立ちます 104 | * `!status` - 現在のステータスを知らせます 105 | * `!status stalk` - 監視を続け30秒毎に結果を報告します 106 | 107 | 1. 重要なアクションが取られたときや調査結果が出た場合は、Slackにノートを追加します。インシデントコマンダーからの指示を待つ必要はありません。 108 | * 後でやることを `TODO` としてSlackルームに残します 109 | 110 | 1. インシデントコマンダーからの指示に従います。 111 | 112 | 1. 通話が終了すると、[インシデント対応後](/after/after_an_incident.md)のステップに従います。 113 | 114 | ## 内容領域専門家の手順 115 | 116 | インシデントの原因特定や、復旧アクションの提案および評価、および復旧アクションに従い、インシデントコマンダーをサポートします。 117 | 118 | 1. グラフやログを解析してインシデントを調査します。全ての発見したことをインシデントコマンダーに報告します。 119 | * 原因が確かでなくても大丈夫です。調査と追加情報をインシデントコマンダーに提供し続けます。 120 | 121 | 1. インシデントコマンダーに、解決のための全ての提案を報告します。どのように進めるかはインシデントコマンダーが決定し、指示があるまではどんな行動も起こさないでください。 122 | 123 | 1. インシデントコマンダーからの指示に従います。 124 | 125 | 1. 通話が終了すると、[インシデント対応後](/after/after_an_incident.md)のステップに従います。 126 | 127 | ## 顧客連絡の手順 128 | 129 | インシデントに関するメッセージを外部に告知するために待機します。 130 | 131 | 1. 通話中に得られた情報から、ステータスページを更新し様々なアカウントからTwitterでツイートします。 132 | 133 | 1. インシデントコマンダーからの指示に従います。 134 | 135 | 1. 通話が終了すると、[インシデント対応後](/after/after_an_incident.md)のステップに従います。 136 | 137 | ## 内部連絡の手順 138 | 139 | 社内のステークホルダーに状態を提供し、必要に応じて社内から対応者を動員します。 140 | 141 | 1. インシデントコマンダーからの指示に従い、他の人を呼び出す準備をします。 142 | 143 | 1. 必要に応じて社内のステークホルダーに知らせて、PagerDutyインシデントの購読者に追加します。事前に用意してある "SEV-1ステークホルダー" と "SEV-2ステークホルダー" を利用できます。 144 | 145 | 1. 経営陣に対してSlackで定期的(だいたい30分ごと)に、現在の状態を知らせます。短く要点を抑えて`@here`を使います。 146 | 147 | 1. インシデントコマンダーからの指示に従います。 148 | 149 | 1. 通話が終了すると、[インシデント対応後](/after/after_an_incident.md)のステップに従います。 150 | -------------------------------------------------------------------------------- /docs/during/security_incident_response.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/security_incident.png 3 | description: PagerDutyにおけるセキュリティインシデントへの対応アクションのチェックリスト。 4 | --- 5 |
6 | Last Reviewed: YYYY-MM-DD 7 | Last Tested: YYYY-MM-DD 8 |
9 | 10 | !!! warning "インシデントコマンダーは必須です" 11 | PagerDutyにおける全ての重大インシデントと同じように、セキュリティインシデントでは適切にタスクを委譲できる、インシデントコマンダーが必須です。 12 | タスクはインシデントコマンダーから割り当てられ、並列に実行できます。 13 | `!ic page` コマンドで 可能な限り早く呼び出してください。 14 | 15 | !!! question "セキュリティインシデントかどうかわからない" 16 | とにかく対応を開始してください。 17 | それはあとから謝るよりも良いことです。 18 | インシデントコマンダーが判断します。 19 | 20 | ## チェックリスト 21 | 22 | これらのチェックリストの詳細は次に詳しく説明します。 23 | 24 | 25 | 1. 現在の攻撃を停止する 26 | 1. 攻撃ベクターの遮断する 27 | 1. 対応チームを組む 28 | 1. 攻撃を受けたインスタンスを隔離する 29 | 1. 攻撃のタイムラインを特定する 30 | 1. 漏洩したデータを特定する 31 | 1. 他のシステムへのリスクを評価する 32 | 1. 再攻撃のリスクを評価する 33 | 1. 追加の措置や監視を適用する 34 | 1. 攻撃されたシステムのフォレンジック解析をする 35 | 1. 内部のコミュニケーションをする 36 | 1. 法務部門、法的機関の利用 37 | 1. 攻撃ベクターとして使われている可能性のある外部関係者に連絡 38 | 1. 外部とのコミュニケーション 39 | 40 | --- 41 | 42 | ## 攻撃の防止 43 | 44 | なんとしてでも、可能な限り早く攻撃を止めてください。 45 | サーバーをシャットダウンしたり、ネットワークから隔離したり、必要ならデータセンターを停止してください。 46 | 一般的には以下のことを試します。 47 | 48 | * プロバイダーコンソールからインスタンスをシャットダウンします(フォレンジック解析が必要になるので、削除はしないでください)。 49 | * たまたまログインしていたのなら、以下のことを実行してください。 50 | * トラフィックを制限するために、デフォルトのiptablesルールを再設定する。 51 | * 攻撃者と思われる全てのアクティブなセッションに`kill -9`を実行する。 52 | * rootパスワードを変更して、/etc/shadowを更新して他のユーザーをロックアプトする。 53 | * `sudo shutdown now` 54 | 55 | ## 攻撃ベクター遮断する~ 56 | 57 | 攻撃ベクターや経路と思われる物を特定し、攻撃を停止した後に使えないようにします。 58 | 59 | * 3rdパーティー製のプロバイダーに侵入されていると思われる場合は、自分(および物理的にそこにいる人)以外のアカウントを削除してください。そしてパスワードとMFAトークンを更新します。 60 | * もしサービスアプリケーションが攻撃ベクターだと思われる場合は、関連するコードパスを無効化するか、サービス全体を停止してください。 61 | 62 | ## 対応チームを組む 63 | 64 | セキュリティインシデントに対応する主要な人を判断して、彼らに逐一情報を提供します。 65 | インシデントに関する情報をやり取りする、安全な手段を確立してください。 66 | インシデントの詳細(またインシデントが起こったという事実さえも)、内部犯ではないとわかるまで秘密にしておく必要があります。 67 | 68 | * まだの場合はインシデントコマンダーを呼び出します。彼らは通常のインシデントコマンダーの役割も任命します。 69 | インシデントコマンダーチームは実施されたアクションを記録して、適した社内のステークホルダーに通知する責務があります。 70 | * チャットやドキュメントで使用する、プロジェクトのコードネームをつけてください。 71 | 誰かがプロジェクト名を聞いたとき、それがセキュリティインシデントかわからないようにします(例: サファイアユニコーン) 72 | * まだ始めて無いのなら、音声通話を開始します。 73 | * インシデントのコードネームをつけたチャットルームを作成します。 74 | * 全ての応答者を、音声通話とチャットルームに招待します。 75 | 1. **セキュリティーチームは入れてください。** 76 | 1. 影響を受けるサービスの代表者を入れます。 77 | 1. 経営陣のステークホルダーと法務部門は早い段階で招待すべきですが、運用上の対応者を優先します。 78 | * フォレンジック解析を実施するまでは、インシデントについて対応チーム以外の人とコミュニケーションを取らないください。内部攻撃の可能性もあります。 79 | * 全てのメールとチャットトピックの先頭に「弁護士作業計画」としてください。 80 | 81 | ## 攻撃を受けたインスタンスを隔離 82 | 83 | 攻撃の影響を受けたインスタンスは、すぐに他のインスタンスから隔離する必要があります。 84 | できるだけ早くシステムのイメージを取得して、後からフォレンジック解析で利用するために読み取り専用ストレージにコピーします。 85 | 86 | * 影響を受けたインスタンスのIPアドレスを、他の全てのインスタンスのブラックリストに追加します。 87 | * 攻撃を止められなかった場合は、インスタンスをシャットダウンします。 88 | * インスタンスが利用してるディスクのイメージを取得しストレージに保存します。このイメージは読み取り専用にして、改ざんできないようにします。 89 | 90 | ## 攻撃タイムラインの特定 91 | 92 | 攻撃のタイムラインを特定して、攻撃者が何を実行したかを正確に特定します。 93 | 94 | * 攻撃が始まる前に、攻撃者がシステム上で行ったことの予備調査 95 | * 攻撃者はいつシステムにアクセスしたか 96 | * 攻撃者はシステム上で、いつ、何をしたか 97 | * 攻撃者を発見するまでの間や、攻撃者を追い出すまでに、どのくらいの間システムにアクセスしていたか 98 | * 攻撃者がデータベース上で走らせたクエリの特定 99 | * 攻撃者が他のバックドアからのアクセスを試みているかの確認。目立ったログの監視など。 100 | 101 | ## 情報漏洩 102 | 103 | ログファイル、時系列グラフ、他の情報やツールを使ってのフォレンジック解析をして、漏洩した情報があるかを特定する。 104 | 105 | * 攻撃中に漏洩しうる全てのデータを特定 106 | * データベースからデータが持ち出されたか? 107 | * 漏洩したと思われるシステムのキーはあるか? 108 | * 攻撃者は他のシステムのコンポーネントを特定できるか(ネットワーク構成の推測など) 109 | * どの顧客データが漏洩したか 110 | 111 | ## リスク評価 112 | 113 | 漏洩したデータを元に、他のシステムへのリスクを評価します。 114 | 115 | * 攻撃者は他のシステムを攻撃するための、十分なデータを持っていますか? 116 | * ホストにパスワードやキーが保存されていましたか?もしそうなら保存方法に関わらず、脅威に晒されている可能性があります。 117 | * 最初の攻撃に使われた可能性のあるアカウントの、キーやパスワードを全てのシステムで更新します。 118 | 119 | ## 追加措置 120 | 121 | システムの他の部分に、追加の処置を取ります。 122 | 123 | * 漏洩した可能性のあるデータを更新します。 124 | * 似たような犯行を検知するために、新しいアラートを設置します。 125 | * 攻撃に関連した全てのIPアドレスをブロックします。 126 | * 漏洩した可能性のあるキーやクレデンシャルを直ちに無効化します。 127 | 128 | ## フォレンジック解析 129 | 130 | システムが保護されていると革新して、攻撃を検知できる十分な監視が整えば、フォレンジック解析のステップに進むことができます。 131 | 132 | * 作成した読み取り専用イメージやアクセスログから、攻撃に関する情報を精査します。 133 | * 何が発生して、それがどのように起こったのか、そして将来それをどう防止するかを特定ます。 134 | * 攻撃に関与した全てのIPアドレスを追跡します。 135 | * 攻撃者がシステムにもう一度アクセスしようとしてないかログを監視します。 136 | 137 | ## 内部コミュニケーション 138 | 139 | 委任先: ヴァイスプレジデント(VP)または技術ディレクター 140 | 141 | フォレンジック解析などから攻撃が内部犯行でないと確信してから、内部とのコミュニケーションを図ります。 142 | 143 | 144 | * あまり詳細を伝えないようにします。 145 | * タイムラインの概要を説明します。 146 | * 追加措置について議論します。 147 | * 新たな情報があればそれを追います。 148 | 149 | ## 法務部門や外部組織との連絡 150 | 151 | 委任先: ヴァイスプレジデント(VP)または技術ディレクター 152 | 153 | 法務部門と協力して攻撃の発信元を特定し、オーナーにシステムに侵入された可能性があることを知らせます。 154 | 155 | 156 | * 社内の法務部門に連絡します。 157 | * FBIに連絡します。 158 | * 攻撃に使用されたシステムのオペレーターに、システムに侵入された可能性があることを連絡します。 159 | * セキュリティ会社に連絡して、次にやるべきリスク評価や報告の助言をもらいます。 160 | * サイバー保険会社に連絡します。 161 | 162 | ## 外部コミュニケーション 163 | 164 | 委任先: マーケティングチーム 165 | 166 | 取得した全ての情報が確認できて、イベントのタイムラインや、どの情報が漏洩してどのように侵入されたかがわかれば、再発防止策を講じることができます。 167 | その上で情報が漏洩したということと、取るべきアクションを顧客に向けて発表する必要があります。 168 | 169 | * 新たな侵入がされたと混同されないように、告知のタイトルに日付を付けます。 170 | * 「私たちはセキュリティ問題に真剣に取り組んでいます」とは言わないでください。それを読むとうんざりします。 171 | * 正直に、責任を受け入れ、事実を提供し、再発防止のために何を計画しているかを伝えてください。 172 | * 可能な限り、詳細なタイムラインにしてください。 173 | * 漏洩した情報と、それが顧客にどう影響があるかを可能な限り詳しく説明してください。保存してはいけないものを保存していた場合もそれを正直に伝えたください。後から判明すると最悪の事態になります。 174 | * 侵入の原因となった外部関係者の名前を上げたり恥をかかせないようにしましょう。それは良くないです(すでに彼らが告知してる場合を除く。その場合はその告知へのリンクを張ります)。 175 | * 可能な限り、できれば侵入が発覚して数日以内に外部に告知してください。期間が空くと事態は悪化します。 176 | * 可能であれば、一般公開する前に顧客の内部セキュリティチームと連絡をとってください。 177 | 178 | --- 179 | 180 | ## インシデント発生中のコミュニケーション 181 | 182 | * 音声通話やSlackを積極的に使います 183 | * どうしても必要な場合以外はメールは使わないでおきましょう 184 | * メールの件名は「弁護士作業計画」とします 185 | * **@pagerduty.com以外**のメールアドレスが宛先に含まれている場合、メールが暗号化されていることを確認してください。 186 | * インシデントに関する連絡にはSMSを使わないでください。 187 | * より安全なコミュニケーションチャネルに誘導する場合を除きます。たとえば「Slackにできるだけ早く参加してください」 188 | * 承諾が得られるまで、インシデントの情報を対応チーム外に漏らさないでください。 189 | 190 | --- 191 | 192 | ## 追加情報 193 | 194 | * [Computer Security Incident Handling Guide](http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-61r2.pdf) (NIST) 195 | * [Incident Handler's Handbook](https://www.sans.org/reading-room/whitepapers/incident/incident-handlers-handbook-33901) (SANS) 196 | * [Responding to IT Security Incidents](https://technet.microsoft.com/en-us/library/cc700825.aspx) (Microsoft) 197 | * [Defining Incident Management Processes for CSIRTs: A Work in Progress](http://resources.sei.cmu.edu/library/asset-view.cfm?assetid=7153) (CMU) 198 | * [Creating and Managing Computer Security Incident Handling Teams (CSIRTS)](https://www.first.org/conference/2008/papers/killcrece-georgia-slides.pdf) (CERT) 199 | -------------------------------------------------------------------------------- /docs/getting_started.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/getting_started.png 3 | description: このガイドをまとめて、私たちの最も大事な部分を案内し、あなたがどこから始めるべきかのガイドラインを提供します。もし独自のインシデントプロセスを始めているのなら、このドキュメントはどこから始めるべきかを知るための素晴らしい方法です。 4 | --- 5 | 6 | ![はじめに](./assets/img/headers/getting_started.jpg) 7 | *Credit: [Breakingpic @ Pexels](https://www.pexels.com/photo/young-game-match-kids-2923/)* 8 | 9 | まだ組織に決まったプロセスが無かったり、作り始めようとしているのなら、このドキュメントに圧倒的な情報量があることでしょう。 10 | これは**一晩で実装できない**ということを覚えておいてください。 11 | これは時間をかけて築き上げるべきプロセスです。 12 | この時点まで何年もかかりましたが、このドキュメントによって私たちが遭遇した苦難や、可能な限り効率化した成熟したインシデント対応に到達できることを祈ります。 13 | 14 | そのためにも、このガイドをまとめて、私たちの最も大事な部分を案内し、あなたがどこから始めるべきかのガイドラインを提供します。 15 | もし独自のインシデントプロセスを始めているのなら、このドキュメントはどこから始めるべきかを知るための素晴らしい方法です。 16 | 17 | ## あなたにとっての「インシデント」と「重大インシデント」を定義する 18 | 19 | あなたは、私たちの[定義](/before/severity_levels.md)を使い必要はありません。 20 | これは単なる出発点です。 21 | あなたが必要だと思うもでよいです。 22 | 重要なのは、全員が同じ認識を持てるように、この定義が短くシンプルな文章であることです。 23 | インシデント対応プロセスの間は、何がインシデントで何がインシデントが無いかの議論はしないでおくべきです。 24 | もしメトリクスを使う(例えばエラー率が100/min.を超えると重大インシデントである)のならそれは素晴らしいことです。 25 | もしそうでないなら、何がインシデントかの定義を止めないでください。 26 | 27 | これが最初のステップである理由は、インシデントとは何なのかを知るまではインシデントに対応できないからです。 28 | たとえば誰かがインシデントとみなしていても、他の人がインシデントではないとします。 29 | これはインシデント対応中に曖昧さと混乱を招きます。 30 | 組織全体で明確な定義を組織全体に広げることで、全員が同じ理解を持つことができ、混乱を防ぐことができます。 31 | 32 | !!! question "深刻度レベルはどうですか?" 33 | まず最初は「深刻度レベル」について気にする必要はありません。 34 | 何がインシデントで何がそうでないかから始めます。 35 | そのあとに応答プロセスをより具体化したくなったら、深刻度レベルを追加できます。 36 | 37 | ## 対応者を動員する方法を決める 38 | 39 | なにがインシデント対応プロセスをトリガーしますか? 40 | メトリクスに基づく自動アラートですか? 41 | それは始めるのにとてもよいです。 42 | たとえそれが、応答社のグループに通知される単一のアラートであっても。 43 | 44 | !!! tip "インシデント対応を手動でトリガーする方法を用意する" 45 | 何かが起こったときに、手動でインシデント対応をトリガーする方法があると、対応時間の改善に繋がります。 46 | 私たちはこの結論に至るまで少し時間がかかりましたが、もし過去に戻れるのなら最初から取り入れます。 47 | 48 | インシデント専用のWeb会議とチャットルームを設定しておいてください。 49 | これを事前に準備して、応答する必要がある人たちに共有しておきます。 50 | インシデントに対応しようとしているときには、通話とチャットルームの設定はしたくありません。 51 | 通話とルームの名前は静的にしておくか、簡単に見つけられる必要があります。 52 | 53 | また[対応者への期待](/oncall/being_oncall.md)があります。 54 | ページを受け取ったときは、単に問題を解決するためだけに飛び込むのではなく、通話やチャットルームに参加する必要があります。 55 | 56 | 最後に、[アラートには実行可能なアクションがある](/oncall/alerting_principles.md)ことを確認します。 57 | なにか制御ができないことに対して、全員が起こされることは避けたいです。 58 | インシデント対応のトリガーとページは、**即座に人が対応できるもの**のみに対して実行される事を確認してください。 59 | 60 | ## インシデント対応の役割を定義 61 | 62 | まずはじめは[インシデントコマンダー](/before/different_roles#incident-commander-ic)を気にするだけで大丈夫です。 63 | 十分な人数がいるのなら、[記録係](/before/different_roles#scribe)も割り当てる事ができます。 64 | しかし始めは、インシデントコマンダーと対応者で十分です。 65 | インシデントコマンダーは復旧アクションを実行するのではなく、対応をリードして意思決定するだけです。 66 | 初めは[トレーニングガイド](/training/incident_commander.md)全体に従う必要はありません。 67 | 基本的な質問をして、タスクを割り当てるだけで十分です。 68 | 69 | ## ポストモーテムテンプレートを作る 70 | 71 | [私たちのテンプレート](/after/post_mortem_template.md)を利用して始めるか、独自のバージョンから始めることができます。 72 | 構造化されたテンプレートを用意することで、それぞれのインシデントの比較が簡単になります。 73 | まず最初は「何が発生したか?」「なぜ発生したか?」「再発防止のためにはどうすればよいか」の3つの見出しがあるものから始められます。 74 | あとから必要に応じて詳細なフィールドと情報を追加できます。 75 | 76 | !!! tip "名前は重要ではない" 77 | 必ずしも「ポストモーテム」と呼ぶ必要はありません。 78 | 事後アクションレビュー、学びの振り返り、レトロスペクティブ、などの名前を使えます。 79 | 重要なのは何が起こったかをレビューして、そこから何を学んだかです。 80 | プロセスの名前は重要ではありません。 81 | 82 | ## 練習 83 | 84 | 偽のインシデントを実行し、対応者を動員して、誰かにインシデントコマンダーとして行動してもらいます。 85 | 日々の業務からの切り替えや、インシデントの緊急的なオペレーションに慣れます。 86 | 最初は主導権を握るインシデントコマンダーの切り替えに戸惑うかも知れないので、リスクの低い状況で練習すると良いでしょう 87 | [Keep Talking and Nobody Explodes](http://www.keeptalkinggame.com/)というゲームは、インシデント対応スキルを練習するお手軽な方法です。 88 | また独自の[Failure Failure](https://www.pagerduty.com/blog/failure-fridays-four-years/)も実行できます。 89 | これはシステムに何らかの障害を手動で注入して、それを重大インシデントとして扱います。 90 | 91 | 92 | ## 実際のインシデントで利用する 93 | 94 | 基本ができれば、このプロセスを実際のインシデントに利用します。 95 | 使えば使うほど、より自然になります。 96 | 使い続けるに連れ、必要に応じてプロセスを追加したり調整ができます。 97 | 最初はスムーズに進まないかも知れませんが諦めないでください。 98 | 99 | ## 次に何をするか? 100 | 101 | あなたのプロセスの拡張や、いくつかの追加ができます。 102 | 次に取り入れるべき推奨事項がいくつかあります。 103 | 104 | ### 記録係の追加 105 | 106 | 正確なイベントのタイムラインの記録は、インシデントを振り返ったりレビューする時に重要になります。 107 | [記録係](/before/different_roles#scribe)は次に追加すべき役割です。 108 | 109 | ### インシデントコマンダーのローテーション 110 | 111 | 1人のインシデントコマンダーだけではなく、より多くの人が必要になります。 112 | さらに多くの人にトレーニングをして、オンコールのローテーションを組みます。 113 | 最初は週ごとのローテーションでよいでしょう。 114 | できるだけ早く、日ごとのローテーションが開始できるようお勧めします。 115 | 116 | ### 補佐の追加 117 | 118 | インシデントコマンダーが複数人いれば、対応の補佐を追加できます。 119 | [補佐](/before/different_roles#deputy)がいると、長時間に及ぶインシデントを委譲でき、短いインシデントでもインシデントコマンダーのバックアップができます。 120 | 121 | ### 深刻度の定義 122 | 123 | プロセスが正常に機能したら、応答とインシデントの定義にさらに詳細な情報を追加できます。 124 | おそらく特定のインシデントに対して「完璧な」対応はしたくないでしょう。 125 | 必要な対応レベルを文書化できるように、[深刻度レベル](/before/severity_levels.md)を定義しましょう。 126 | 127 | ### 他の役割の追加 128 | 129 | プロセスが確立してくると、他の役割も追加してみましょう。 130 | まずは[顧客連絡](/before/different_roles#customer-liaison)を追加することをお勧めします。 131 | 132 | ### 練習、練習、そして練習 133 | 134 | インシデント対応対応の練習は役立つと行っても過言ではありません。 135 | もしインシデント対応をトリガーしてしまって、もし本当のインシデントでは無いとわかっても、本当のインシデントとして扱えます。 136 | すでに対応者を動員してしまってるので、自由に練習できます。 137 | 138 | ### より大きなインシデントに対するプロセスを定義 139 | 140 | 私たちは[複雑なインシデント](/before/complex_incidents.md)と呼んでいます。 141 | これは頻繁には使用しませんが、事前にWeb会議とチャットルームを用意しておく必要しておきましょう。 142 | また対応者がプロセスを理解していることも確認しましょう。 143 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/incident_response_docs.png 3 | --- 4 | ![Incident Response at PagerDuty](./assets/img/headers/pagerduty_ir.jpg) 5 | 6 | このドキュメントは、PagerDutyにおけるインシデント対応プロセスが載っています。 7 | 重大インシデントや、新しくオンコールを始める社員の準備に利用している、PagerDutyの内部ドキュメントの一部を切り出したものです。 8 | このドキュメントではインシデントに備えることだけではなく、インシデント発生中、また収束後の対応についても説明します。 9 | オンコールを担当する人や、インシデント対応プロセスに関与する人(またきちんとしたインシデント対応プロセスを制定したい人)が読むことを想定しています。 10 | このドキュメントが何なのか、なぜ存在するかは、[「このドキュメントについて」](about.md)を参照してください。 11 | 12 | !!! tip "どこから手を付けるべきか?" 13 | もしあなたがインシデント対応が初めてで、組織的な手順がない場合は、まず[「はじめに」](/getting_started.md)で何ができるかを確認してください。 14 | そして詳細な手順を、[Training Course](training/courses/incident_response.md)から確認することをお勧めします。 15 | 16 | ## オンコールを始める 17 | 18 | まだあなたがオンコールを体験していないのなら、それが何なのかが疑問に思うかも知れません。 19 | このページでは、オンコールに期待されていることと、いくつかの実例を紹介します。 20 | 21 | * [オンコールを始める](oncall/being_oncall.md) - _オンコールを始めるには。あなたの責務とそうでないもの_ 22 | * [アラートの原則](oncall/alerting_principles.md) - _エンジニアを呼び出すための手段やタイミングなどの原則_ 23 | 24 | ## インシデント発生前 25 | 26 | インシデントが発生する前に読むべきものです。 27 | 実際にインシデントが発生してから読むものではないでしょう。 28 | 29 | * [インシデントとはなにか?](before/what_is_an_incident.md) - _インシデント対応の議論の前に、インシデントとは何なのか?_ 30 | * [深刻度レベル](before/severity_levels.md) - _深刻度レベルの分類。SEV-3とSEV-1の違いや、それぞれの対処方法_ 31 | * [インシデント発生時の役割](before/different_roles.md) - _インシデントコマンダー(Incident Commander)、記録係(Scribe)などの、インシデント対応中の役割_ 32 | * [インシデント通話のエチケット](before/call_etiquette.md) - _インシデント通話に参加するまでに知っておくべきエチケット_ 33 | * [複雑なインシデント](before/complex_incidents.md) - _大規模で複雑なインシデントに立ち向かうための手引き_ 34 | 35 | ## インシデント発生中 36 | 37 | 重大インシデント発生中の、情報と手順を紹介します。 38 | 39 | * [インシデント発生中](during/during_an_incident.md) - _インシデント発生中に何をすべきか、どう貢献すべきか_ 40 | * [セキュリティインシデント](during/security_incident_response.md) - _セキュリティインシデントでは通常のインシデントと扱い方が異なります_ 41 | 42 | ## インシデント収束後 43 | 44 | フォローアッププロセスでは、再発防止に何ができるかなどを確認し、日々改善をします。 45 | 46 | * [インシデント収束後](after/after_an_incident.md) - _インシデントが解決したあとにやること_ 47 | * [ポストモーテムプロセス](after/post_mortem_process.md) - _ポストモーテムの手順について、何が関係してどうやって書くか_ 48 | * [ポストモーテムテンプレート](after/post_mortem_template.md) - _重大インシデントに対するポストモーテムで使っているテンプレート_ 49 | * [効果的なポストモーテム](after/effective_post_mortems.md) - _効果的なポストモーテムを書くためのガイド_ 50 | 51 | ## トレーニング 52 | 53 | それではインシデント対応について学びたいですか? 54 | あなたは正しい場所にたどり着きました。 55 | 56 | * [トレーニング概要](training/overview.md) - _私たちのトレーニングガイドの概要と、3rdパーティーのトレーニング資料_ 57 | * [インシデント対応の用語集](training/glossary.md) - _インシデント対応中に使われる用語と定義_ 58 | 59 | ### トレーニングガイド 60 | 61 | * [インシデントコマンダーのトレーニング](training/incident_commander.md) - _次のインシデントコマンダーになるためのガイド_ 62 | * [補佐のトレーニング](training/deputy.md) - _補佐になりインシデントコマンダーをバックアップするためのガイド_ 63 | * [記録係のトレーニング](training/scribe.md) - _記録係のためのガイド_ 64 | * [内容領域専門家のトレーニング](training/subject_matter_expert.md) - _重大インシデント発生中の、全ての参加者への責務と振る舞いのガイド_ 65 | * [顧客連絡のトレーニング](training/customer_liaison.md) - _インシデント発生中に外部への告知するためのガイド_ 66 | * [内務窓口のトレーニング](training/internal_liaison.md) - _インシデント発生中に、社内チームと連携するためのガイド_ 67 | 68 | ### トレーニングコース 69 | 70 | * [Incident Response Training Course](training/courses/incident_response.md) - _インシデント対応とインシデントコマンダーの役割の入門コース(英語)_ 71 | 72 | ## 追加資料 73 | 74 | インシデント対応に関する、外部の資料とリソースです。 75 | 76 | * [読み物](resources/reading.md) - _インシデント対応に関連する、お勧めの読み物_ 77 | * [ChatOps](resources/chatops.md) - _ドキュメントで参照しているチャットBotのコマンドについて_ 78 | * [アンチパターン](resources/anti_patterns.md) - _試してみてダメだったものや、その失敗からの学び_ 79 | -------------------------------------------------------------------------------- /docs/oncall/alerting_principles.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/alerting_principles.png 3 | description: 私たちは、アラートは人間によるアクションが必要というシンプルな原則に基づいて、アラートを管理します。それ以外の私たちで制禦できないものは通知であり、それに対するアクションもできません。通知は便利ですが、いかなる状況でも人々を目覚めさせてはいけません。 4 | --- 5 | 6 | 私たちは **アラートは人間によるアクションが必要** というシンプルな原則に基づいて、受け取るアラートを管理します。 7 | それ以外の私たちで制御できないものは通知であり、それに対するアクションもありません。 8 | 通知は便利ですが、いかなる状況でも人々を目覚めさせてはいけません。 9 | 10 | 11 | ## アラートの優先度 12 | 13 | !!! warning "高優先度アラート" 14 | 15 | 深夜に人を叩き起こすものは **すぐに人が対応できるもの** であるべきです。 16 | そうでなければ、人々を呼び出さないようアラートを調整する必要があります。 17 | 18 | | 優先度 | アラート | 対応 | 19 | | ------------ | ---------------------------------- | -------------------------------- | 20 | | High | 高優先度アラート(24/365) | 人手による**緊急対応**が必要 | 21 | | Medium | 高優先度アラート(**業務時間内**) | 24時間以内に人手による対応が必要 | 22 | | Low | 低優先度アラート(24/365) | いずれか人手による対応が必要 | 23 | | Notification | 抑制されたイベント | 対応不要、情報のみ | 24 | 25 | 新しいアラート/通知を設定する場合は、誰に通知したいかを考えてください。 26 | たとえば、即時対応が必要ない場合は、高優先アラートを鳴らさないよう注意してください。 27 | 28 | ## 優先度の例 29 | 30 | #### 本番サービスで75%のリクエストが失敗して、自動で解決しない 31 | 32 | 優先度**High**で、すぐに人手による対応が必要です。 33 | 34 | ![High Urgency](../assets/img/screenshots/high_urgency.png) 35 | 36 | #### 本番サーバーのディスクが枯渇して、48時間以内にディスクフルになる。ログローテーションでは解決しない。 37 | 38 | 優先度**Medium**で、すぐにではないが人手による対応が必要になります。 39 | 40 | ![Medium Urgency](../assets/img/screenshots/high_business_hours.png) 41 | 42 | #### 1週間以内にSSL証明書が失効する 43 | 44 | これは優先度**Low**で、近いうちに人手による対応が必要になります。 45 | 46 | ![Low Urgency](../assets/img/screenshots/low_urgency.png) 47 | 48 | #### デプロイが成功した 49 | 50 | これは**Notification**で、イベントは抑制されて送信されるべきです。 51 | これはインシデント発生時に役立つ情報ですが、人間に知らせる必要はありません。 52 | 53 | ![Notification](../assets/img/screenshots/suppressed.png) 54 | 55 | ## アラートの内容 56 | 57 | アラートには問題を迅速に特定できる文脈と、復旧できる可能性がある手順を含むべきです。 58 | アラートに一般的なタイトルまたは説明文を使うと返って混乱を招く可能性があります。 59 | 私たちにはアラートの内容に関する一連のガイドラインがあり、全てのアラートがそれに従うべきです。 60 | 61 | #### タイトルやサマリーは説明的で簡潔にする 62 | * ALERT: 何かが壊れた 63 | * `prod-web-loadbalancer-af5462ce` でディスク使用量が80%になった 64 | 65 | #### 本文のどこかに、トリガーされたメトリクスを載せる 66 | * ディスク空き容量が枯渇しています 67 | * `avg(last_1h):max:system.disk.in_use{env:prod-web-loadbalancer} by {host} > 0.8` 68 | 69 | #### 本文には実際の問題が何で、なぜ問題なのかを載せる 70 | * ディスクがいっぱいです 71 | * ディスクの使用量が80%になりました。もしディスクがいっぱいになると、ファイルを作成したり追記ができなくなり、システムが不安定になります。 72 | 73 | #### 問題を解決する明確な手順や手順書へのリンクを載せる。 74 | * 削除して直してください 75 | * 手順書 (https://example.com/runbook/disk) を参考にして、ディスクの空き容量を確保してください。再発防止のために、手順書 (https://example.com/runbook/log-rotate) に従って、ログローテーションのしきい値の設定が十分か調査してください。 76 | 77 | ## アラートをテストする 78 | 79 | 80 | !!! info "テストは重要です" 81 | テストしていなアラートは、アラートが無いのと同じです。 82 | いざというときにアラートが動作するかわかりません。 83 | アラートが実際に動作するかをテストするのは、正常なサービス運用にとって重要で、リリースの計画やデプロイのデプロイ作業に含めるべきです。 84 | 85 | 追加されたアラートは必ずテストしてください。 86 | これは新しいサービスの[Failure Friday](https://www.pagerduty.com/blog/failure-friday-at-pagerduty/)によってカバーされますが、より迅速にする場合は手動でテストしてください。 87 | テストすべきものは 88 | 89 | * 閾値が適切に設定されているか。ノイズの多いアラートは必要ないです。 90 | * データが無い状態 (No Data) でアラートが鳴るかどうか。通常データが無いというのは、閾値を超えることと同じです。 91 | * メトリクスが通常状態に戻ったとき、アラートは自動で解決するかどうか。 92 | -------------------------------------------------------------------------------- /docs/oncall/being_oncall.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/being_on-call.png 3 | description: PagerDutyのオンコールに期待されることと責務を、いつくかのベストプラクティスとエチケットの推奨事項に基づいて要約しています。 4 | --- 5 | ![Alert Fatigue](../assets/img/headers/alert_fatigue.png) 6 | 7 | このページには、オンコールに期待されることと役立つ情報を要約します。 8 | 9 | ## オンコールとはなにか? 10 | 11 | オンコールを始めるということは、担当システムで発生しうる問題の調査、修正をするために、いつでも連絡を取れる状態であることを意味します。 12 | たとえばPagerDuty内のサービスのオンコールを担当している場合、サービスに関するアラートがトリガーされると、あなたは"ページ (page)" (モバイルデバイスによるアラート、メール、電話、SMSなど)で、何が機能しなくなったか、それをどう修正すべきかを受け取ります。 13 | あなたには、問題を解決してサービスを通常の状態に戻すアクションが期待されます。 14 | 15 | オンコールの責務は通常の業務時間を超え、問題が発生すれば、午前2時であっても対応することが期待されます。 16 | これは恐ろしく思えますが(そして起こりうること)が、これは私たちの顧客が遭遇することで、PagerDutyの製品が修正しようとしてる問題たちです。 17 | 18 | 19 | ## 責務 20 | 21 | 1. **準備** 22 | * ラップトップとインターネットの準備します(オフィス、自宅、MiFiドングル、テザリングプラン付きの電話など)。 23 | * チームアラートのエスカレーションは5分以内に発生するように、通知タイムアウトがそれぞれ適切に設定、調整する(プッシュ通知、SMS、電話など)。 24 | * PagerDutyのテキストと電話が["Do Not Disturb"を回避してるか](https://support.pagerduty.com/docs/notification-phone-numbers)。 25 | * 準備ができているか(環境がセットアップされ、必要なレポジトリがローカルにコピーされて動作し、ワークステーションでも環境がセットアップされており、サードバーティーサービスのクレデンシャルが最新であるか、など) 26 | * 私たちのインシデント対応プロセス(このドキュメント)を読んで、深刻なインシデントの処理方法、コミュニケーション上の様々な役割とその方法について理解する。 27 | * オンコール時間(プライマリ、バックアップ)の予定に注意し、旅行、休暇、予約などのスケジュールを調整する。 28 | 29 | 1. **トリアージ** 30 | * 可能ならアラートに応答して対応する(下記の「義務ではない」を参照)。 31 | * 問題の深刻度を判断。 32 | * すぐに対応する必要があるか、または重大インシデントにエスカレーションするか(プロダクションサーバーが炎上している、セキュリティの警告が出ている)。 33 | * 夜間に実施する必要がない作業か(例えばディスク使用率が一定値以上になったが、十分な空き容量があり増加傾向も穏やか)。 34 | より適切な時間(業務時間、翌朝)までアラートをスヌーズにして後で修正する。 35 | * Slackで現在のアクティビティを確認。 36 | 多くの場合は、アラートを引き起こす可能性のあるアクションがそこで告知されている(いつもではない)。 37 | * アラートと初期調査が、一般的な問題なのか関連チームが調査する必要がある特定のサービスで発生しているか。 38 | あなたの専門ではないようなら、他のチームにエスカレーションする。 39 | 40 | 1. **修正** 41 | * あなたには問題に飛び込みそれを修正できる権限がある。 42 | * 必要に応じて他のチームを巻き込む。原因をなかなか特定できない場合、または対応したことがないサービスやアラートの場合は、遠慮なくエスカレーションする。 43 | * 急ぐような問題ではなく、他に優先的な作業がある場合は、追従できるようJIRAチケットを(適切な優先度で)設定する。 44 | 45 | 1. **改善** 46 | * 特定の問題が再発する場合、たとえばアラートが頻繁に送られているが回避可能である場合、おそらくより長期的な作業が必要になる。 47 | * ディスクがいっぱいになり、ログのローテーションが必要で、うるさいアラート... 48 | * もし情報を見つけるのが難しかったり不可能な場合は書き留めておく。 49 | ナレッジベースとドキュメントのリファクタ、改善を継続的に行う。 50 | wikiやcodebaseの意図が、現在の分類方法と異なる場合は、追加のリンクやポインターを追加する。 51 | 52 | 1. **サポート** 53 | * あなたのオンコールシフトが終了したら、次のオンコール担当者に、まだ解決してない問題や他の注意すべき体験について知らせる。 54 | * スケジュールに影響がある変更がある場合(例えば自分のシフトを追加、削除)は、オンコールスケジュールを事前に調整するため、他の人にも伝える。 55 | * 互いにサポートし合う。大量のページが発生する可能性がある行動をする場合は、その期間のオンコールスケジュールを無効化して担当者からページを引き受けるのが礼儀です。 56 | 57 | ## 義務ではない 58 | 59 | 1. _全ての_ アラートに対して最初に応答することは期待されません。 60 | * 実際には通勤などがあります、エスカレーションする前に受信や応答ができないこともある。 61 | そのためのバックアップオンコールとそのスケジュールである。 62 | 63 | 1. 全ての問題を自分で解決することは期待されません。 64 | * 誰もが、全てを知っているわけではない。 65 | チーム全体で手助けする。 66 | 確信がもてない問題をエスカレーションすることは、恥ずべきことではないし学びもある。 67 | 私たちのモットーは「エスカレーションをためらわない」 68 | * サービスオーナーは、どのように動くかをよく知っている。 69 | 特に私たちやサービスオーナーのドキュメントが足りないとき、関連チームとのダブルチェックによりミスを防げる。 70 | 念には念を、多くの場合は専門家に任せるのがベストです。 71 | 72 | ## 推奨事項 73 | 74 | チームがオンコールローテーションを開始する場合、オペレーションチームからスケジュールに関する推奨事項があります。 75 | 76 | * 常にバックアップスケジュールを組む。 77 | これは常に2人が同じオンコールで待機するということである。 78 | チームからメンバーを選ぶのではなく、連絡できるバックアップがいることがわかると、プライマリメンバーのストレス軽減にもなる。 79 | * バックアップシフトは通常、プライマリシフトの直後に割り当てる。 80 | シフト中に前回のプライマリから追加のコンテキストを渡せる機会になる。 81 | また次のシフトで問題の発生を防ぐために修正するのにも役立つ。 82 | 83 | * エスカレーションの第3レベル(バックアップより後)はおそらくチーム全体にすべき。 84 | これは起こらないべき(オペレーションチームの歴史で1度だけ起こった)だが、そうなった場合は次に対応可能な人を探す必要がなくなる。 85 | 86 | ![Escalation](../assets/img/misc/escalation.png) 87 | 88 | * チームマネージャーは通常のローテーションに組み込める(組み込むべき)。 89 | 何が起こっているかのより良い洞察になる。 90 | 91 | * チームの新しいメンバーは、最初の2-3週間はオンコールのローテーションをシャドウイングすべき。 92 | 全てのアラートを受け取り、何をしてるか追従する必要がある。 93 | (全ての新入社員はオペレーションチームをシャドウイングしているが、新しいチームメンバーがチームローテーションをシャドウイングするのも役立つ。) 94 | 95 | * エスカレーションタイムアウトは5分が推奨である。 96 | これは誰かが応答するのに十分な時間であるべき。 97 | もし5分以内に対応できない場合は、おそらく対応できる状況ではない。 98 | 99 | * オンコールを終わるとき、次のオンコール担当者のシフト中に発生しうる問題について、簡単な要約を担当者に提供する必要がある。 100 | サービスが安定しない、問題が再発する可能性があるなど。 101 | もしきちんとするならメールで報告してもよいが、通常は口頭で十分である。 102 | 103 | ### 通知方法の推奨事項 104 | 105 | あなたにとって最適な通知ルールを自由に追加できます。 106 | もし設定方法がわからない場合は、オペレーションチームはいくつかの推奨事項があります。 107 | 108 | ![Mobile Alerts](../assets/img/misc/mobile_alerts.png) 109 | 110 | * プッシュ通知とメールを最初の通知に設定します。 111 | 私達のほとんどは常に携帯電話を持っているので、通常はこれで十分です。 112 | * エスカレーションの時間まで毎分、電話とSMSのどちらか、または両方に通知します。 113 | プッシュでうまく通知できない場合、電話ほど強力なものが必要になる可能性があります。 114 | 手遅れになるまで毎分電話します。 115 | 3回目までに連絡がとれないと、対応できない可能性があり、インシデントはエスカレーションされます。 116 | 117 | ## エチケット 118 | 119 | * オンコール担当者が正午に出社して疲れているようなら、それは彼が怠惰だからではありません。 120 | おそらく夜に緊急対応していました。 121 | 気を遣いましょう。 122 | 123 | * 他の誰かに通知されたインシデントに応答しないでください。 124 | あなたがインシデントにページされなかった場合は応答すべきではないです。 125 | 代わりにあなたのメモをコメントしておきます。 126 | 127 | ![Acknowledging](../assets/img/misc/ack.png) 128 | 129 | * あなたがもし何かをテストをしていたり、ページが発生しうるアクションを実行する場合は、その期間のページを引き受けるようにします。 130 | テストしている期間のページを引き受けるよう、オンコール担当者に伝えます。 131 | 132 | * エスカレーションをためらわないでください。 133 | 問題の解決法がわからない場合、誰かの手を借りることを恥ずかしく思わないでください。 134 | 同様に誰かがあなたに助けを求めても、見下してはいけません。 135 | 136 | * もし1時間程度オンコールを頼まれたら、可能な場合は引き受けるようにしましょう。 137 | 誰しもオンコールに対応できない可能性がある生活をしています。 138 | ある日、町の外からの友達と夜を過ごすために、オンコールの時間を交代できるのはあなたかも知れません。 139 | 140 | * オンコールシフト中にページを受け取ると、その問題を解決する責務があります。 141 | 3時間かかってシフトの残り時間が1時間であっても。 142 | 次のオンコール担当者が良いといえば引き継ぐこともできますが、それが常に可能とは限りません。 143 | -------------------------------------------------------------------------------- /docs/oncall/whos_oncall.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/whos_on-call.png 3 | description: 組織構造には色々ありますが、インシデント対応に関するビジネス上の様々な機能に関する一般的なガイドラインがあります。 4 | --- 5 | ![誰がオンコールになるか](../assets/img/headers/who_oncall.png) 6 | 7 | 組織構造には色々ありますが、インシデント対応に関するビジネス上の様々な機能に関する一般的なガイドラインがあります。 8 | 9 | 一般的には、全ての部門には1次対応の連絡先や、オンコールローテーション、明確なエスカレーションパスがあります。 10 | 組織は常に依存関係を最小にして対応チームに権限を委譲すべきですが、新しい状況では誰を手助けすべきかわからないこともあります。 11 | あらゆるビジネス部門から対応者を決める明確なシステムにより、不測の事態が発生したときに手動手順や曖昧な連絡先に時間を浪費しなくなります。 12 | 13 | ## エンジニア 14 | 15 | エンジニアは典型的な1次対応者で、インシデント対応における[内容領域専門家(Subject-matter expert)](../before/different_roles)です。 16 | 17 | どのエンジニアチームがどの応答に関与するかは、企業の運用モデルにより異なります。 18 | 場合によってはオペレーションチーム、SREチームなどに、新しい問題に対して最初のトリアージや評価をする責務があります。 19 | PagerDutyでは影響するサービスのオンコールエンジニアに、最初のトリアージと評価をする責務があります。 20 | 21 | ## カスタマーサポート / カスタマーサクセス 22 | 23 | サポートは、インシデント対応における顧客の声です。 24 | カスタマーサポートチームのメンバーはデフォルトで[顧客連絡(Customer Liaison)](../training/customer_liaison)となり、Twitter、内部Slackチャネル、必要に応じて他のチャネルなどを通じて、インシデントの状態について顧客とステークホルダーにお知らせします。 25 | また社内のステークホルダーに、内部連絡として最新の情報をお知らせします。 26 | 27 | ## マーケティング 28 | 29 | マーケティングまたは広報は、広報のインシデントに関する1次対応者です。 30 | 31 | さらに会社のブランドまたはイメージが危機に晒されるような深刻なインシデントでは、マーケティングや広報は、メールやブログなどを通じて顧客とのコミュニケーションチャネルにもなります。 32 | 33 | ## プロダクトマネージャーとデザイナー 34 | 35 | 製品の機能が複数のサービスまたは製品に影響を与える場合、プロダクトマネージャーとデザイナーは、対応チームが意思決定する手助けをします。 36 | たとえば、対応チームが最初にどのサービスを復帰させるか決めるとき、プロダクトマネージャーはどのサービスが顧客に影響があるか手助けできます。 37 | 38 | 製品は[ポストモーテム](../after/post_mortem_process)にも関与し、 39 | フォローアップアクションをスケジュールしたり、問題に関する製品の変更をアドバイスします。 40 | 41 | ## 経営陣 42 | 43 | 重大インシデント発生中に経営陣に更新情報を伝えることで、組織のリーダーが必要な背景情報を確認でき、経営陣が[現場に飛び込んでくる](../training/glossary/#executive-swoop)ことを防ぎます。 44 | インシデントコマンダーは最終的な権限を持ちますが、大規模インシデントが会社の最高レベルのアクションを必要とすることがあります。 45 | たとえばシニア経営陣が、影響をうける顧客またはパートナーに連絡をとり、問題に取り組んでいるということを知らせたい場合があります。 46 | 47 | ## セールス 48 | 49 | 通常、セールスはインシデント対応中のステークホルダーとなります。 50 | デモや顧客との商談に影響する場合はそれを知らせ、アカウント所有者は潜在的な影響を理解する必要があります。 51 | 52 | ## 人事 53 | 54 | 通常、人事はインシデントで影響する従業員の安全または健康に関与します。 55 | さらにセキュリティインシデントの場合、セキュリティチームは内部犯行と影響する従業員の保護の両方のために、人事と連携する必要があります。 56 | 57 | ## 経理 58 | 59 | 多くの場合、経理はインシデント対応中のステークホルダーとなり、影響のある支払い、会計、あるいは月末、四半期ごとの活動に影響があるプラットフォームへの影響を常に考える必要があります。 60 | 61 | しかし、インシデント対応でサードパーティのアカウント管理や関連するアクションが必要になるコンポーネントがある可能性があるので、経理は明確なオンコールのローテーションやエスカレーションパスを持つべきです。 62 | 63 | !!! tip "組織全体を考えてください" 64 | 65 | 他の部門がインシデント対応における、対応者やステークホルダーとなるかもしれません。 66 | 業務の異なる分野を意識し、その状況で誰が関与するか考えるのは大事です。 67 | そしてオンコールをうける誰もが、インシデント対応のトレーニングや責務を理解していることも重要です。 68 | -------------------------------------------------------------------------------- /docs/resources/anti_patterns.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/anti-patterns.png 3 | description: ここではうまく機能しないということがわかったいくつかのプロセスを紹介します。過去に試してみて後悔したり、かなりの時間考えたが結果的に却下したものなどです。同じ間違いを繰り返さないように、またなぜそれを後から却下したかを文書化しておきます。 4 | --- 5 | 6 | !!! warning "プロセスのアンチパターン" 7 | ここではうまく機能しないということがわかったいくつかのプロセスを紹介します。 8 | 過去に試してみて後悔したり、かなりの時間考えたが結果的に却下したものなどです。 9 | 同じ間違いを繰り返さないように、またなぜそれを後から却下したかを文書化しておきます。 10 | ここで紹介するものは順不同です。 11 | 12 | ## 全員が通話に参加する 13 | 14 | 信じられないかも知れませんが、SEV-2インシデントが発生した時に、PagerDutyの全てのエンジニアを呼び出していました。 15 | SEV-2が午前3時に発生した場合、午前3時にも関わらずエンジニア部門全員をページしてました。 16 | 17 | 1. 会社が今よりも小さかったとき、エンジニアは数人しかいませんでした。 18 | なので本当に必要なエンジニアは全員だったので、この方法はうまくいってました。 19 | 1. インシデントをトリアージして必要な人を呼ぶのではなく、全員が通話にいることでより迅速に対応できると考えていました。 20 | 21 | エンジニア部門は拡大しましたが、この方法はスケールできず、すぐに問題が明らかになりました。 22 | 23 | 1. 通話にいるひとのほとんどが何もできませんでした。何の理由もなく彼らは起こされました。 24 | 1. 人をページするのはコストがかかります。従業員の健康状態と金銭的理由の両方です。 25 | 午前3時にエンジニア部門全員が起こされてしまうと、翌日部門全体で生産的な作業ができなくなってしまいます。 26 | 1. オンコールでは無かった人には再びページされます。 27 | 28 | あらゆるインシデント対応は **効率的な管理範囲**を維持し続ける事が重要です。 29 | もしインシデントコマンダーに直接報告する人が7-8人いるのなら、事態はすぐに気後れするでしょう。 30 | そのためチーム全体ではなく、特定のサービスのオンコールエンジニアのみを呼び出します。 31 | より多くの対応者が必要になった場合は、対応に参加するよう内部連絡によって動員されます。 32 | 10回中9回は追加の対応者が必要にならないため、残りのメンバーは邪魔されること無く休息をとることができます。 33 | これによりエンジニア部門がより幸せになり、応答処理がより合理化されます。 34 | 35 | ## 全員が通話に残り続けるようにする 36 | 37 | 私たちの当初の考えは、インシデントの通話に参加したら、その地点から通話終了まで居続けるべきだと考えていました。 38 | インシデントが解決する前に再び必要になる可能性があるためです。 39 | 残念ながらそれは実際には、その必要ないということが分かりました。 40 | 通常誰かが動員されて、システムの調査をしたり特定のアクションを実行すると、その後は特に必要ありません。 41 | 通話中の全員が何もせずに、誰も眠りにつけなかったことがありました。 42 | また通話にとどまるべきだというプレッシャーにもなります。 43 | 44 | 現在は、不要になった場合は通話から出るようお願いしています。 45 | インシデントコマンダーが影響のあるシステムを確認すると、他のシステムの担当者は休息が取れるように通話を出られるようにします。 46 | 本当に必要な場合は、いつでも再動員できます。 47 | ほとんどの場合はそれは必要ないので、99%のケースに適応します。 48 | 49 | ## 多すぎるステータスの更新 50 | 51 | 経営陣は何が起こっているかを知る必要があり、議論に参加して5分ごとにステータスの更新情報を提供していました。 52 | この問題は更新情報を提供するのに時間がかかりすぎるということでした。 53 | 54 | 重大インシデント発生中では、大体の場合は定期的に20-30分ごとに情報を提供するので十分だとわかりました。 55 | これにより更新情報を提供するだけでなく、より有用な情報が含まれる可能性が高くなります。 56 | これよりも高頻度で情報を提供できないというわけではありませんが、その必要ないでしょう。 57 | 可能な限り問題の修正に時間を使いたいと思いますが、ステークホルダーと一緒に議論もしたいです。 58 | これは間違えやすく、微妙なバランスです。 59 | 60 | ## 沈黙は進捗がないという憶測 61 | 62 | インシデントの通話で沈黙している人は何もしていないとみなせますが、これは稀なケースです。 63 | 通話に参加するときは、おしゃべりがない期間が合っても良いですし、それは妥当です。 64 | 静かなのは、喋ったり更新情報を提供せずに、問題を解決しているからです。 65 | 私たちは「Keep talking and nobody gets fired」というゲームをプレイしているのでは無いのです。 66 | インシデントコマンダーは通話中の殆どで話し続ける必要がある人の1人です。 67 | 通常彼らは、必要に応じて無言の時間にステータスの更新情報で埋めます。 68 | 組織の他のメンバーは通話中の沈黙は悪いことではなく、進捗が止まっていることでは無いということを、トレーニングを受けて知る必要があります。 69 | スタッフたちがこの事を知っているか確認することで、インシデント解決を邪魔する、インシデントの通話中での不適切な会話を防ぐことができます。 70 | 71 | ## インシデント通話中に深刻度について繰り返し議論する 72 | 73 | 過去のPagerDutyでは、インシデントの通話の始まりで、状況は本当にSEV-2なのか、通話がいらないそれ未満なのかという議論が多くありました。 74 | この議論はみんなが知りたがり、いつも時間がかかっていました。 75 | 議論中にも問題は発生しており、インシデントはその間にも進行して、SEV-1になるまでの10分間を無駄にしただけでした。 76 | 77 | 現在は **インシデント通話中に深刻度の議論をしない** とうルールが決まり、常に最も高い深刻度を想定して問題を扱います。 78 | したがってSEV-2かSEV-3かわからない場合は、SEV-2としての行動します。 79 | インシデント対応と呼び出された対応者はすでにエンジンがかかっているので、もしSEV-3であるとわかっても、通常どおり処理を続けます。 80 | 81 | ## 他の対応者へのエスカレーションをためらう 82 | 83 | 午前3時で、あなたがインシデントの対応者だと仮定します。 84 | 内容領域専門家が問題をデバッグしようとしてるか行き詰まっており、夜間のため他のメンバーの呼び出しをためらっています。 85 | これによりインシデントが必要以上に長引く可能性もあります。 86 | 87 | **「エスカレーションをためらっては行けない」**というのは、私たちの持論です。 88 | もしあなたが午前3時に問題に行き詰まってしまった場合でも、その状況を解決できる知見がある誰かを呼び出すのをためらわないでください。 89 | ただしやりすぎたり、全員をページしないでください。アンチパターンに陥ってしまいます。 90 | しかし助けが必要な場合は、誰かをページできないとは思わないでください。 91 | 92 | ## インシデントの通話中にプロセスとポリシーの決定について議論する 93 | 94 | 対応者がインシデント対応ポリシーとプロセスに同意しない場合があります。 95 | これによりインシデントの通話中に議論が発生します。 96 | 結果的にみんなのプロセスが脱線し、根本的なインシデントが長引き、対応が妨げられる可能性があります。 97 | プロセスに同意できずにそれを変更したいというのは全く問題ありません(実際に、プロセスを反復的に改善できるので、私たちはこれを奨励しています)。 98 | しかしインシデント発生中は、その議論はすべきではありません。 99 | 100 | 深刻度と同じように、**インシデント発生中は、ポリシーとプロセスについて議論すべきではない**です。 101 | インシデント発生中は現在のプロセスに従うべきで、懸念事項はその後にポストモーテムまたはインシデント対応プロセスを管理するチームに伝えるべきです。 102 | 103 | ## ポストモーテムとフォローアップ活動を放置する 104 | 105 | ポストモーテムに悩まされずに、インシデントが解決するのは、魅力的です。 106 | 問題の原因が自明であるか、それをするに値しない場合のどちらかです。 107 | しかしこの罠に陥らないでください。 108 | ポストモーテムは常に価値があるものです。 109 | 人々はインシデントに動員し、それのコストもかかりました。 110 | 何が起こったかを理解して、将来そのコストを回避したいです。 111 | 112 | インシデント収束後のポストモーテムを放置しないでください。 113 | ポストモーテムなしでは、何が正しい行いなのか、どこを改善できるか、そして最も重要な、次回にどうすれば回避できるかの、判断ができなくなります。 114 | よく設計された、誰も責めないポストモーテムは、チームに継続的に学びの機会を与え、インフラとインシデント対応プロセスの反復的な改善ができます。 115 | 116 | あなたが対応者を動員したにも関わらず、それが「本当の」インシデントではなかった場合でも、ポストモーテムは必要になります。 117 | 次回以降も対応者を動員して、時間を無駄にするからです。 118 | インシデント対応が必要なかったのにトリガーされた理由を見つけて、その問題を修正します。 119 | 120 | ## 目の前の問題に集中しすぎる 121 | 122 | インシデントの対応者は、通常は目の前のタスクに集中しがちです。 123 | 一般的にインシデントコマンダーは、目の前の問題よりも全体像を捉えてることができる人です。 124 | 内容領域専門家は全体像を把握せずに、目の前の問題に集中しすぎる事があります。 125 | インシデントコマンダーからの指示を聞かなかったり、特定の問題に対して視野が狭すぎる、内容領域専門家との通話中に同じ問題を引き起こします。 126 | 127 | インシデントコマンダーからの指示は常に従う必要があり、現在起こっている全体的な背景情報が含まれる事が多いです。 128 | 目のための問題に極度に集中しすぎないようにしましょう。 129 | プロセスを狂わせることになります。 130 | 私たちはインシデントの症状ではなく、原因を処理したいのです。 131 | 132 | ## ポリシーとプロセスの変更に反対する 133 | 134 | 安定したプロセスが確立され、インシデントが解決できるようになると、そのプロセスの変更に多くの迷いと抵抗が出てきます。 135 | 「壊れない限り修正しない」のように。 136 | 会社が成長するにつれ、対応プロセスも変更する必要が出てきます。 137 | 古いプロセスとプラクティスが長い間変化しないと、将来のインシデント対応の妨げとなる可能性があります。 138 | もちろん無謀なことはしてはいけません。 139 | 実用的な変更をして、 **短期的には速度が落ちるかも知れませんが、長期的では早くかるかもしれないので、恐れないでください**。 140 | これは難しい変更ですが、通常は最も価値があることです。 141 | 142 | 143 | ## 複数の役割を引き受けようとする 144 | 145 | 過去のPagerDutyのインシデントでは、インシデントコマンダーが内容領域専門家の役割を引き受けて、問題を自身で解決しようとしました。 146 | これはインシデントコマンダーが日々の業務ではエンジニアであるときに、起こることが多いです。 147 | 彼らはインシデントが発生したシステムに詳しく、問題を修正するための知見も持っています。 148 | 問題を早く解決したいがために、インシデントコマンダーが問題解決に取り組みます。 149 | 場合によっては幸運にもインシデントを解決できるかも知れませんが、ほとんどの場合は目に見えた問題がインシデントの根本原因でない可能性が高いです。 150 | それが明らかになる頃には、目の前の問題のみに取り組み他のシステムに注意を払えないインシデントコマンダーとなります。 151 | これは事実上、問題解決に忙しく、インシデントコマンダーがいないということです。 152 | 必然的に問題は予想よりも遥かに大きくなり、応答者は完全に目的を見失ってしまいます。 153 | 154 | **インシデントコマンダーは同時に他の役割を引き受けることはできません**。 155 | 内容領域専門家として飛びつきたいのならインシデントコマンダーになるのは難しいかも知ませんが、インシデントコマンダーを放棄したくなる気持ちを抑える必要があります。 156 | もし本当にあなたのみが問題を解決できるのなら、インシデントコマンダーは別の誰かに引き継いで、内容領域専門家の役割になるべきです。 157 | これによりインシデントコマンダーが、残りの手順を軌道に乗せることができます。 158 | 159 | インシデントコマンダーの仕事には、現在のアクションで問題を解決できない場合のバックアッププランの準備も必要です。 160 | 内容領域専門家として特定の問題を修正しているときは、バックアッププランにつていも考える事ができません。 161 | 162 | ## ヒーローになろうとする 163 | 164 | もしあなたが内容領域専門家として行動してるのなら、全ての問題をあなた自身が解決しようとします。 165 | 全ての要求に対して、飛びついて自分が引き受けると言いたいかも知れません。 166 | あなたは全ての問題を解決するために不可欠な人となってしまいます。 167 | 意欲的なのは立派ですが、ほとんどの場合効率的ではありません。 168 | インシデント中はマルチタスクは避けて、一度に1つの問題に取り組むべきです。 169 | **自分で全てを解決しようとしないでください**。 170 | もしあなたの専門分野に関する要求が複数来た場合は、他の専門家に委譲して、必要ならバックアップの対応者をページします。 171 | 172 | 他の内容領域専門家にタスクが割り当てられている場合は、相談せず他人のタスクを勝手に実行しないでください。 173 | 助けようとしても、2人が同じ問題に取り組み、予期しないところで互いに干渉して、最終的には対応の妨げになります。 174 | 175 | ## ポリシーの変更を対応者に共有しない 176 | 177 | ポリシーとプロセスの変更を、みんなが事前にドキュメントを読むことに期待して、内部ドキュメント(これ)を更新するだけという罠がありました。 178 | もちろん、何も起こりませんでした。 179 | 180 | インシデント発生中に予期せぬことが起こらないために、**ポリシーの変更は事前に対応者に適切な方法で共有する必要があります**。 181 | これはメールでもできますし、チャットルームで知らせることもできます。 182 | 対応者にとって、大きなポリシーの変更が不意打ちであってはいけません。 183 | 184 | ## インシデントコマンダーに深い専門知識を要求する 185 | 186 | インシデントコマンダーが初期の頃に陥った罠です。 187 | 高度な専門知識をもつインシデントコマンダーのみを目指して、新しいインシデントコマンダーにはいくつかの強力な技術要件を設定していました。 188 | 問題をすばやく解決するためです。 189 | オンコールのローテーションを効果的に維持するために幅広い選択肢が必要だとわかると、インシデントコマンダーの潜在的な候補を制限していることに気づきました。 190 | 191 | **インシデントコマンダーは組織の全員ができ、専門知識を必要としません**。 192 | インシデントコマンダーはインシデントの調整をするのみで、そのためにはシステムの深い専門知識は必要になりません。 193 | 内容領域専門家は深い専門知識が必要になる役割の1つです。 194 | インシデントコマンダーは、システムがどのように動作しているかの高位な知識のみが必要です。 195 | どこにデータが流れていて、システムがどのように使い、どこにデータが流れているかです。 196 | 技術的な詳細はインシデントコマンダーが内容領域専門家に質問します。 197 | 198 | インシデントコマンダーに対する強い技術要件を落とすことで、インシデントコマンダーができる人を増やし、高い品質と効果的な対応ができ、会社の大部分でオンコールの負荷に対する共感を得ることができました。 199 | -------------------------------------------------------------------------------- /docs/resources/chatops.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/chatops.png 3 | description: このドキュメント全体を通して、"!"で始まる様々なチャットコマンドを参照しています(`!ic page`)。これらのコマンドはSlack上のBotで実行し、私たちが問題を検出した時にこのコマンドを監視しています。このページでは、このドキュメントで利用したコマンドの概要と、そのコマンドが裏で何をしているか紹介ます。 4 | --- 5 | 6 | このドキュメント全体を通して、"!"で始まる様々なチャットコマンドを参照しています(`!ic page`)。 7 | これらのコマンドはSlack上のBotで実行し、私たちが問題を検出した時にこのコマンドを監視しています。 8 | このページでは、このドキュメントで利用したコマンドの概要と、そのコマンドが裏で何をしているか紹介します。 9 | 10 | !!! question "これらのBotはオープンソースですか?" 11 | 私たちが利用しているチャットプラグインとBotは、現在は残念がらこれらのBotはオープンソース化されていません。 12 | しかし将来、それらをオープンソース化して、皆さんが利用できるようにしたいと考えています。 13 | それまでの間は、このページにある説明が、独自のツールで同じ機能を再現するのに役立つのを願います。 14 | 15 | ## インシデント対応 16 | 17 | `!ic` コマンドは、して体の様々なオンコールスケジュールで、PagerDuty APIをポーリングします。 18 | 現在のオンコールユーザーの名前と連絡先をキャッシュして、APIリクエストに問題が発生しても、問題ありません。 19 | 20 | 21 | ### `!ic` 22 | 23 | このコマンドは現在のオンコールのインシデントコマンダーと、彼らの電話番号とユーザーをページする方法を通知する方法を表示します。 24 | 25 | ![Incident Commander List](../assets/img/chatops/ic.png) 26 | 27 | ### `!ic page` 28 | 29 | このコマンドはインシデント対応プロセスを手動でトリガーします。 30 | スケジュール情報をキャッシュし、現在のオンコールを担当するインシデントコマンダー(プライマリとバックアップ、トレーニングでシャドウイングする人)をページします。 31 | また何らかの理由でページできない場合はSlackループに通知し、ユーザーに連絡先を表示して手動で電話をかけられるようにします。 32 | さらに新しいPagerDutyインシデントを作成して、ユーザーを関連付けます。 33 | 34 | ![Paging Incident Commanders](../assets/img/chatops/ic_page.png) 35 | 36 | 何らかの理由でインシデントコマンダーを自動で呼べなかった場合は、Botは失敗を検知します。 37 | 関連するメンバーの電話番号を表示して、手動で連絡できるようにします。 38 | テスト用のBotの出力結果を示します。 39 | API経由でPagerDutyで呼び出せなかった場合をシミュレートしています。 40 | 41 | ![Testing for Failure](../assets/img/chatops/test_for_failure.png) 42 | 43 | ### `!ic responders` 44 | 45 | これは `!ic` コマンドと同じように機能しますが、インシデントコマンダーだけでなく、チーム全員に対する情報を表示します。 46 | それぞれのチームの、現在オンコール担当である人たちが一覧表示されます。 47 | これは一時的に誰がインシデントの通話に参加するかを知るのに便利です。 48 | 49 | ![Listing Responders](../assets/img/chatops/ic_responders.png) 50 | 51 | ### `!ic page responders` 52 | 53 | これは `!ic page` コマンドと同じように機能しますが、インシデントコマンダーだけでなく対応者一覧に対してページします。 54 | 通常は関連するチームだけがページされるのでめったに利用されることはありません。 55 | しかし全員が総力を挙げて対応が必要になる場合や、現在のオンコール全員をページするのに必要です。 56 | 57 | ![Paging Responders](../assets/img/chatops/ic_page_responders.png) 58 | 59 | ### `!ic who ` 60 | 61 | 場合によっては、特定の誰かを指定して通話に参加させる必要があります。 62 | このコマンドは特定のユーザーの連絡先と、ページする方法を表示します。 63 | 64 | ![Identifying Users](../assets/img/chatops/ic_who_rich.png) 65 | 66 | ### `!ic page ` 67 | 68 | このコマンドは特定のユーザーをページします。 69 | 70 | ![Paging a User](../assets/img/chatops/ic_page_rich.png) 71 | 72 | ## ステータス 73 | 74 | `!status`コマンドは、私たちの内部監視システムを参照して、システムによって報告された現在の状態を判断します。 75 | これはアラートツールが問題を問題の自動で通知するために利用するステータスです。 76 | 77 | ### `!status` 78 | 79 | 現在のシステムステータスの概要が分かります。 80 | またステータスを確認できない場合は、問題が発生している可能性があるため、アラートが表示されます。 81 | 通常はステータスは `NORMAL` になっているはずです。 82 | 83 | ![Displaying Status](../assets/img/chatops/status.png) 84 | 85 | ### `!status stalk` 86 | 87 | これは上記のコマンドと同じですが、停止するまで(`!status unstalk`)の間、30秒ごとに状態をポーリングします。 88 | 前回のチェックからステータスが変更された場合のみ、チャットルームにステータスを報告します。 89 | インシデント発生中にこれを実行することで、モニタリングシステムを手動で確認しなくても、システムが悪い状態か回復したかを簡単に確認できます。 90 | 91 | ![Stalking Status](../assets/img/chatops/status_stalk.png) 92 | -------------------------------------------------------------------------------- /docs/resources/reading.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/reading.png 3 | description: インシデント対応に関する、いくつかの資料を紹介します。 4 | --- 5 | ![Looking up information](../assets/img/headers/resources.jpg) 6 | *Credit: [Axelle B](http://www.publicdomainpictures.net/view-image.php?image=151506&picture=young-woman-my-computer)* 7 | 8 | インシデント対応に関する、いくつかの資料を紹介します。 9 | 10 | ## 書籍 11 | 12 | * [Incident Management for Operations](http://shop.oreilly.com/product/0636920036159.do) (Rob Schnepp, Ron Vidal, Chris Hawley) 13 | * [Incident Response](http://shop.oreilly.com/product/9780596001308.do) (Kenneth R. van Wyk, Richard Forno) 14 | * [The Checklist Manifesto](http://atulgawande.com/book/the-checklist-manifesto/) (Atul Gawande) 15 | * [The Field Guide to Understanding Human Error](https://www.amazon.com/Field-Guide-Understanding-Human-Error/dp/0754648265) (Sidney Dekker) 16 | * [Normal Accidents: Living with High-Risk Technologies](https://www.amazon.com/Normal-Accidents-Living-High-Risk-Technologies/dp/0691004129) (Charles Perrow) 17 | * [Site Reliability Engineering](https://landing.google.com/sre/book.html) (Google) 18 | * [IT Disaster Response: Lessons Learned in the Field](https://www.amazon.com/Disaster-Response-Lessons-Learned-Field/dp/1484221834) (Greg D. Moore) 19 | * [Comparative Emergency Management](https://training.fema.gov/hiedu/aemrc/booksdownload/compemmgmtbookproject/) (David A. McEntire, Ph.D.) 20 | 21 | ## ドキュメント 22 | 23 | * [Debriefing Facilitation Guide](http://extfiles.etsy.com/DebriefingFacilitationGuide.pdf) (Etsy) 24 | 25 | ## 講演 26 | 27 | * [Every Minute Counts: Leading Heroku's Incident Response](https://www.heavybit.com/library/video/every-minute-counts-coordinating-herokus-incident-response/) (Blake Gentry) 28 | * [Three Analytical Traps in Accident Investigation](https://www.youtube.com/watch?v=TqaFT-0cY7U) (Dr. Johan Bergström) 29 | 30 | ## 公的資料 31 | 32 | * [US National Incident Management System (NIMS)](https://www.fema.gov/national-incident-management-system) (FEMA) 33 | * [UK Government Fire and Rescue Manual - Incident Command](https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/7643/incidentcommand.pdf) (UK.GOV) 34 | * [New Zealand Coordinated Incident Management System (CIMS)](https://www.civildefence.govt.nz/resources/new-zealand-coordinated-incident-management-system-cims-2nd-edition/) (NZCDEM) 35 | * [The Australasian Inter-Service Incident Management System (AIIMS)](https://training.fema.gov/hiedu/docs/cem/comparative%20em%20-%20session%2021%20-%20handout%2021-1%20aiims%20manual.pdf) (AFAC) 36 | * [Academic Emergency Management and Related Courses](https://training.fema.gov/hiedu/aemrc/) (FEMA) 37 | 38 | ## その他の資料 39 | 40 | * [Informed's NIMS Incident Command System Field Guide](https://www.amazon.com/gp/product/1284038408) (Michael J. Ward) 41 | -------------------------------------------------------------------------------- /docs/training/customer_liaison.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/customer_liaison.png 3 | description: So you want to be a customer liaison? You've come to the right place! 4 | --- 5 | ![PagerDuty Status Page](../assets/img/headers/status_page.jpg) 6 | 7 | 8 | 顧客連絡になりたいですか? 9 | あなたは正しい場所にたどり着けました! 10 | 11 | ## 目的 12 | 13 | 顧客連絡の目的は、現在の状況を顧客に通知し、顧客からのフィードバックをインシデントコマンダーに知らせることです。 14 | 15 | インシデントを対応している他のメンバーは、顧客へのメッセージについて気を揉むのではなく、目の前の問題に取り組むほうが重要です。 16 | 17 | 顧客連絡の仕事は、通話を聞きインシデントのSlackルームを監視して、届けられた顧客のサポートリクエストを対応し、インシデントの対応状況を追従することです(現在調査中、解決)。 18 | インシデントコマンダーは、通話を通じてインシデントの顧客へのお知らせや更新情報に関する指示をします。 19 | あなたはメッセージを作成して、インシデントコマンダーからの許可のもとにメッセージを顧客に送信します。 20 | 21 | ## 前提条件 22 | 23 | 顧客連絡になる前に、次のいくつかの基準を満たしている必要があります。 24 | その基準をまだ満たしていなくても心配しないでください。 25 | トレーニングを受けることができます! 26 | 27 | * 口頭および文面での**コミュニケーション能力** 28 | * **カスタマーサポートチーム**の一員、またはカスタマーサポートのトレーニングを受けている 29 | 30 | ## 責務 31 | 32 | [インシデントの異なる役割](/before/different_roles.md)を読んで、顧客連絡には何が期待されて、他のやり取りする役割から期待されることを確認してください。 33 | 34 | ## トレーニングプロセス 35 | 36 | この役割に関する決まったトレーニングプロセスはありません。 37 | カスタマーサポートチームと連絡をとって学んでください。 38 | 39 | ## 顧客連絡 40 | 41 | 顧客連絡の目的は、インシデント発生中に、顧客に何が発生してをお知らせして、顧客からの声をインシデントコマンダーに伝えます。 42 | 顧客がインシデントの影響を把握して、現在問題に取り組んでいるというのを顧客が知るのは重要です。 43 | 顧客への告知メッセージを作るのは、とくに文字数制限があるTwitterなどではトリッキーです。 44 | しかしメッセージの作成に関するいくつかのTipsがあります。 45 | 46 | * あらかじめデフォルトのメッセージを用意する 47 | * 用意しておくと、問題の範囲がわからない時に最初の更新情報に利用できます。 48 | * 正直に 49 | * 決して嘘や推測はしない。何が起こっているか自信がない場合はインシデントコマンダーと協力する。 50 | * 顧客に透明性のある情報を提供する。もし重大な誤りを犯したとしてもそれを正直に伝える。 51 | * インシデントの対応状況を伝える 52 | * _「インシデントを確認しました」_ 53 | * _「通知の遅れを調査しています」_ 54 | * _「修正が適用され現在デプロイされています」_ 55 | * _「問題は解決されました」_ 56 | * インシデントが顧客にどう影響があるかを明確にする。これは顧客が第一に気にする情報です。 57 | * 通知が遅延しますか?Webサイトが遅いがまだ利用できますか? 58 | * インシデントが解決するまで顧客利用できる回避法を提供します。 59 | * 解決までの予測時間を立てないでください 60 | * 決して _「このインシデントは10分以内に解決します」_ とは言わないでください。他のことも起こりうる可能性があり、守れない約束をすると顧客は怒ります。 61 | * 詳細すぎる情報を提供しないでください 62 | * 顧客は `application-server-123`に問題があるかは気にしません。顧客は通知が届かないことを気にします。提供する情報はノイズではなく、関連があることを確認してください。 63 | 64 | ## インシデント通話手順と用語 65 | 66 | [顧客連絡のためのステップ](/during/during_an_incident.md)に、インシデント発生中に何をすべきかが説明されています。 67 | 68 | ### メッセージの承諾をもらう 69 | 70 | 告知メッセージができたら、外部に投稿する前にインシデントコマンダーからの承諾を得る必要があります。 71 | 単にメッセージをSlackに貼って、インシデントコマンダーからの口頭または文面での確認を得てください。 72 | 73 | > (あなた) 顧客へのメッセージです。「私たちは通知の遅延を検知して、現在問題の調査中です」 74 | 75 | > (インシデントコマンダー): 良さそうなので投稿してください。 76 | 77 | メッセージの作成中にインシデントの性質が変わり、告知すべき新たな情報がわかる可能性もあります。 78 | そのため送信前にインシデントコマンダーに確認するのは重要です。 79 | 80 | ### 顧客からの通知 81 | 82 | インシデント発生中に顧客から電話やメールを受け取ることがあります。 83 | これはインシデントの範囲を知るための、インシデントコマンダーにとって重要な情報です。 84 | インシデントコマンダーには顧客から届いた情報を知らせ続ける必要があります。 85 | 86 | > 顧客からここ数分でメッセージを受け取れなかったという電話が届きました。 87 | 88 | これにより最初に調査すべき領域や、インシデントの現在の状況をインシデントコマンダーに知らせることができます。 89 | -------------------------------------------------------------------------------- /docs/training/deputy.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/deputy.png 3 | description:補佐になりたいですか?あなたは正しい場所にたどり着きました! 4 | --- 5 | ![補佐](../assets/img/headers/incident_command_support.jpg) 6 | *Credit: [oregondot @ Flickr](https://www.flickr.com/photos/oregondot/8743801731/in/album-72157633494644719/)* 7 | 8 | 補佐になりたいですか? 9 | あなたは正しい場所にたどり着きました! 10 | 11 | ## 目的 12 | 13 | 補佐の目的はインシデントコマンダーのサポートです。 14 | タイマーを確認しながら、インシデントコマンダーに重要な情報を伝え、インシデントコマンダーの指示で他の人をページします。 15 | 16 | インシデントコマンダーはタイマーの確認を気にするのではなく、目の前の問題に取り組むほうが重要です。 17 | 補佐はインシデントコマンダーをサポートし、インシデントコマンダーがインシデントに集中するためにいます。 18 | 19 | 補佐は、インシデントコマンダーからの要求があればそれらを引き継ぐことが期待されます。 20 | 21 | **修正や、グラフの確認、ログの調査は行わないでください。** 22 | それらはインシデントコマンダーによって解決者に委譲されます。 23 | 24 | ## 前提条件 25 | 26 | 補佐になるまえに、次の基準を満たしている必要があります。 27 | その基準をまだ満たしていなくても心配しないでください。 28 | トレーニングを受けることができます! 29 | 30 | * [インシデントコマンダー](/training/incident_commander.md)としてのトレーニングを受けている。 31 | 32 | ## 責務 33 | 34 | [インシデントの異なる役割](/before/different_roles.md)を読んで、補佐には何が期待されて、他のやり取りする役割から期待されることを確認してください。 35 | 36 | ## トレーニングプロセス 37 | 38 | インシデントコマンダーのトレーニングはとても簡単です。 39 | 40 | * [インシデントコマンダーのトレーニング](/training/incident_commander.md)に従ってください。 41 | * このページを読んでください。 42 | 43 | ## インシデント通話手順と用語 44 | 45 | [補佐のためのステップ](/during/during_an_incident.md)に、インシデント発生中に何をすべきかが説明されています。 46 | 47 | 以下はインシデントの通話中に使うべきフレーズとパターンの例です。 48 | 49 | ### インシデントコマンダーにタイマーを知らせる 50 | 51 | あなたは、インシデント発生からの経過時間を確認し、10分ごとに緊急度を上げたりサポートチームにツイートしてもらうよう呼びかけできるようにします。 52 | これは通話中にインシデントコマンダーに伝えるだけです。 53 | 54 | > インシデントコマンダー、インシデント発生から10分が経過していることに注意してください 55 | 56 | 同様に、インシデントコマンダーがX分以内に戻るよう指示した場合、補佐にはその時間を測ることが期待されます。 57 | その時間に達したときはインシデントコマンダーに通知する必要があります。 58 | 59 | > インシデントコマンダー、[TEAM]の調査時間が経過していることをお知らせします。 60 | -------------------------------------------------------------------------------- /docs/training/glossary.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/definitions.png 3 | description: Ever wonder what all of those strange words you sometimes see in our documentation mean? This page is here to help. 4 | --- 5 | 6 | 私たちのドキュメントに登場する、奇妙な単語が何を意味するか気になりませんでしたか? 7 | このページで解説します。 8 | 9 | ### インシデントコマンダー(Incident Commander / IC) 10 | 11 | インシデントコマンダーは重大インシデントを解決に導く人です。 12 | 彼らは日々の業務に関係なく、インシデントの通話で最も強い権限を持ちます。 13 | インシデントコマンダーとしての決定は確定的です。 14 | [詳しい情報](../before/different_roles.md)。 15 | 16 | ### 補佐(Deputy) 17 | 18 | 通常はインシデントコマンダーのバックアップです。 19 | 補佐の仕事はインシデントコマンダーのサポートです。 20 | [詳しい情報](../before/different_roles.md)。 21 | 22 | ### 記録係(Scribe) 23 | 24 | 記録係の仕事は、通話中に実行された全てのアクティビティを記録し、Slackに書き込むことです。 25 | [詳しい情報](../before/different_roles.md)。 26 | 27 | ### 解決者(Resolver) 28 | 29 | インシデントの通話中、特定のシステム上での問題を解決の手助けをする人です。 30 | 内容領域専門家とも呼ばれます(次を参照)。 31 | [詳しい情報](../before/different_roles.md)。 32 | 33 | ### 内容領域専門家(Subject Matter Expert/SME) 34 | 特定のサービスの専門家や、インシデントコマンダーに情報を提供して、特定のシステムの解決のためのアクションを実行できます。 35 | [詳しい情報](../before/different_roles.md)。 36 | 37 | ### コマンドスタッフ(Command Staff) 38 | 39 | コマンドスタッフは、インシデントコマンダー、補佐、記録係から構成されます。 40 | 41 | ### CANレポート 42 | 43 | CANは「Conditions」「Actions」「Needs」を意味します。 44 | もしインシデントコマンダーがCANレポートを要求したら、サービスの現在の状態(Condition)、健康状態に戻すために必要な行動(Actions)、アクションを実行するために必要なもの(Needs)を提供します。 45 | 46 | ### 深刻度(Severity/Sev) 47 | 48 | インシデントがどれだけ深刻か表します。 49 | インシデントのSevは対応の種類を示します。 50 | 深刻度が高くなると、問題解決のためにリクスのあるアクションを実行できます。 51 | [詳しい情報](../before/different_roles.md)。 52 | 53 | ### 管理範囲(Span of Control) 54 | 55 | 直下の部下の人数を表します。 56 | たとえばインシデントコマンダーが通話中に10人の部下がいれば、管理範囲が大きいです。 57 | 生産性を維持できるように管理範囲は最小にすることを目指します。 58 | 59 | ### グレネードを投げる人(Grenade Thrower) 60 | 61 | ゲームの後半に通話に参加して、現在の考えからはずれた情報を提供する人です。 62 | 彼らは通常すぐに通話から抜けます。 63 | 64 | ### 経営陣 65 | 66 | 通話に経営陣が来ると、いくつかの爆弾を落とします。 67 | グレネードを投げる人の1人です。 68 | -------------------------------------------------------------------------------- /docs/training/internal_liaison.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/internal_liaison.png 3 | description: So you want to be an internal liaison? You've come to the right place! 4 | --- 5 | ![Internal Liaison](../assets/img/headers/internal_liaison.jpg) 6 | 7 | 内部連絡になりたいですか? 8 | あなたは正しい場所にたどり着けました! 9 | 10 | ## 目的 11 | 12 | 内部連絡の目的は、内部のステークホルダーに現在の状態を知らせ、ステークホルダーからのフィードバックをインシデントコマンダーに伝えることです。 13 | またインシデントコマンダーからの要求に応じて、インシデント発生中に追加の対応者を動員します。 14 | 15 | インシデントを対応している他のコマンドスタッフが、社内チームや連絡に気を揉むのではなく、目の前の問題に取り組むほうが重要です。 16 | 17 | 内部連絡の仕事は、通話を聞きインシデントのSlackルームを監視して、インシデントコマンダーからの指示に従います。 18 | インシデントコマンダーは、通話を通じてインシデントのステークホルダーに更新情報を伝えるよう指示します。 19 | また必要な追加の対応者をページするよう指示します。 20 | 21 | ## 前提条件 22 | 23 | 内部連絡になる前に、次のいくつかの基準を満たしている必要があります。 24 | その基準をまだ満たしていなくても心配しないでください。 25 | トレーニングを受けることができます! 26 | 27 | * 口頭および文面での**コミュニケーション能力** 28 | 29 | ## 責務 30 | 31 | [インシデントの異なる役割](/before/different_roles.md)を読んで、内部連絡には何が期待されて、他のやり取りする役割から期待されることを確認してください。 32 | 33 | ## トレーニングプロセス 34 | 35 | この役割に関する決まったトレーニングプロセスはありません。 36 | このページを読むことでほとんどのタスクに対応できます。 37 | 38 | ## インシデント通話手順と用語 39 | 40 | [内部連絡のためのステップ](/during/during_an_incident.md)に、インシデント発生中に何をすべきかが説明されています。 41 | 42 | 以下はインシデントの通話中に使うべきフレーズとパターンの例です。 43 | 44 | ### 対応者を把握しておく 45 | 46 | 通話中は、誰が喋っているかを把握しておく必要があります。 47 | 紙にメモをしても良いですし、 `!ic responders` コマンドで誰がいるか確認できます。 48 | インシデントコマンダーは特定のシステムのオンコールが誰か尋ねて、ページするためにそれに答える必要があります。 49 | 50 | > [X]の担当者はいますか? 51 | 52 | > (応答なし) 53 | 54 | > 応答がないですね。内部連絡、Xのオンコールをページしてください。 55 | 56 | 彼らを電話など適切な方法でページできます。 57 | 58 | ### 追加の対応者を動員する 59 | 60 | 通話中に、インシデントコマンダーは他の社内チームに連絡して、対応に加わるよういいます。 61 | 法務、マーケティング、経理などのチームが必要になる可能性があります。 62 | あなたはそれらのチームを呼び出せる準備が必要です。 63 | 64 | > インシデントコマンダー: 内部連絡、マーケティングチームをページして、通話に加わるよう言ってください。 65 | 66 | > 内部連絡: 承知しました。マーケティングチームをページします。 67 | 68 | ### 経営陣に更新情報を提供する 69 | 70 | SEV-1のインシデントが発生しているときは、経営陣向けの要約をSlackに更新情報を投稿します(大体30分ごとです)。 71 | 短く要点を絞って、 `@here` を使ってください。 72 | 現在の状態、実行中のアクション、顧客への影響、残り時間の見積もりについて説明します。 73 | それらの情報がわからなければ飛ばしても大丈夫です。 74 | 75 | > @here 現在XによってSEV-1です。現在はYをするアクションを実行中です。このアクション完了まで3分かかる予想です。 76 | > アクションが完了したら、5分以内にシステムは修正されるはずです。 77 | -------------------------------------------------------------------------------- /docs/training/overview.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/training_overview.png 3 | title: Training Overview 4 | description: PagerDutyの重大インシデント対応プロセスを学ぶことは、PagerDutyで効率的なオンコールエンジニアになるために重要なことです。このセクションでは、インシデント対応における様々な役割に対するトレーニング資料と、政府機関からの追加情報とトレーニング資料を紹介します。 5 | --- 6 | 7 | PagerDutyの重大インシデント対応プロセスを学ぶことは、PagerDutyで効率的なオンコールエンジニアになるために重要なことです。 8 | このセクションでは、インシデント対応における様々な役割に対するトレーニング資料と、政府機関からの追加情報とトレーニング資料を紹介します。 9 | 10 | ## トレーニングガイド 11 | 12 | トレーニングガイドはそれぞれの役割ごとに分けられていますが、その役割に属していなくても読むことをお勧めします。 13 | 重大インシデントで彼らがどのようなことをしているかを理解できます。 14 | 15 | * [インシデントコマンダーのトレーニング](/training/incident_commander.md) - インシデントコマンダーは重大インシデントを解決に導きます。彼らは他の人を指示する人です。 16 | * [補佐のトレーニング](/training/deputy.md) - 補佐はインシデントコマンダーをサポートしたり、必要に応じて作業を引き継ぎます。 17 | * [記録係のトレーニング](/training/scribe.md) - インシデント発生中に、記録係として担当する人を対象とします。 18 | * [内容領域専門家/解決者のトレーニング](/training/subject_matter_expert.md) - これはチームでオンコールを担当するPagerDutyの全ての人が対象となります。 19 | * [顧客連絡のトレーニング](/training/customer_liaison.md) - 外部に告知して顧客とやり取りする人を対象とします。 20 | * [内部連絡のトレーニング](/training/internal_liaison.md) - これはインシデント発生中に、社内のチームと協力する可能性がある全ての人に関係します。 21 | 22 | ## トレーニングコース 23 | 24 | 私たちは一部のトレーニングコースのスライドやビデオも公開しています。 25 | もともとはPagerDuty内部で使っていたものですが、より広く使えるようにしたので、あなたの組織にも利用できます。 26 | 27 | * [インシデント対応トレーニングコース](/training/courses/incident_response.md) - インシデント対応とインシデントコマンダーの役割に関する入門コース。 28 | 29 | ## インシデントの例 30 | 31 | この通話記録は、[2017年1月](https://status.pagerduty.com/incidents/510k1bnvwv6g)にPagerDutyで発生した重大インシデントを再現したものです。 32 | 簡略化とプライバシーの観点で詳細な部分は変更されていますが、それ以外の部分は当時のインシデントのままです。 33 | この記録の詳細については、[PagerDutyのブログ](https://www.pagerduty.com/blog/incident-response-reenactment/)に載っています。 34 | 35 | 36 | 37 | ## National Incident Management System : NIMS 38 | 39 | 私たちのインシデント対応プロセスは、ほぼ[National Incident Management System : NIMS](https://www.fema.gov/national-incident-management-system)に基づいています。 40 | 41 | _生命、財産、そして環境への影響を減らすために、政府機関、非政府機関、そして民間部門における、全てのレベルの部門や機関をシームレスに連携し、根本原因、規模、場所、複雑度など、全ての脅威や危険をもたらすインシデントを管理するための、体系的かつ危険予測するアプローチ。_ 42 | 43 | 最初はこれはITの運用環境には適用できないと思われていたが、これらの状況をもたらす重大インシデントからの学びで、私たちの業界にも直接適用できるということを学びました。 44 | 45 | [![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) 46 | 47 | もしNIMOについて詳しく知りたいのなら、[ICS-100](https://training.fema.gov/is/courseoverview.aspx?code=IS-100.b) と [ICS-700](https://training.fema.gov/is/courseoverview.aspx?code=IS-700.a) のオンライントレーニングを受けることをお勧めします。 48 | これらのコースではNIMSとインシデントコマンダーシステム(FEMAから認証を得るためにトレーニング後にオンライン試験があります)について学ぶことができます。 49 | またNIMSには[FEMAによる追加トレーニング資料](https://training.fema.gov/nims/)があるので、そちらもご覧ください。 50 | 51 | もしUSを拠点として、コミュニティ内でインシデント対応ロールを引き受ける場合には、[CERT(Community Emergency Response Teams)プログラム](https://www.fema.gov/community-emergency-response-teams)について調べることをお勧めします。 52 | 多くの都市がCERTトレーニングを実施しており、コミュニティ内でCERTコントリビューターとしてボランティアができます。 53 | 現実世界での災害対応を経験するだけでなく、そのスキルを日常生活で活かすこともできます。 54 | 55 | [追加情報](/resources/reading)もご覧ください。 56 | 57 | ## 世界のインシデント対応 58 | 59 | NIMSはUSのインシデント対応フレームワークですが、多くの国で独自のフレームワークがあります。 60 | 一部はUSのシステムを元にしてるものもありますが、ほとんどは独自のものが多いです。 61 | 世界各国で使われているメソッドとフレームワークを調査することで新たな学びもあります。 62 | 63 | 64 | "[Comparative Emergency Management: Understanding Disaster Policies, Organizations, and Initiatives from Around the World](https://training.fema.gov/hiedu/aemrc/booksdownload/compemmgmtbookproject/)"([FEMA website](https://training.fema.gov/hiedu/aemrc/)から入手可能)という本は、30カ国ほどで利用されているシステムを比較し、世界中で利用されている危機管理フレームワークについての情報が載っています。 65 | 66 | ここでは私たちPagerDuty内のプロセスに適合して改善するために調べたいくつかのシステムを紹介します。 67 | 68 | ### イギリス 69 | 70 | イギリスの危機管理システムは、[**Gold-Silver-Bronze Command Structure**](https://en.wikipedia.org/wiki/Gold%E2%80%93silver%E2%80%93bronze_command_structure)と呼ばれるコマンド階層を使います。 71 | このフレームワークは、戦略的(ゴールド)、戦術的(シルバー)、運用(ブロンズ)の、コマンドの決定をする責務3つのレベルが含まれます。 72 | 73 | 詳細については以下の資料をご覧ください。 74 | 75 | * [UK.GOV - Emergency Response and Recovery](https://www.gov.uk/guidance/emergency-response-and-recovery). 76 | * [UK.GOV - Incident Command - 3rd Edition (2008)](https://www.gov.uk/government/publications/fire-and-rescue-manual-volume-1-incident-command). 77 | * [UK Home Office - Critical Incident Management](https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/735103/critical-incident-management-v12.0ext.pdf) (PDF). 78 | 79 | 80 | ### ニュージーランド 81 | 82 | ニュージラーンドには[**Coordinated Incident Management System (CIMS)**](https://en.wikipedia.org/wiki/Coordinated_Incident_Management_System)と呼ばれるシステムがあり、USのインシデントコマンドシステム (Incident Command System : ICS) に基づいています。 83 | CIMSで特に私たちが気に入った部分は、一般的な用語に重点を置いていることで、インシデント発生中の混乱を防いで迅速かつ効率的な対応を可能にしています。 84 | いくつかの用語はICSから変更があります(たとえば"Command"ではなく"Control"にするなど)が、馴染み深いものです。 85 | 86 | 87 | 詳細については以下の資料をご覧ください。 88 | 89 | * [Ministry of Civil Defence & Emergency Management - New Zealand Coordinated Incident Management System (CIMS)](https://www.civildefence.govt.nz/resources/new-zealand-coordinated-incident-management-system-cims-2nd-edition/) ([PDF](https://www.civildefence.govt.nz/assets/Uploads/publications/CIMS-2nd-edition.pdf)). 90 | * [Devereux-Blum Training & Development - Emergency Management Training](https://www.emergencymanagement.co.nz/) 91 | 92 | ### オーストラリア 93 | 94 | オーストラリアの[**Australasian Inter-Service Incident Management System (AIIMS)**](https://en.wikipedia.org/wiki/Australasian_Inter-Service_Incident_Management_System)は、USのNIMSから派生したものです。 95 | ICSをベースにしているので、AIIMSは他のフレームワークよりも _管理範囲_ に重点を置いています。 96 | ニュージーランドのシステムのように、用語の使い方にいくつかの相違点があります(たとえば"Incident Commander"ではなく"Incident Controller"など)が、ICSを知っている人には馴染みがあります。 97 | 98 | 詳細については以下の資料をご覧ください。 99 | 100 | * [The Australasian Inter-Service Incident Management System, 3rd Edition](https://training.fema.gov/hiedu/docs/cem/comparative%20em%20-%20session%2021%20-%20handout%2021-1%20aiims%20manual.pdf) (PDF). 101 | * [Incident Management in Australia Handbook](https://knowledge.aidr.org.au/resources/handbook-14-incident-management-in-australia/) 102 | 103 | ### カナダ 104 | 105 | カナダでは独自の[**Incident Command System**](http://www.icscanada.ca/images/upload//ICS%20OPS%20Description2012.pdf)があります。 106 | この規格は[ICS Canada](http://www.icscanada.ca/en/home.html)と呼ばれる組織たちによって管理されておりいます。 107 | このウェブサイトにはカナダの州にごとに応じて、トレーニングコースを見つける方法が載っています。 108 | 109 | 詳細については以下の資料をご覧ください。 110 | 111 | 112 | * [ICSCanada - I-100 Introduction to Incident Command System](http://www.aema.alberta.ca/documents/studentreferencenote86439.pdf) (PDF). 113 | * [Canada ICS Forms](http://www.icscanada.ca/en/Forms.html) - _ダウンロードして各自のインシデントに利用できる標準ICSフォーム(同様のものが[FEMA](https://training.fema.gov/icsresource/icsforms.aspx)にもあります)_ 114 | -------------------------------------------------------------------------------- /docs/training/scribe.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/scribe.png 3 | description: 記録係になりたいですか?あなたは正しい場所にたどり着きました!記録係になるには、シニアメンバーである必要はありません。必要な知識があれば誰でもできます。 4 | --- 5 | ![Scribe](../assets/img/headers/fountain_pen.jpg) 6 | *Credit: [John-Mark Smith](https://www.pexels.com/photo/person-holding-fountain-pen-211291/)* 7 | 8 | 記録係になりたいですか? 9 | あなたは正しい場所にたどり着きました! 10 | 記録係になるには、シニアメンバーである必要はありません。 11 | 必要な知識があれば誰でもできます。 12 | 13 | ## 目的 14 | 15 | 記録係の目的は、インシデント発生中の重要なイベントの時系列を記録しておくことです。 16 | アクションを記録し、対応が必要なフォローアップを確認します。 17 | 18 | 他のメンバーは、手順の記録に気を配らず、目の前の問題に取り組むのが重要です。 19 | 20 | 記録係としての仕事は、Slackルームを監視し、背景と実行されたアクションを追跡し、これらをSlackに記録することです。 21 | **修正や、グラフの確認、ログの調査は行わないでください。** 22 | それらはインシデントコマンダーによって、内容領域専門家に委譲されます。 23 | 24 | ## 前提条件 25 | 26 | 記録係になるまえに、次の基準を満たしている必要があります。 27 | その基準をまだ満たしていなくても心配しないでください。 28 | トレーニングを受けることができます! 29 | 30 | * 口頭および文面での**コミュニケーション能力** 31 | 32 | ## 責務 33 | 34 | [インシデントの異なる役割](/before/different_roles.md)を読んで、記録係には何が期待されて、他のやり取りする役割から期待されることを確認してください。 35 | 36 | ## トレーニングプロセス 37 | 38 | この役割には決まったトレーニングプロセスはありません。 39 | このページを読むだけでほとんどのタスクを実行できます。 40 | トレーニングに必要なことを次に示します。 41 | 42 | * このページの残りの部分、とくにこれより下のセクションを参照してください。 43 | 44 | * [Failure Friday (FF)](https://www.pagerduty.com/blog/failure-friday-at-pagerduty/)に参加してください。 45 | 46 | * FFの障害をシャドウイングする 47 | * 複数のFFの記録係になる 48 | 49 | ## 記録する 50 | 51 | 記録とは科学と言うよりは芸術です。 52 | その目的は通話中に起こった重要なイベントを正確に記録することです。 53 | これにより、なにか起こったかをタイムラインから振り返ることができます。 54 | しかし厳密には何が重要か? 55 | これに対する正確な答えはなく、判断と経験により決まります。 56 | しかし記録係として、本当に書き留めておきたいことがいくつかあります。 57 | 58 | * 投票の結果 59 | * 「9人が賛成、3人が反対」 60 | * 「ローリングリスタートをすべきか投票され、ユーザーAがリスタートをしている」 61 | 62 | * 「...すべき」「なぜしないか」などのフォローアップ項目 63 | * 「なぜサポート担当者が通話にいなかったか?」 64 | * 「TODO: なぜもっと早くページできなかったか?」 65 | 66 | ## インシデント通話手順と用語 67 | 68 | [記録係のためのステップ](/during/during_an_incident.md)に、インシデントに何をすべきかが説明されています。 69 | 70 | 以下はインシデントの通話中に使うべきフレーズとパターンの例です。 71 | 72 | ### ステータスの追従 73 | 74 | 75 | インシデントの通話の始まりに、ステータスを自動更新するBOTをスタートします。 76 | BOTは更新情報を自動で投稿します。 77 | 78 | > !status stalk 79 | 80 | これにより自動で情報が更新され、インシデントコマンダーが問い合わせなくても状態を確認できます。 81 | 82 | ### 重要なアクションを書き留める 83 | 84 | 通話中は多くの議論が聞こえますが、チャットルームに全てを記録しなくてもよいです。 85 | 最終的なタイムラインで重要になるものだけ記録すれば良いです。 86 | これが何かは明白ではなく、判断の問題であることが多いです。 87 | 通常はインシデントコマンダーが誰かに要求したアクションや、意思決定の投票結果などでよいです。 88 | 89 | > ローリングリスタートすべきかどうか投票しました。再起動することが決まり、USER_Aが実行します。 90 | 91 | いくつかのアクションはそのときは大事に思えても、終わってからはそうでないことがあります。 92 | これでよいのです。 93 | 十分な情報が無いよりも、多い情報があることが重要です。 94 | でもやりすぎないでください。 95 | 96 | ### フォローアップアクションを書き留める 97 | 98 | ときどき通話中に、誰かが「修正すべき」と言及したり、インシデントコマンダーがフォローアップ事項を要求することがあります。 99 | これをSlack上でするには「TODO」というプレフィックスを付けるだけです。 100 | これにより後から検索しやすくなります。 101 | 102 | > TODO: クラスターXのトラフィック現状でページされなかったのはなぜか? 103 | 104 | ポストモーテムのオーナーはこれを後から見つけることができ、タスク化することができます。 105 | 106 | ### 通話の終了のお知らせ 107 | 108 | インシデントコマンダーが通話を終了させると、通話が終了したことと、他の場所で継続議論することをお知らせします。 109 | 110 | > 通話は終わりました。みなさんありがとうございます。Slackでフォローアップします。 111 | 112 | ステータスの追従も止めることを忘れないでください。 113 | 114 | > !status unstalk 115 | -------------------------------------------------------------------------------- /docs/training/subject_matter_expert.md: -------------------------------------------------------------------------------- 1 | --- 2 | cover: assets/img/covers/sme.png 3 | description: もしあなたがPagerDutyのオンコールをするのなら、サービスの内容領域専門家(Subject Matter Expert)として、重大インシデント発生時にページされて対応されることが期待されます。このページには、その責務のために準備すべきことを紹介します。 4 | --- 5 | ![Incident Response](../assets/img/headers/incident_response.jpg) 6 | *Credit: [oregondot @ Flickr](https://www.flickr.com/photos/oregondot/8743809853/in/album-72157633494644719/)* 7 | 8 | もしあなたがPagerDutyのオンコールをするのなら、サービスの内容領域専門家(Subject Matter Expert)として、重大インシデント発生時にページされて対応されることが期待されます。 9 | このページには、その責務のために準備すべきことを紹介します。 10 | インシデントコマンダーに興味がある場合は、[インシデントコマンダーのトレーニング](/training/incident_commander.md)を参照ください。 11 | 12 | ## オンコールでの期待 13 | 14 | もしあなたがチームのオンコールなら、オンコールで期待されることがあります。 15 | これはプライマリとセカンダリのオンコール両方に当てはまります。 16 | システムのSEV-5やSEV-4でページされるのと、重大なSEV-2でページされるのでは、期待されることは異なります。 17 | 18 | ### オンコールを始める前に 19 | 20 | 1. インシデント対応ポリシーと手順をよく理解してください。 21 | 1. [インシデントの異なる役割](/before/different_roles.md) - あなたは「解決者」または「内容領域専門家」として行動します。しかし他の役割についてもよく理解する必要があります。 22 | 1. [インシデント通話のエチケット](/before/call_etiquette.md) - インシデント通話中にどのように振る舞うか。 23 | 1. [インシデント発生中](/during/during_an_incident.md) - インシデント発生中に何をすべきか。あなたは「解決者」ですが、ドキュメント全体をよく理解しておく必要があります。 24 | 1. [用語集](/training/glossary.md) - 通話中に使われる用語集を理解する必要があります。 25 | 1. アラートの手段が設定されてるか確認します。PagerDutyは["Do Not Disturb"を回避](https://support.pagerduty.com/docs/notification-phone-numbers)できます。 26 | 1. インシデントの通話に参加できるか確認します。ブラウザープラグインが必要になるかも知れません。ページされた瞬間にはやりたくないです。 27 | 1. オンコールの期間に気をつけ、旅行、休暇、予定などのにあわせてシフトを調整します。 28 | 1. もしあなたがインシデントコマンダーなら、同じ時間に通常のオンコールとインシデントコマンダーのオンコールが重複してないことを確認してください。 29 | 30 | 31 | ### オンコール中 32 | 33 | 1. オンコール期間中は常に、ラップトップを携帯しインターネットに繋がるようにしてください(オフィス、家庭、MiFi、テザリング可能な電話など)。 34 | 1. もし大事な予定がある場合は、その時間はチームの他の誰かと変わってもらうようお願いする必要があります。 35 | 1. 重大インシデントのアラートをうけとったときは、インシデントの通話とSlackにできるだけ早く(数分以内に)参加する必要があります。 36 | 1. インシデントコマンダーから質問またはアクションが与えられます。質問には簡潔に答え、与えられた全てのアクションに従います(それらに同意しない場合でも)。 37 | 38 | ## 対応動員 39 | 40 | インシデントが発生したとき、インシデント対応の一部として動員または割り当てられます。 41 | 言い換えれば、ページによってインシデントに動員するか、インシデントで誰かに直接要求されるまでは、通常の役割です。 42 | 動員された後は、まず最初に参加処理をして割り当てを受け取ることです。 43 | インシデントの発生が気になって、インシデント対応に乱入してしまうと、インシデントの管理がうまくいかない可能性があります。 44 | 45 | ## エスカレーションをためらわない 46 | 47 | もし何らかについて確信が持てない場合は、チームからシステムをより知っている他の内容領域専門家を頼ることができます。 48 | 追加の手助けを求めてはいけないと思ってはいけません。 49 | 私たちのモットーは「エスカレーションをためらわない」です。 50 | 対応の仕方がわからずにエスカレーションしても、あなたは決して見下されることはありません。 51 | 52 | ## 誰も責めない 53 | 54 | インシデントはありえます。 55 | いくつかはあなたによって引き起こされ、いくつかは別の誰かによって引き起こされます。 56 | 私たちのインシデント対応プロセスは、全体を通して誰も責めません。 57 | 他人を責めることは逆効果で、目の前の問題から目をそらしてしまいます。 58 | インシデントがどのようにして起こったかに関わらず、可能な限り早くインシデントを解決する必要があります。 59 | 60 | ## 戦時と平時 61 | 62 | 重大インシデント発生時の振る舞いは、アラートを受け取ったときは異なります。 63 | 私たちはこれを、重大インシデントの「戦時」とよび、通常業務の「平時」と明確に区別します。 64 | 65 | ### 平時 66 | 67 | 組織構造は、通常年功序列に基づきます。 68 | チームのシニアメンバーが議論を主導し、マネージャーやチームリーダーが最終決定権を持ちます。 69 | 意思決定は全ての選択肢を慎重に議論したあとで行われ、顧客への潜在的リスクを最小限に抑えます。 70 | 71 | ### 戦時 72 | 73 | 戦時は異なります。 74 | 重大インシデントの通話では、組織構造が異なるということに気付くでしょう。 75 | 76 | * インシデントコマンダーが担当します。平時の階級などには関係なく、通話中は最も地位が高い人です。CEOより高くなります。 77 | * 一次対応者(チーム/サービスの第一オンコールとして行動する人)は。そのサービスに対する最も地位が高い人です。 78 | * 考慮事項が挙げられたあと、インシデントコマンダーが意思決定できます。意思決定がなされると、それが最終決定となります。 79 | * たとえば、インシデントコマンダーは他の顧客のデータを保護するために、特定の顧客のイベントをドロップします。 80 | * インシデントコマンダーは合意した意思決定事項を覆す事ができます。たとえば投票結果で9/10が賛成して1人が反対した場合でも、インシデントコマンダーは過半数の投票結果に関わらず、反対することができます。 81 | * インシデントコマンダーは、無礼な言語や振る舞いをすることがあります。今は戦時中で、問題を解決するために時々無礼な行いをします。これは個人的なことではありません。もし今まで戦時の経験をしてないのなら、経験して心構えする必要があります。 82 | * インシデントコマンダーから通話から出るように言われるか、強制的に退出されることがあります。有益な情報提供がないと感じられたとき、インシデントコマンダーの裁量によって退出させられます。繰り返しになりますが、これは個人的なことではなく、戦時は平時とは異なるということを覚えておく必要があります。 83 | -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- 1 | # Project Information 2 | site_name: PagerDuty Incident Response Documentation 3 | site_description: これはPagerDutyのインシデント対応プロセスに関するドキュメントです。オンコールを始める新入社員のためだけではなく、重大インシデントに対する事前と事後の処理についても解説します。 4 | site_author: PagerDuty, Inc. 5 | site_favicon: 'assets/img/favicon.png' 6 | site_url: https://ueokande.github.io/incident-response-docs-ja/ 7 | 8 | # Repository 9 | repo_url: https://github.com/ueokande/incident-response-docs-ja/ 10 | 11 | # Copyright 12 | copyright: 'Copyright © PagerDuty, Inc.' 13 | 14 | # Theme 15 | theme: 'material' 16 | theme_dir: 'theme' 17 | extra_css: ['assets/css/pagerduty.css','assets/css/custom.css'] 18 | extra_javascript: ['js/github_forks.js'] 19 | extra: 20 | favicon: 'assets/img/favicon.png' 21 | logo: 'assets/img/icon.png' 22 | cover: 'assets/img/covers/default.png' 23 | palette: 24 | primary: 'green' 25 | accent: 'blue grey' 26 | author: 27 | github: 'PagerDuty' 28 | twitter: 'PagerDuty' 29 | 30 | # Contents 31 | pages: 32 | - Home: 'index.md' 33 | - はじめに: 'getting_started.md' 34 | - オンコール: 35 | - オンコールを始める: 'oncall/being_oncall.md' 36 | - 誰がオンコールになるか: 'oncall/whos_oncall.md' 37 | - アラートの原則: 'oncall/alerting_principles.md' 38 | - インシデントの前に: 39 | - インシデントとはなにか?: 'before/what_is_an_incident.md' 40 | - 深刻度レベル: 'before/severity_levels.md' 41 | - 異なる役割: 'before/different_roles.md' 42 | - 通話中のエチケット: 'before/call_etiquette.md' 43 | - 複雑なインシデント: 'before/complex_incidents.md' 44 | - インシデント発生中: 45 | - インシデント発生中: 'during/during_an_incident.md' 46 | - セキュリティインシデント: 'during/security_incident_response.md' 47 | - インシデント収束後: 48 | - インシデント収束後: 'after/after_an_incident.md' 49 | - ポストモーテムプロセス: 'after/post_mortem_process.md' 50 | - ポストモーテムテンプレート: 'after/post_mortem_template.md' 51 | - 効果的なポストモーテム: 'after/effective_post_mortems.md' 52 | - トレーニング: 53 | - 概要: 'training/overview.md' 54 | - インシデントコマンダー: 'training/incident_commander.md' 55 | - 補佐: 'training/deputy.md' 56 | - 記録係: 'training/scribe.md' 57 | - 内容領域専門家: 'training/subject_matter_expert.md' 58 | - 顧客連絡: 'training/customer_liaison.md' 59 | - 内部連絡: 'training/internal_liaison.md' 60 | - 用語集: 'training/glossary.md' 61 | - トレーニングコース: 62 | - インシデント対応: 'training/courses/incident_response.md' 63 | - 追加資料: 64 | - 読み物: 'resources/reading.md' 65 | - ChatOps: 'resources/chatops.md' 66 | - アンチパターン: 'resources/anti_patterns.md' 67 | - このドキュメントについて: 'about.md' 68 | 69 | # Extensions 70 | markdown_extensions: 71 | - toc: 72 | permalink: '#' 73 | - sane_lists: 74 | - admonition: 75 | - meta: 76 | - pymdownx.details: 77 | - pymdownx.extra: 78 | - pymdownx.mark: 79 | - pymdownx.tilde: 80 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | mkdocs-bootswatch==0.1.0 2 | mkdocs-bootstrap==0.1.1 3 | mkdocs==0.15.3 4 | mkdocs-material==0.2.4 5 | pymdown-extensions==6.2.1 6 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/screenshot.png -------------------------------------------------------------------------------- /theme/404.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {# mkdocs-material doesn't use content as a block, so cheating and using footer here, as that does use a block #} 4 | {% block footer %} 5 | 6 |
7 |

Sorry! We couldn't find that page.

8 |

Looks like our well-trained server monkeys dropped the ball. Rest assured they will be dealt with. In the meantime, you probably want to head home. 9 |

10 | 11 |
12 | {% include "footer.html" %} 13 |
14 | 15 | {% endblock %} 16 | -------------------------------------------------------------------------------- /theme/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | {% set title = page_title ~ ' - ' ~ site_name if page_title else site_name %} 10 | {% if meta and meta.title %}{% set title = meta.title[0] ~ ' - ' ~ site_name %}{% endif %} 11 | {{ title }} 12 | 13 | 14 | {% if site_author %}{% endif %} 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | {% if canonical_url %}{% endif %} 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | {% for path in extra_css %} 56 | 57 | {% endfor %} 58 | {% if meta and meta.style %} 59 | 60 | {% endif %} 61 | 62 | 63 | 64 | {% block extrahead %}{% endblock %} 65 | 66 | {% set palette = config.extra.get("palette", {}) %} 67 | {% set primary = palette.primary | replace(' ', '-') | lower %} 68 | {% set accent = palette.accent | replace(' ', '-') | lower %} 69 | 70 | {% if repo_name == "GitHub" and repo_url %} 71 | {% set repo_id = repo_url | replace("https://github.com/", "") %} 72 | {% if repo_id[-1:] == "/" %} 73 | {% set repo_id = repo_id[:-1] %} 74 | {% endif %} 75 | {% endif %} 76 |
77 |
78 |
79 | 80 | 81 | 82 |
83 | {% include "header.html" %} 84 |
85 |
86 | {% set h1 = "\x3ch1 id=" in content %} 87 |
88 | {% include "drawer.html" %} 89 |
90 |
91 |
92 | {% if not h1 %} 93 |

{{ page_title | default(site_name, true)}}

94 | {% endif %} 95 | {% if meta and meta.pdf %} 96 | 101 | {% endif %} 102 | {{ content }} 103 | 115 | {% block footer %} 116 |
117 | {% include "footer.html" %} 118 |
119 | {% endblock %} 120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 | 135 | 136 | {% for path in extra_javascript %} 137 | 138 | {% endfor %} 139 | {% if meta and meta.style and meta.style[0] == "slides" %} 140 | 141 | 142 | {% endif %} 143 | {% if google_analytics %} 144 | 174 | {% endif %} 175 | 176 | 177 | -------------------------------------------------------------------------------- /theme/drawer.html: -------------------------------------------------------------------------------- 1 | 56 | -------------------------------------------------------------------------------- /theme/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/favicon.ico -------------------------------------------------------------------------------- /theme/fonts/colfax/ColfaxWebLight.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/colfax/ColfaxWebLight.eot -------------------------------------------------------------------------------- /theme/fonts/colfax/ColfaxWebLight.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/colfax/ColfaxWebLight.woff -------------------------------------------------------------------------------- /theme/fonts/colfax/ColfaxWebLightItalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/colfax/ColfaxWebLightItalic.eot -------------------------------------------------------------------------------- /theme/fonts/colfax/ColfaxWebLightItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/colfax/ColfaxWebLightItalic.woff -------------------------------------------------------------------------------- /theme/fonts/colfax/ColfaxWebMedium.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/colfax/ColfaxWebMedium.eot -------------------------------------------------------------------------------- /theme/fonts/colfax/ColfaxWebMedium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/colfax/ColfaxWebMedium.woff -------------------------------------------------------------------------------- /theme/fonts/colfax/ColfaxWebMediumItalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/colfax/ColfaxWebMediumItalic.eot -------------------------------------------------------------------------------- /theme/fonts/colfax/ColfaxWebMediumItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/colfax/ColfaxWebMediumItalic.woff -------------------------------------------------------------------------------- /theme/fonts/colfax/ColfaxWebRegular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/colfax/ColfaxWebRegular.eot -------------------------------------------------------------------------------- /theme/fonts/colfax/ColfaxWebRegular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/colfax/ColfaxWebRegular.woff -------------------------------------------------------------------------------- /theme/fonts/colfax/ColfaxWebRegularItalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/colfax/ColfaxWebRegularItalic.eot -------------------------------------------------------------------------------- /theme/fonts/colfax/ColfaxWebRegularItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/colfax/ColfaxWebRegularItalic.woff -------------------------------------------------------------------------------- /theme/fonts/icons/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/icons/icons.eot -------------------------------------------------------------------------------- /theme/fonts/icons/icons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by IcoMoon 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /theme/fonts/icons/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/icons/icons.ttf -------------------------------------------------------------------------------- /theme/fonts/icons/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/icons/icons.woff -------------------------------------------------------------------------------- /theme/fonts/icons/loading.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/icons/loading.eot -------------------------------------------------------------------------------- /theme/fonts/icons/loading.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by IcoMoon 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /theme/fonts/icons/loading.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/icons/loading.ttf -------------------------------------------------------------------------------- /theme/fonts/icons/loading.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/icons/loading.woff -------------------------------------------------------------------------------- /theme/fonts/icons/pagerduty.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/icons/pagerduty.eot -------------------------------------------------------------------------------- /theme/fonts/icons/pagerduty.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /theme/fonts/icons/pagerduty.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/icons/pagerduty.ttf -------------------------------------------------------------------------------- /theme/fonts/icons/pagerduty.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ueokande/incident-response-docs-ja/74d1de046c254d9a6e2fa1599d8d2b8c831b2d8c/theme/fonts/icons/pagerduty.woff -------------------------------------------------------------------------------- /theme/header.html: -------------------------------------------------------------------------------- 1 | 67 | -------------------------------------------------------------------------------- /theme/js/github_forks.js: -------------------------------------------------------------------------------- 1 | pegasus('https://api.github.com/repos/' + repo_id).then( 2 | /* Request successful, we got the stars */ 3 | function(data, xhr) 4 | { 5 | var count = data.forks_count; 6 | if (count > 10000) 7 | count = (count / 1000).toFixed(0) + 'k'; 8 | else if (count > 1000) 9 | count = (count / 1000).toFixed(1) + 'k'; 10 | 11 | /* Set number of forks */ 12 | var forks = document.querySelector('.repo-forks .count'); 13 | forks.innerHTML = count; 14 | }, 15 | 16 | /* Handle error */ 17 | function(data, xhr) 18 | { 19 | console.error(data, xhr.status); 20 | } 21 | ); 22 | -------------------------------------------------------------------------------- /theme/robots.txt: -------------------------------------------------------------------------------- 1 | # Allow everything 2 | User-agent: * 3 | Disallow: 4 | --------------------------------------------------------------------------------