OpenResty XRay Web 控制台是用于监控和排查运行中应用的浏览器界面——非侵入式,无需改动一行代码。它包含四大区域:Insights 自动生成每日与每周分析报告(本次导览中,一个 OpenResty 应用就揪出了 12 个 CPU 相关问题);Dashboard 实时展示 CPU 与内存性能指标;Guided Analysis 支持在线按需根因诊断并生成火焰图;Settings 管理各个 Agent。本文逐一带您导览 OpenResty XRay 的 Web 控制台如何进行实时监控和管理。

OpenResty XRay 的 Insights 页面能看到什么?

OpenResty XRay Web 控制台的 Insights 页面,展示 XRay 为您在所有服务器上的所有应用自动生成的分析报告。

OpenResty XRay Web 控制台 Insights 页面的分析报告列表

您可以在这里找到以日和周为周期的自动分析报告。系统默认展示的是当天的日报。也可以显示每周报告。

Insights 页面默认显示当天日报,并可切换周报(OpenResty XRay)

点击折叠这些应用的详细信息。

折叠应用报告详情的 OpenResty XRay Insights 页面

正如我们看到的,OpenResty XRay 可以分析各种不同类型的应用。

OpenResty XRay 可分析多种类型应用的 Insights 报告列表

展开 “OpenResty” 应用。

展开的 OpenResty 应用条目(OpenResty XRay Insights 报告)

点击类别标题,可以折叠或展开问题列表。

按类别展开应用问题列表(OpenResty XRay)

问题已根据类型分类,便于您快速查找感兴趣的问题类别。每种类别后面的数字显示了该类别内的问题数量。

按类型分类并标注问题数量的 OpenResty XRay Insights 报告

来看看这个 Openresty 应用中的 CPU 问题。这里列出了 12 个问题,都与 “CPU” 有关。

某 OpenResty 应用列出的 12 个 CPU 相关问题(OpenResty XRay)

如何解读 OpenResty XRay 的分析报告?

解读 OpenResty XRay 分析报告时,点开任一问题并点击 “More”——报告以定位热代码路径的火焰图为核心,随后给出通俗的解释与修复建议。在问题列表中查看特定问题的详细信息,

从 OpenResty XRay 问题列表中选择具体问题

只需点击 “More”。

点击 More 打开完整问题报告(OpenResty XRay)

这条热代码路径是由这个 C 语言级别的 CPU 火焰图自动推导出来的。

OpenResty XRay 据以推导热代码路径的 C 语言级 CPU 火焰图

放大它。

放大后定位热代码路径的 C 语言级火焰图(OpenResty XRay)

火焰图可以帮助您定位代码问题的根因。

借助火焰图定位问题根因(OpenResty XRay)

下面是对问题更详细的解释和建议。

针对 CPU 问题的详细解释与修复建议(OpenResty XRay)

点击此按钮查看更多分析结果。

查看更多分析结果的按钮(OpenResty XRay 报告)

这里涵盖了更完整的报告信息,如使用了哪个分析器和应用相关的具体信息。

包含所用分析器与应用信息的完整报告详情(OpenResty XRay)

这里能看到火焰图和其他系统指标相关的图表。

OpenResty XRay 分析报告中的火焰图与系统指标图表

OpenResty XRay 分析报告中的更多图表

以及完整的终端输出。

OpenResty XRay 报告中的完整终端输出

OpenResty XRay 分析报告的完整终端输出部分

OpenResty XRay Dashboard 展示哪些实时指标?

Dashboard 展示实时的 CPU 与内存指标,以及 Go 等不同运行时按应用维度的图表。OpenResty XRay 能够帮助您快速发现和分析应用的各种问题。您也可以访问 “Dashboard” 页面查看更详细的性能监控数据。

打开 OpenResty XRay Web 控制台的 Dashboard 页面

这里显示了您系统的各项性能数据。

OpenResty XRay Dashboard 上的系统性能指标

您可以在上方切换查看其他类型的性能指标。

在 OpenResty XRay Dashboard 上切换指标类型

这些是与 CPU 实时使用情况有关的图表。

OpenResty XRay Dashboard 上的实时 CPU 使用图表

点击全屏查看这张图表。

全屏查看 CPU 图表(OpenResty XRay Dashboard)

现在,它显示的是过去 1 小时的数据。

OpenResty XRay Dashboard 上过去 1 小时的 CPU 数据

这些是系统 CPU 利用率相关的详细指标。

系统 CPU 利用率的详细指标(OpenResty XRay)

下面是按应用类型分类的基本信息。这个是关于 Go 应用的。

OpenResty XRay Dashboard 上 Go 应用的基本信息

OpenResty XRay Dashboard 上各类应用的性能分析图表

