KKMonitor

设置 Slack

为您的自托管 KMonitor 实例设置 Slack 集成。使用 OAuth、斜线命令和崩溃警报事件以及查询代理配置 Slack 应用程序。

使用本指南设置 Slack 集成,以便在 Slack 上接收 KMonitor 警报通知,并向 KMonitor 查询代理询问来自 Slack 的问题。

为新安装配置 Slack 设置

  1. Slack 应用程序。按照官方说明创建一个 Slack 应用Slack指南。您可以为您的应用程序选择任何名称、徽标和描述。

  2. 基本信息。前往Basic Information部分并复制客户端 ID、客户端密钥和签名密钥并将它们粘贴到提示中。 (如果您要升级现有的 KMonitor 安装,您需要将这些变量粘贴到您的环境变量文件中。请参阅下面有关现有用户的部分)

  3. OAuth 和权限。前往OAuth & Permissions您的应用程序部分及其下Redirect URLs,添加您的 KMonitor Slack 身份验证回调 URL。这应该是这样的https://[measure.yourcompany.com]/auth/callback/slack。代替[measure.yourcompany.com]与您实际的 KMonitor 仪表板域。

  4. 在同一个OAuth & Permissions您的应用程序部分,在Scopes,请求以下权限:

    • 应用程序提及:已读
    • 助理:写
    • 聊天:写
    • 聊天:write.public
    • 频道:阅读
    • 频道:历史
    • 小组:阅读
    • 组:历史
    • 我:历史
    • 我:写
    • 命令
    • 文件:写入
    • 链接:阅读
    • 链接:写
    • 反应:读
    • 反应:写
    • 用户:阅读
    • 用户:read.email

以下步骤需要Measure API 域而不是 KMonitor 仪表板域。

如果此 URL 不正确,您将得到dispatch_failure将您的 KMonitor 团队连接到您的 Slack 工作区时出错。

假设您的 API 域名类似于measure-api.yourcompany.com,你应该输入https://[measure-api.yourcompany.com]/slack/events在下面的步骤中。

代替[measure-api.yourcompany.com]与您的实际 Measure API 域名。

  1. 活动订阅。前往Event Subscriptions部分,启用事件并将请求 URL 设置为https://[measure-api.yourcompany.com]/slack/events。 Slack 会立即验证 URL,因此您的 Measure API 服务在您保存时必须可访问。然后,在Subscribe to bot events, 添加:

    • 应用提及— 在频道中@提及机器人提出的问题
    • 应用程序主页打开— 当用户打开 DM 时,让机器人用建议的提示向用户打招呼
    • 消息通道- 公共频道线程中的后续消息,因此对话可以继续而无需重新提及机器人
    • 消息组— 私人频道也一样
    • 消息.im— 机器人的 DM 中提出的问题
  2. Agent。前往应用设置中的 Agent 部分并启用它(新的 Slack 应用默认使用 Slack 的 agent messaging experience)。这会为 KMonitor 应用提供一个直接消息界面,用户除了在频道中 @提及它之外,还可以在其中与 Agent 对话。

  3. 斜线命令。前往Slash Commands部分。创建命令如下:

命令请求 URL简短描述
/subscribe-alertshttps://[measure-api.yourcompany.com]/slack/events注册当前频道以接收警报通知
/stop-alertshttps://[measure-api.yourcompany.com]/slack/events停止当前频道接收警报通知
/list-alert-channelshttps://[measure-api.yourcompany.com]/slack/events列出当前注册接收警报通知的通道

代替[measure-api.yourcompany.com]在每个请求 URL 中使用您的实际 Measure API 域。

为现有安装配置 Slack 设置

如果您已在早期版本的 KMonitor 上设置了 Slack 集成,则您的 Slack 应用早于查询代理,并且缺少代理所需的范围、事件订阅和设置。更新您现有的 Slack 应用,如果您从 v0.8.2 或更低版本升级,请更新您的环境变量,如下所述。

Slack 无法将事件和 OAuth 回调发送到本地开发环境。为了在本地开发或测试 Slack 集成,您需要使用隧道服务,例如 ngrokCloudflare Tunnel,并使用代理到本地主机的 URL。

查看这份指南了解更多信息。

更新您的 Slack 应用

  1. 新范围。打开您现有的 Slack 应用:api.slack.com/apps,转到OAuth & Permissions部分,并在Scopes,添加以下权限,同时保留您已有的权限:

    • 应用程序提及:已读
    • 助理:写
    • 聊天:write.public
    • 频道:历史
    • 组:历史
    • 我:历史
    • 我:写
    • 文件:写入
    • 链接:阅读
    • 链接:写
    • 反应:读
    • 反应:写
    • 用户:阅读
    • 用户:read.email

    您的应用程序现在应该具有第 4 步中列出的全套范围新安装指南多于。

  2. 活动订阅。对于仅警报安装,此部分不存在,因此您是第一次添加它。按照第 5 步操作新安装指南要启用事件,请设置请求 URL 并订阅机器人事件。

  3. 代理人。按照第 6 步操作新安装指南启用代理。

  4. 重新安装应用程序。新范围仅在重新安装应用程序后生效。添加后,Slack 会显示一条横幅,提示您重新安装。打开Install App部分并将应用程序重新安装到您的工作区。您现有的机器人令牌将继续工作并获得新的范围,因此您无需从 KMonitor 仪表板重新连接 Slack。

更新环境变量

如果您要从v0.8.2或下面,您还需要手动将 Slack 凭据添加到环境变量中,而不是在终端提示符下输入它们。如果您要从v0.10.0,你需要重命名SLACK_OAUTH_STATE_SALT环境变量为SLACK_OAUTH_STATE_SECRET.

  1. Slack 客户端凭据。打开self-host/.env文件并添加从 Slack 应用页面获取的以下环境变量。

    SLACK_CLIENT_ID=your-slack-client-id                # change this
    SLACK_CLIENT_SECRET=your-slack-client-secret        # change this
    SLACK_SIGNING_SECRET=your-slack-signing-secret      # change this
  2. 国家秘密。生成随机 44 个字符的秘密。使用命令openssl rand -hex 22生成随机秘密。

    SLACK_OAUTH_STATE_SECRET=your-slack-oauth-state-secret  # change this
  3. 关闭。运行以下命令关闭所有服务。

    sudo docker compose -f compose.yml -f compose.prod.yml --profile migrate down
  4. 启动。最后,运行install.sh使配置生效的脚本。

    sudo ./install.sh