实时事件响应和报告工具

django-incident-response的Python项目详细描述


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

响应

处理事件可能会有压力。除了处理手头的问题外,响应者通常还负责处理通信、协调其他工程师的工作,并报告事后发生的事情。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_NAMEINCIDENT_CHANNEL_ID

当一个事件被宣布,一个“标题”的帖子被发送到一个中央频道。

有关如何从Slack API获取事件通道ID的示例,请参见演示应用程序。

bot名称和id(INCIDENT_BOT_NAMEINCIDENT_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找到可用的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java简明流语法处理用户输入   GoogleAppEngine Java中的计划电子邮件   java JDK目录未设置或无效(unity)?   java CountDownLatch会导致JFrame(JButtons等)中的内容消失,只有当鼠标悬停时才会返回   java如何将日期发送到游标?   在Java中执行groovy文件   与Oracle和Postgres兼容的java Spring数据类jpa查询   Google App Engine中的java“平台方法缺失”和“NoSuchMethod”错误   java无法到达请求映射端点,因此我收到404错误   mysql mysqldump在java中不起作用   java在spring mvc中如何将节点对象注入服务类?   尝试使用Java连接到mySQL服务器(工作台)时出错   JavaFX和MVP,对象在不应该被垃圾收集的时候被垃圾收集   java检查出生日期是否在3个整数中有效(mm/dd/yyyy)