“Dashboard” 页面上还有其他应用的性能分析图表。

OpenResty XRay Dashboard 上更多应用的性能分析图表

跳转到内存指标详情页。

打开 OpenResty XRay Dashboard 的内存指标详情页

这些系统指标都是关于内存使用情况的。

OpenResty XRay Dashboard 上的系统内存使用指标

如果不只是查看内存用量,而要把一次真实的内存泄漏追踪到源码行,参见生产环境中的内存泄漏检测

如何用 Guided Analysis 诊断高 CPU 占用?

诊断高 CPU 占用时,打开 Guided Analysis,选择 “High CPU Usage”,选定应用及其 worker 进程,保持 Lua 与 C/C++ 都选中后开始——XRay 会执行多轮分析(默认最长 300 秒),并生成以火焰图指向热代码路径的报告。在 “Guided Analysis” 页面,您可以在线分析系统的性能问题。跳转到 “Guided Analysis” 页面。

打开 OpenResty XRay Web 控制台的 Guided Analysis 页面

这里可以看到系统能分析的不同类型的问题。

OpenResty XRay Guided Analysis 可诊断的问题类型

让我们选择 “High CPU Usage”。

在 OpenResty XRay Guided Analysis 中选择 High CPU Usage

点击 “Next”。

进入 OpenResty XRay Guided Analysis 的下一步

这里我们选择 OpenResty 应用。

在 Guided Analysis 中选择 OpenResty 应用

选择名为 worker 的进程。

为高 CPU 分析选择 worker 进程(OpenResty XRay)

确保应用的类型是正确的。通常默认值就是对的。

确认应用类型(OpenResty XRay Guided Analysis)

OpenResty XRay 可以在多种不同语言的级别上进行分析。这里保持 Lua 和 C/C++ 都选中。

保持 Lua 与 C/C++ 同时选中以进行多语言分析(OpenResty XRay)

我们还可以设置最长的分析时间。这里保持默认的 300 秒不变。

将最长分析时间设为默认的 300 秒(OpenResty XRay)

开始分析。

开始引导式高 CPU 分析(OpenResty XRay)

系统将持续执行多轮分析。现在它正在运行第一轮分析。

OpenResty XRay 正在执行第一轮引导式分析

第一轮已经完成,现在进入第二轮分析。对这个例子来说,运行一轮就够了。

OpenResty XRay 进入第二轮分析

停止分析。

停止引导式分析(OpenResty XRay)

可以看到自动生成了一份分析报告。

自动生成的引导式分析报告(OpenResty XRay)

点击这里可以查看历史的分析报告。

打开 OpenResty XRay 的历史引导式分析报告列表

这是之前生成的所有的分析报告。

OpenResty XRay 的历史引导式分析报告列表

这一份是我们刚刚生成的。

刚刚生成的引导式分析报告(OpenResty XRay)

点击这个按钮进入报告详情页。

打开引导式分析报告详情页(OpenResty XRay)

带火焰图的引导式分析报告详情(OpenResty XRay)

如何配置 OpenResty XRay 的 Agent?

Settings 页面,您可以选择某个 Agent 并调整其配置。回到 Web 控制台。点击进入 “Settings” 页面。

打开 OpenResty XRay Web 控制台的 Settings 页面

选择 “Settings” 功能。

选择 OpenResty XRay Web 控制台的 Settings 功能

在这里您可以查看所选 Agent 的详细信息,并对其进行配置。

查看并配置所选 Agent 的信息(OpenResty XRay)

OpenResty XRay Web 控制台常见问题

OpenResty XRay 需要改动应用代码吗?

不需要。OpenResty XRay 是非侵入式工具,直接分析运行中的应用——无需重新编译、无需插桩,也不改动任何代码,全部操作都在 Web 控制台完成。

Insights 报告和 Guided Analysis 有什么区别?

Insights 报告按每日和每周的周期,为所有服务器上的每个应用自动生成。Guided Analysis 则是按需触发:您选定问题类型、目标和分析时长,再自己发起一次在线分析。两者都会生成带火焰图和建议的报告。

OpenResty XRay 多久生成一次 Insights 报告?

自动按每日和每周两个周期生成。Insights 页面默认展示当天日报,也可切换查看周报,因此无需手动触发,总有一份最新分析在等着您。

什么是 OpenResty XRay?

OpenResty XRay 是一个动态追踪产品,它可以自动分析运行中的应用,以解决性能问题、行为问题和安全漏洞,并提供可行的建议。在底层实现上,OpenResty XRay 由我们的 Y 语言驱动,可以在不同环境下支持多种不同的运行时,如 Stap+、eBPF+、GDB 和 ODB。

关于作者

章亦春是开源 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. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:

我们的微信公众号

翻译

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