可观测性:使用 Universal Profiling 优化工作负载
概述
Elastic 可观测性介绍
进一步熟悉 Elastic 可观测性,大致了解如何使用 Elastic Cloud 采集、查看和分析应用程序中的客户日志。了解如何实现应用程序现代化并满怀信心地采用云。
下面我们开始吧
创建 Elastic Cloud 帐户
访问 cloud.elastic.co 并创建帐户后,请跟随本视频学习,了解如何在我们全球 50 多个支持的地区中的任何一个启动您的第一个 Elastic Stack。
部署完成后,在“Observability”(可观测性)选项卡下,选择“Optimize my workloads with Universal Profiling”(使用 Universal Profiling 优化我的工作负载)。
现在,系统将提示您添加数据以开始优化。选择“Set up Universal Profiling”(设置 Universal Profiling)。
如果这是您第一次使用 Universal Profiling Agent,系统将提示您进行设置。只需按照下面的说明操作即可。
下面是在 Microsoft Azure AKS 集群中运行上述命令的示例。
数据开始显示后,导航到左侧菜单中 Universal Profiling 下的“Stacktraces”(堆栈跟踪)。查看堆栈跟踪是为了查看最耗时的内容。将鼠标光标悬停在图表上,可以查看各个线程的波形。
堆栈跟踪视图显示了按线程、主机、Kubernetes 部署和容器分组的堆栈跟踪图表。它可用于检测线程间意外的 CPU 峰值,还可以通过火焰图深入查看更小的时间范围,以便进行进一步调查。
您将在大约 3 分钟或更短的时间内开始看到数据。有关如何读取堆栈跟踪的更多信息,请查看这篇博文。
使用 Elastic 可观测性
分析火焰图
接下来,导航到左侧菜单中 Universal Profiling 下的“Flamegraphs”(火焰图)。从本质上讲,性能分析等同于火焰图。从左到右,它表示最耗费资源的代码或最耗费资源的函数。
您可能需要花费最多的时间来查看火焰图页面,尤其是在进行故障排查和优化时。我们建议您参考这篇博文来识别火焰图中的性能瓶颈和优化机会。要查找的三个关键要素条件是宽度、层次结构和高度。
- 从左到右水平浏览,重点关注 CPU 密集型函数的宽度。
- 纵向观察以检查堆栈并发现瓶颈。
- 寻找高耸的堆栈来识别代码中潜在的复杂性。
要开始探索,建议将范围限制为特定的线程、主机、部署或容器。只需在搜索栏中输入即可。
注意:Elastic Universal Profiling 是业界唯一的持续性能分析解决方案,它提供了从内核到原生代码再到高级编程语言的混合语言可见性,用户不需要在主机上使用故障排查符号。
在分析图表时,请注意,就 CPU 时间而言,线越长所花费的时间就越多。如果选择其中一条线,您将获得一个包含更多详细信息的浮出控件。函数是当时执行的代码行,您还将看到其他关键详细信息,如总 CPU、年化 CO2 和年化美元成本。
比较更改前后的代码
差分火焰图让您可以在将代码推向生产环境之前对比更改前后的代码。青色代表改进,红色代表退化。
在下图中,根据颜色,您可以看到优化后的容器更好。
如果您选择“Gained overall performance”(获得的总体性能)下拉箭头,可以看到总体改进值。
接下来,如果您选择“Swap sides”(换边)图标(要比较的容器之间的图标,其中箭头指向相反的方向)。您可以看到,恢复到优化之前容器的代码将导致退化。
如果您选择“Lost overall performance”(损失的总体性能)下拉箭头,可以看到总体退化值。
接下来,如果选择“Go to monitor”(前往监测),您将立即获得一些概括性的见解。随着更多测试的完成,这些图表将开始呈现,但您可以很快看到可用性、执行测试的持续时间、时间线,还可以深入研究瀑布图。若要深入研究,请单击“View test run”(查看测试运行)下的图标。
后续步骤
感谢您花时间通过 Elastic Cloud 收集和分析日志。如果您刚接触 Elastic,一定要进行 14 天的免费试用。
另外,当您开始使用 Elastic 时,要了解在整个环境中部署时作为用户应管理的一些操作、安全性和数据组件。