实时事件响应和报告工具
django-incident-response的Python项目详细描述
响应
处理事件可能会有压力。除了处理手头的问题外,响应者通常还负责处理通信、协调其他工程师的工作,并报告事后发生的事情。monzo构建了response,以帮助减轻工程师在事故期间的压力和认知负担,并使创建信息丰富的报告更容易供其他人学习。
宣布事件时的标题文章
如果您对我们如何在monzo使用这个工具感兴趣,可以在this video中进行概述。
试试看
response是一个django应用程序,您可以将其包含在项目中。如果您只是想尝试一下,请按照demo app的说明操作!
为自己的项目添加响应
Start a new Django project,如果您还没有:
$ django-admin startproject myincidentresponse
安装响应:
$ pip install django-incident-response
在settings.py
中,将这些行添加到INSTALLED_APPS
:
INSTALLED_APPS = [
...
"after_response",
"rest_framework",
"bootstrap4",
"response.apps.ResponseConfig",
]
在settings.py
中添加以下内容:
USE_TZ = False # if this exists elsewhere in your settings.py, just update the value
STATIC_ROOT = "static"
# Django Rest Framework
REST_FRAMEWORK = {
"PAGE_SIZE": 100,
"DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.LimitOffsetPagination",
"DEFAULT_PERMISSION_CLASSES": ["rest_framework.permissions.IsAuthenticated"],
}
#
# Markdown Filter
MARKDOWN_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",
]
在urls.py
中,将以下内容添加到urlpatterns
(您可能还需要导入include
):
urlpatterns = [
...
path('slack/', include('response.slack.urls')),
path('core/', include('response.core.urls')),
path('', include('response.ui.urls')),
]
使用slack完成设置和配置
一。创建松弛应用程序
导航到https://api.slack.com/apps,然后单击
Create New App
。给它起个名字,例如“response”,然后选择相关的工作区。
在OAuth和权限页中,向下滚动到范围。
添加以下作用域:
channels:history
channels:read
channels:write
reactions:write
chat:write:bot
chat:write:user
users:read
页面顶部的
Install App to Workspace
按钮现在可用。点击它!
2.更新您的settings.py
基本站点地址(SITE_URL
)
响应需要知道它在哪里运行,以便在slack中创建到ui的链接。当在本地运行时,您可能希望此集类似于http://localhost:8000
。
OAuth访问令牌(SLACK_TOKEN
)
响应需要OAuth访问令牌才能使用slack API。
- 从slack应用程序的oauth&permissions部分复制启动
xoxp-...
的令牌,并使用它设置SLACK_TOKEN
变量。
注意:由于我们使用的一些api命令需要一个user令牌,因此我们只需要以xoxp-...
开头的令牌。如果/当slack允许这些操作由bot控制时,我们可以使用bot标记,从xoxb-...
开始。
签名密钥(SLACK_SIGNING_SECRET
)
响应使用松弛签名密钥来限制对公共终结点的访问。
- 从“基本信息”页复制签名密钥,并使用它设置
SIGNING SECRET
变量。
入射通道和id(INCIDENT_CHANNEL_NAME
,INCIDENT_CHANNEL_ID
)
当一个事件被宣布,一个“标题”的帖子被发送到一个中央频道。
有关如何从Slack API获取事件通道ID的示例,请参见演示应用程序。
bot名称和id(INCIDENT_BOT_NAME
,INCIDENT_BOT_ID
)
我们想邀请机器人加入所有事件频道,因此需要知道其ID。
三。运行服务器
在完成Slack应用程序安装之前,您需要将应用程序运行到可访问Internet的某个位置。这意味着要么在某处部署django项目(请参见here),要么在本地运行它,并使用类似ngrok的内容进行公开。
为了简单起见,我们假设您正在使用ngrok进行开发。
首先确保您的数据库已完全迁移并处于最新状态:
python3 manage.py migrate
接下来,运行django开发服务器:
python3 manage.py runserver 0.0.0.0:8000
最后,运行ngrok:
ngrok http 8000
请记下ngrok url,因为您将在下一节中需要它作为public-url
。
四。完成Slack应用程序设置
返回Slack Web UI并完成配置你的应用程序的n,如described here。
5个。测试它在工作!
在slack中,使用/incident Something's happened
启动事件。你应该在你的事件频道看到一个帖子!
- 通过单击“文档”链接访问事件文档。
- 单击按钮创建通信频道。
- 在comms通道中,检查
@incident
命令。您可以通过输入@incident help
找到可用的。