设置 Slack
为您的自托管 KMonitor 实例设置 Slack 集成。使用 OAuth、斜线命令和崩溃警报事件以及查询代理配置 Slack 应用程序。
使用本指南设置 Slack 集成,以便在 Slack 上接收 KMonitor 警报通知,并向 KMonitor 查询代理询问来自 Slack 的问题。
为新安装配置 Slack 设置
-
Slack 应用程序。按照官方说明创建一个 Slack 应用Slack指南。您可以为您的应用程序选择任何名称、徽标和描述。
-
基本信息。前往
Basic Information部分并复制客户端 ID、客户端密钥和签名密钥并将它们粘贴到提示中。 (如果您要升级现有的 KMonitor 安装,您需要将这些变量粘贴到您的环境变量文件中。请参阅下面有关现有用户的部分) -
OAuth 和权限。前往
OAuth & Permissions您的应用程序部分及其下Redirect URLs,添加您的 KMonitor Slack 身份验证回调 URL。这应该是这样的https://[measure.yourcompany.com]/auth/callback/slack。代替[measure.yourcompany.com]与您实际的 KMonitor 仪表板域。 -
在同一个
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 域名。
-
活动订阅。前往
Event Subscriptions部分,启用事件并将请求 URL 设置为https://[measure-api.yourcompany.com]/slack/events。 Slack 会立即验证 URL,因此您的 Measure API 服务在您保存时必须可访问。然后,在Subscribe to bot events, 添加:- 应用提及— 在频道中@提及机器人提出的问题
- 应用程序主页打开— 当用户打开 DM 时,让机器人用建议的提示向用户打招呼
- 消息通道- 公共频道线程中的后续消息,因此对话可以继续而无需重新提及机器人
- 消息组— 私人频道也一样
- 消息.im— 机器人的 DM 中提出的问题
-
Agent。前往应用设置中的
Agent部分并启用它(新的 Slack 应用默认使用 Slack 的 agent messaging experience)。这会为 KMonitor 应用提供一个直接消息界面,用户除了在频道中 @提及它之外,还可以在其中与 Agent 对话。 -
斜线命令。前往
Slash Commands部分。创建命令如下:
| 命令 | 请求 URL | 简短描述 |
|---|---|---|
| /subscribe-alerts | https://[measure-api.yourcompany.com]/slack/events | 注册当前频道以接收警报通知 |
| /stop-alerts | https://[measure-api.yourcompany.com]/slack/events | 停止当前频道接收警报通知 |
| /list-alert-channels | https://[measure-api.yourcompany.com]/slack/events | 列出当前注册接收警报通知的通道 |
代替[measure-api.yourcompany.com]在每个请求 URL 中使用您的实际 Measure API 域。
为现有安装配置 Slack 设置
如果您已在早期版本的 KMonitor 上设置了 Slack 集成,则您的 Slack 应用早于查询代理,并且缺少代理所需的范围、事件订阅和设置。更新您现有的 Slack 应用,如果您从 v0.8.2 或更低版本升级,请更新您的环境变量,如下所述。
Slack 无法将事件和 OAuth 回调发送到本地开发环境。为了在本地开发或测试 Slack 集成,您需要使用隧道服务,例如 ngrok 或 Cloudflare Tunnel,并使用代理到本地主机的 URL。
查看这份指南了解更多信息。
更新您的 Slack 应用
-
新范围。打开您现有的 Slack 应用:api.slack.com/apps,转到
OAuth & Permissions部分,并在Scopes,添加以下权限,同时保留您已有的权限:- 应用程序提及:已读
- 助理:写
- 聊天:write.public
- 频道:历史
- 组:历史
- 我:历史
- 我:写
- 文件:写入
- 链接:阅读
- 链接:写
- 反应:读
- 反应:写
- 用户:阅读
- 用户:read.email
您的应用程序现在应该具有第 4 步中列出的全套范围新安装指南多于。
-
活动订阅。对于仅警报安装,此部分不存在,因此您是第一次添加它。按照第 5 步操作新安装指南要启用事件,请设置请求 URL 并订阅机器人事件。
-
代理人。按照第 6 步操作新安装指南启用代理。
-
重新安装应用程序。新范围仅在重新安装应用程序后生效。添加后,Slack 会显示一条横幅,提示您重新安装。打开
Install App部分并将应用程序重新安装到您的工作区。您现有的机器人令牌将继续工作并获得新的范围,因此您无需从 KMonitor 仪表板重新连接 Slack。
更新环境变量
如果您要从v0.8.2或下面,您还需要手动将 Slack 凭据添加到环境变量中,而不是在终端提示符下输入它们。如果您要从v0.10.0,你需要重命名SLACK_OAUTH_STATE_SALT环境变量为SLACK_OAUTH_STATE_SECRET.
-
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 -
国家秘密。生成随机 44 个字符的秘密。使用命令
openssl rand -hex 22生成随机秘密。SLACK_OAUTH_STATE_SECRET=your-slack-oauth-state-secret # change this -
关闭。运行以下命令关闭所有服务。
sudo docker compose -f compose.yml -f compose.prod.yml --profile migrate down -
启动。最后,运行
install.sh使配置生效的脚本。sudo ./install.sh