已解决:将 UptimeRobot 与 Microsoft Teams 集成以实现宕机警报
Source: Dev.to
🚀 执行摘要
TL;DR: 通过 webhook 将 UptimeRobot 与 Microsoft Teams 集成,可实现即时、全团队的停机和正常运行警报,消除手动监控或不频繁的电子邮件通知所导致的延迟。这将事件响应从被动转为主动,确保更快的解决速度和更高的服务可用性。
为什么要集成?
- 即时可见性: 每次故障都会发布到团队的主要沟通中心。
- 减少上下文切换: 无需在仪表盘、电子邮件和聊天应用之间切换。
- 更高可用性: 响应更快 → 停机时间更少 → 更佳用户体验。
“错过关键警报或在监控工具和沟通平台之间不断切换上下文的挫败感,是系统管理员、开发者和 DevOps 工程师共同的痛点。” – TechResolve
您需要的准备
| 需求 | 详情 |
|---|---|
| UptimeRobot 账户 | 至少一个监控(网站、端口、关键字等) |
| Microsoft Teams 账户 | 具备添加连接器 / 创建入站 webhook 的权限 |
| 基本的 webhook/JSON 知识 | 有帮助但非必需 |
Step‑by‑Step Setup
1️⃣ Create an Incoming Webhook in Teams
- 打开 Microsoft Teams → 导航到目标 team 和 channel(例如 TechResolve Operations 中的 DevOps Alerts)。
- 点击频道名称旁的省略号 … → Connectors。
- 在 Connectors 对话框中,搜索 Incoming Webhook → Add(如果已经存在则 Configure)。
- 提供一个描述性名称(例如 UptimeRobot Alerts),并可选上传图标。
- 点击 Create。
- 复制生成的 URL – 这就是 UptimeRobot 将 POST 的端点,请妥善保管!
- 点击 Done。
现在你拥有一个安全的 URL,可直接将消息发送到所选的 Teams 频道。
2️⃣ Add a Webhook Alert Contact in UptimeRobot
- 登录 UptimeRobot Dashboard。
- 在左侧边栏,选择 Alert Contacts。
- 点击 Add New Alert Contact。
- Alert Contact Type: 选择 Webhook。
- 为其命名(例如 Microsoft Teams Webhook for Alerts)。
- URL to Notify: 粘贴步骤 1 中的 Teams webhook URL。
- 确认 POST Value 已设置为 POST(默认)。
- (可选) 添加自定义 HTTP 头或 POST 值以实现高级格式化。
- 点击 Create Alert Contact。
UptimeRobot 将立即向 Teams 发送测试警报——请确认消息已出现。
3️⃣ Link the Webhook to Your Monitors
- 在仪表板中,前往 My Settings(或直接进入监控列表)。
- 找到要关联 Teams 的监控,点击 Edit(铅笔)图标。
- 滚动至 Alert Contacts 部分。
- 勾选 Microsoft Teams Webhook for Alerts(如有需要可选择多个联系人)。
- 点击 Save Changes。
重复此过程,以便为每个希望通过 Teams 通知的监控添加 webhook。
测试集成(可选)
您可以使用 curl 手动测试 webhook:
curl -H "Content-Type: application/json" \
-d '{"text":"UptimeRobot test alert"}' \
<WEBHOOK_URL>
在所选的 Teams 频道中应出现一条内容为 “UptimeRobot test alert” 的消息。
接下来会发生什么?
- UptimeRobot 在监控状态变化(上线/下线)时向 Teams webhook 发送 JSON 负载(默认格式)。
- Microsoft Teams 将负载显示为简短的文本消息,立即通知整个频道。
您可以进一步自定义 JSON 负载或使用 Adaptive Cards 实现更丰富的格式,但默认设置对大多数使用场景即开即用。
回顾
| 步骤 | 操作 |
|---|---|
| 1 | 创建一个 Incoming Webhook 在 Microsoft Teams 中并复制其 URL。 |
| 2 | 在 UptimeRobot 中使用该 URL 添加一个 Webhook 警报联系人。 |
| 3 | 将该警报联系人分配给您想要跟踪的监视器。 |
| 4 | 验证警报是否出现在 Teams 中(您也可以使用 curl 进行测试)。 |
完成这些步骤后,您的团队将直接在 Microsoft Teams 中收到 实时 的正常运行时间/停机通知,从而实现更快的事件响应并提升整体服务可靠性。 🎉
Source: …
启用 Microsoft Teams 警报(使用 UptimeRobot)
从此以后,只要关联监控的状态发生变化(例如 Up → Down 或 Down → Up),UptimeRobot 将自动向您配置的 Microsoft Teams 频道发送警报消息。
提示: 创建警报联系人时,UptimeRobot 会发送一条初始测试消息,但最好再进行额外的测试(例如模拟停机或在监控设置中触发手动测试警报),以验证在各种情况下都能正常工作。
UptimeRobot 向 Teams 发送警报的方式
UptimeRobot 会向 Teams 的 webhook URL POST 一个 JSON 负载。
| 消息类型 | 描述 |
|---|---|
| Simple text | Teams 期望的基本 JSON 结构,仅包含一个 text 字段。 |
| Rich MessageCard | Microsoft Teams Incoming Webhooks 还支持 MessageCard 架构,可用于创建更具视觉效果和可操作性的警报。 |
UptimeRobot 的默认格式通常已经足够,但了解如何自定义负载在高级场景或独立测试时会很有帮助。
快速测试:使用 curl 发送简易消息
curl -X POST "https://<your‑teams‑webhook‑url>" \
-H "Content-Type: application/json" \
-d '{
"text": "Hello TechResolve Team! This is a test alert from an external system. Our main service is currently experiencing an issue and requires immediate attention."
}'
命令说明
| 部分 | 功能 |
|---|---|
-X POST "https://<your‑teams‑webhook‑url>" | 向您在 步骤 1 中获取的 Teams webhook URL 发送 POST 请求。 |
-H "Content-Type: application/json" | 设置 Content-Type 头,使 Teams 知道负载的格式。 |
-d '...' | 在请求体中提供 JSON 负载。 |
"text": "…" | Teams Incoming Webhook 最简的键值对;该值即为将在频道中显示的消息内容。 |
运行该命令后,消息应立即出现在指定的 Teams 频道中,确认 webhook 已正常工作。
常见问题与故障排除
| 问题 | 产生原因 | 解决方法 |
|---|---|---|
| Webhook URL 错误 | 拼写错误、额外空格或缺少字符会导致端点失效。 | 直接从 Teams 复制粘贴 URL;仔细检查是否有多余的空白字符。 |
| Microsoft Teams 权限 | 您的账户可能没有添加连接器的权限。 | 确保您拥有该频道的管理员/所有者权限,或请 Teams 管理员授予相应权限。 |
| 未分配警报联系人 | 仅创建联系人不足;您必须将其关联到每个监控。 | 在监控的编辑页面,勾选您的 “Microsoft Teams Webhook” 联系人复选框。 |
| 网络/防火墙阻断 | 出站 HTTP POST 请求可能被阻止。 | 确认没有防火墙或代理阻止 UptimeRobot 服务器访问 Teams。 |
Next Steps & Advanced Ideas
- 维护窗口 – 防止在计划停机期间产生误报。
- 公共状态页面 – 向用户透明地共享服务状态。
- 自定义 MessageCard 负载 – 使用 MessageCard 架构构建更丰富、可操作的警报卡片。
- 自定义机器人 – 在 Teams 中创建交互式的事件管理工作流。
通过遵循这些步骤,您已经将 UptimeRobot 与 Microsoft Teams 集成,为团队提供对服务健康的实时可视化,并实现更快速的事件响应。