今天,我将演示 OpenResty Edge 另一个很酷的功能。即使用 Metric SQL 语言创建新的动态指标。

Embeded image

动态指标简介

动态指标允许用户通过即时编写类似 SQL 的查询语句来创建度量指标。OpenResty Edge 会自动生成高效率代码,以收集和汇总每个网关服务器内存中的指标数据。之后数据会被报告给 web 控制台,并实时显示在漂亮的图表中。

Embeded image

别担心效率问题。系统使用机器编码技术将用户自定义的动态指标以及内置的标准动态指标转换成高效的本地代码。它会使用固定大小的内存进行流式聚合和统计。

Embeded image

在示例应用中启用动态指标

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

Screenshot

我们可以继续使用之前的示例应用,test-edge.com。

Screenshot

进入该应用程序。

Screenshot

点击这个菜单项,进入动态指标页面。

Screenshot

可以看到有两种类型的动态指标。 一种被称为用户自定义的动态指标,是由用户自己定义的。

Screenshot

另一种则是由 OpenResty Edge 预定义的标准动态指标。

Screenshot

今天这个教程是关于标准动态指标的。自定义的动态指标在另一个教程中介绍。

我们将使用 “Top 10 URIs by Request Counts” 这个指标作为例子来讲解如何启用一个标准的动态指标以及动态指标是如何运作的。

Screenshot

我们使用 OpenResty Edge 平台提供的 Metric SQL 语言。你可以在我们的文档网站上找到这个语言的用户手册。

Screenshot

看一下这个指标的 Metric SQL 声明。

Screenshot

它将所有的请求按 URI 进行分组,按照请求数进行降序排序,并选取请求数量最高的 10 组进行显示。

Screenshot

你可以点击这个按钮来隐藏 Metric SQL 语句。

Screenshot

到目前为止,你所看到的只是这个标准动态指标的定义。我们还没有真正启用它。

你需要点击 “Enable” 按钮来启用这个指标。

Screenshot

点击 “Go to Chart” 按钮,进入动态指标的 Dashboard。

Screenshot

刚刚启用的这个指标显示在这里。

Screenshot

如果想修改这个指标,你可以点击编辑按钮,打开编辑面板。

Screenshot

对于标准动态指标,你只能修改指标上报间隔。指标的名字和 Metric SQL 声明都是只读的。

Screenshot

修改指标的上报间隔。为了方便演示,我们将指标的上报间隔改为 10 秒。注意较短的上报间隔会造成较高的开销。我们建议上报间隔至少应设置为 60 秒。

Screenshot

点击 “Submit” 按钮保存刚才的改动。

Screenshot

测试

现在发送请求,看看动态指标是如何运作的。我们可以使用名为 `wrk' 的开源工具在终端快速发送许多请求。

wrk -d 1s http://test-edge.com/test1
wrk -d 1s http://test-edge.com/test2

Screenshot

等待 15 秒,发送另一批请求。

Screenshot

检查刚刚发送的所有请求。可以看到所有的请求按照 URI 进行了分组,每组的请求数以柱状图的形式呈现,并按降序排序。

Screenshot

Screenshot

数据也可以以饼状图的形式显示。

Screenshot

也可以以折线图的形式显示。

Screenshot

这跟我们期望的结果是一致的。

可以使用删除按钮来删除现有的指标。

Screenshot

或者跳转到标准动态指标的列表页。

Screenshot

点击 “Disable” 按钮禁用这个指标。

Screenshot

点击 “Confirm” 按钮确认禁用这个指标。

Screenshot

回到 Dashboard,可以看到这个指标已经不再显示了。

Screenshot

openresty.org 的标准动态指标

现在来看一下我们一个开源网站的标准动态指标。这些指标是基于该网站的真实流量。

Screenshot

在搜索框中键入 openresty.org。

Screenshot

Screenshot

进入应用程序。

Screenshot

进入动态指标页面。

Screenshot

如你所见,我们已经启用了许多标准的动态指标。数据以各种方式显示,如饼状图、柱状图和折线图。

Screenshot

比如这个指标就很有意思。

Screenshot

点击这个按钮,显示它的 Metric SQL 语句定义。

Screenshot

该指标显示了按 URI 分组的流量数据。

Screenshot

通过这样的数据我们可以看出用户对哪个 URI 最感兴趣。

Screenshot

再看看这个指标。

Screenshot

点击查看它的 Metric SQL 语句。

Screenshot

它列出了所有请求的客户端和服务器城市的名称、纬度和经度。

Screenshot

你可以在地图上看到客户端城市和服务器城市。会有一条弧线从客户端连接到服务器。从地图上我们可以看到所有请求的地理分布。

Screenshot

这就是我今天想讲的内容。

Screenshot

关于 OpenResty Edge

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

如果你喜欢这个教程,请订阅这个博客网站和我们的 YouTube 频道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. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:

我们的微信公众号

翻译

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