Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Monzo's real-time incident response and reporting tool ⚡️

License

NotificationsYou must be signed in to change notification settings

monzo/response

Repository files navigation

PyPIPyPI - Python VersionPyPI - Django VersionTravis (.org)GitHub

Response ⚡

Dealing with incidents can be stressful. On top of dealing with the issue at hand, responders are often responsible for handling comms, coordinating the efforts of other engineers, and reporting what happened after the fact. Monzo built Response to help reduce the pressure and cognitive burden on engineers during an incident, and to make it easy to create information rich reports for others to learn from.


The headline post when an incident is declared

If you're interested in how we use this tool at Monzo, there's an overview inthis video.


Try it out

Response is a Django app which you can include in your project. If you're just looking to give it a try, follow the instuctions for thedemo app!


Adding Response to your own project

Start a new Django project, if you don't have one already:

$ django-admin startproject myincidentresponse

Install response:

$ pip install django-incident-response

Insettings.py, add these lines toINSTALLED_APPS:

INSTALLED_APPS= [    ..."after_response","rest_framework","bootstrap4","response.apps.ResponseConfig",]

Add the following tosettings.py:

USE_TZ=False# if this exists elsewhere in your settings.py, just update the valueSTATIC_ROOT="static"# Django Rest FrameworkREST_FRAMEWORK= {"PAGE_SIZE":100,"DEFAULT_PAGINATION_CLASS":"rest_framework.pagination.LimitOffsetPagination","DEFAULT_PERMISSION_CLASSES": ["rest_framework.permissions.IsAuthenticated",    ],}## Markdown FilterMARKDOWN_FILTER_WHITELIST_TAGS= ["a","p","code","h1","h2","ul","li","strong","em","img",]MARKDOWN_FILTER_WHITELIST_ATTRIBUTES= ["src","style"]MARKDOWN_FILTER_WHITELIST_STYLES= ["width","height","border-color","background-color","white-space","vertical-align","text-align","border-style","border-width","float","margin","margin-bottom","margin-left","margin-right","margin-top",]RESPONSE_LOGIN_REQUIRED=True

Inurls.py, add the following tourlpatterns (you may also need to importinclude):

urlpatterns= [    ...path('slack/',include('response.slack.urls')),path('core/',include('response.core.urls')),path('',include('response.ui.urls')),]

Completing the setup and config with Slack

1. Create a Slack App

Followthese instructions to create a new Slack App.

2. Update yoursettings.py

Environment VariableDescriptions
SLACK_TOKENResponse needs an OAuth access token to use the Slack API.

Copy the Bot Token that startsxoxb-... from the OAuth & Permissions section of your Slack App and use it to set theSLACK_TOKEN variable.
SITE_URLResponse needs to know where it is running in order to create links to the UI in Slack. Whilst running locally, you might want this set to something likehttp://localhost:8000.
SLACK_SIGNING_SECRETResponse uses the Slack signing secret to restrict access to public endpoints.

Copy the Signing secret from the Basic Information page and use it to set theSIGNING SECRET variable.
INCIDENT_CHANNEL_IDWhen an incident is declared, a 'headline' post is sent to a central channel.

See thedemo app settings for an example of how to get the incident channel ID from the Slack API.
INCIDENT_BOT_IDWe want to invite the Bot to all Incident Channels, so need to know its ID.

See thedemo app settings for an example of how to get the bot ID from the Slack API.
SLACK_CLIENTResponse needs a shared global instance of a Slack Client to talk to the Slack API. Typically this does not require any additional configuration.
from response.slack.client import SlackClient
SLACK_CLIENT = SlackClient(SLACK_TOKEN)

3. Running the server

Before you can complete the Slack app setup, you need to have the app running somewhere that's accesible to to the internet. That means either deploying your Django project somewhere (seehere or running it locally and exposing with something likengrok.

For simplicity, we'll assume you're developing using ngrok.

First make sure your DB is fully migrated and up-to-date:

python3 manage.py migrate

Next, run the Django development server:

python3 manage.py runserver 0.0.0.0:8000

Finally, run ngrok:

ngrok http 8000

Make note of the ngrok url as you'll need it in the following section as thepublic-url.

4. Complete the Slack App Setup

Head back to the Slack web UI and complete the configuration of your app, asdescribed here.

5. Test it's working!

In Slack, start an incident with/incident Something's happened. You should see a post in your incidents channel!

  • Visit the incident doc by clicking the Doc link.
  • Create a comms channel by clicking the button.
  • In the comms channel check out the@incident commands. You can find the ones available by entering@incident help.

About

Monzo's real-time incident response and reporting tool ⚡️

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors26


[8]ページ先頭

©2009-2026 Movatter.jp