OpenResty Edge 中配置 webhook,只需进入 Global Config → Webhooks 创建一个 webhook,并订阅某个事件(例如 Gateway Server Offline 网关服务器离线)。此后每当该事件发生,Edge Admin 就会自动向您自己实现的自定义 API 发送 HTTP 请求。Gateway Server Offline 事件涵盖服务器下线的任何原因——无论是 Edge 主动健康探测发现的下线、服务器自身异常,还是在 Edge Admin 里手动标记离线——因此您的告警 API 能捕获每一次下线。本教程演示如何创建、触发并验证这样一个 webhook。若想先了解为什么事件驱动的 webhook 通知优于基于轮询的监控,请参阅 OpenResty Edge Webhook 机制解读

OpenResty Edge webhook 在网关服务器离线事件发生时向自定义 API 发送 HTTP 请求

在 OpenResty Edge Admin 中创建一个 webhook

让我们进入 OpenResty Edge 的 Web 控制台。这是我们控制台的样例部署。每个用户都有自己的本地部署。

OpenResty Edge Admin Web 控制台首页

首先,我们需要创建一个 webhook。进入 “Global Config” 页面。

在 OpenResty Edge Admin 中进入 Global Config 页面

选择 “Webhooks”。

在 Global Config 下选择 Webhooks

创建一个 webhook。

在 OpenResty Edge Admin 中创建新的 webhook

这里我们创建了一个 webhook,它的作用是在网关服务器离线时,将 HTTP 请求发送到用户自己实现的 API 上。

配置 webhook 在 Gateway Server Offline 事件时向自定义 API 发送 HTTP 请求

这里提供了很多内置的事件供您选择,我们也可以根据您的需求添加更多的事件。

OpenResty Edge 提供的内置 webhook 事件列表

这里我们选择 “Gateway Server Offline” 事件。

为 webhook 选择 Gateway Server Offline 事件

点击 “Create” 之后,新的 webhook 就添加完成了。

新创建的网关服务器离线 webhook 已就绪

通过网关服务器离线事件触发 webhook

为了触发这个 webhook,我们来将一个网关服务器设置成离线。

准备将一个网关服务器设为离线以触发 webhook

使用这个服务器。

选择要设为离线的网关服务器

打开设置页面。

在 Edge Admin 中打开该网关服务器的设置页面

请注意这个服务器现在是在线状态。

该网关服务器当前显示为在线状态

将它设置为离线状态。

在设置中将该网关服务器标记为离线

保存。

保存离线更改以触发 webhook

查看 webhook 的执行历史

现在让我们进入 webhooks 页面查看执行历史。

返回 Webhooks 页面查看执行历史

选择 “Webhooks”。

选择 Webhooks 打开 webhook 列表

点击 “详情” 按钮。

点击“详情”按钮查看 webhook 执行历史

可以看到 webhook 的执行历史,说明触发的事件已经成功发送了。

webhook 执行历史确认离线事件已成功发送到自定义 API

除了这里演示的在 Edge Admin 里手动标记下线,OpenResty Edge 还会主动对各网关服务器做健康探测——一旦探测到服务器下线,或服务器自身发生异常,同样会触发 Gateway Server Offline 事件。关于用这类事件驱动告警与自动化运维的思路,可参阅 OpenResty Edge Webhook:用事件驱动通知取代轮询的网关状态推送

常见问题

OpenResty Edge 中有哪些事件可以触发 webhook?

OpenResty Edge 提供了多种内置事件供 webhook 订阅,例如本教程使用的 Gateway Server Offline(网关服务器离线)事件。如果需要的事件尚未内置,我们也可以根据需求添加。每当订阅的事件发生时,Edge Admin 就会向您配置的自定义 API 发送一次 HTTP 请求。

Gateway Server Offline 事件只在手动将服务器标记为离线时才触发吗?

不是。除了在 Edge Admin 里手动标记离线,OpenResty Edge 还会主动对各网关服务器做健康探测——一旦探测到服务器下线,或服务器自身发生异常,都会触发 Gateway Server Offline 事件。因此订阅该事件的 webhook 能捕获每一次下线,而不只是计划内的手动操作。

如何确认 webhook 确实发送成功了?

在 Edge Admin 中进入 Webhooks 页面,点击对应 webhook 的“详情”按钮即可查看它的执行历史。其中的每条记录都表示一次被触发的事件已成功发送到您的自定义 API,因此您无需在自己的接口上额外埋点即可验证投递情况。

关于 OpenResty Edge

OpenResty Edge 是一款专为微服务和分布式流量架构设计的全能型网关软件,由我们自主研发。它集流量管理、私有 CDN 构建、API 网关、安全防护等功能于一体,帮助您轻松构建、管理和保护现代应用程序。OpenResty Edge 拥有业界领先的性能和可扩展性,能够满足高并发、高负载场景下的苛刻需求。它支持调度 K8s 等容器应用流量,并可管理海量域名,轻松满足大型网站和复杂应用的需求。

如果你喜欢这个教程,请订阅这个博客网站和我们的 B 站频道。谢谢!

关于作者

章亦春是开源 OpenResty® 项目创始人兼 OpenResty Inc. 公司 CEO 和创始人。

章亦春(Github ID: agentzh),生于中国江苏,现定居美国湾区。他是中国早期开源技术和文化的倡导者和领军人物,曾供职于多家国际知名的高科技企业,如 Cloudflare、雅虎、阿里巴巴, 是 “边缘计算“、”动态追踪 “和 “机器编程 “的先驱,拥有超过 22 年的编程及 16 年的开源经验。作为拥有超过 4000 万全球域名用户的开源项目的领导者。他基于其 OpenResty® 开源项目打造的高科技企业 OpenResty Inc. 位于美国硅谷中心。其主打的两个产品 OpenResty XRay(利用动态追踪技术的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最适合微服务和分布式流量的全能型网关软件),广受全球众多上市及大型企业青睐。在 OpenResty 以外,章亦春为多个开源项目贡献了累计超过百万行代码,其中包括,Linux 内核、Nginx、LuaJITGDBSystemTapLLVM、Perl 等,并编写过 60 多个开源软件库。

关注我们

如果您喜欢本文,欢迎关注我们 OpenResty Inc. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:

我们的微信公众号

翻译

我们提供了英文版原文和中译版(本文)。我们也欢迎读者提供其他语言的翻译版本,只要是全文翻译不带省略,我们都将会考虑采用,非常感谢!