对于开发者和运维人员来说,火焰图是定位性能问题的经典方法。使用火焰图可视化系统资源占用(cpu占用、内存占用、调度、IO等),帮助技术人员快速定位资源占用异常的代码级根源,或观察潜在的性能下降趋势,然后优化系统和应用程序性能。然而,现有流行的火焰图工具往往存在一种或多种局限性,实际应用场景比较有限。因此openEuler上的开源项目A-Ops中的gala-ops系列组件提供了适合云原生的全栈持续性能监控火焰图。传统火焰图在实际应用中的痛点1、传统火焰图工具相对独立,难以对接第三方插件或集成到运维系统中。在应用中,有经验的开发者需要结合其他调试工具进行手动分析定位。2.由于开销大,火焰图大多只作为开发调试阶段的工具使用,无法在生产环境中正常部署。因此,对于更常见的场景——即实际生产环境中突发的性能问题,火焰图并不是一种有效的问题定位手段。3.生产环境部署的应用类型复杂多样,很多应用调用不同语言的模块。但是每个火焰图工具往往只针对一种类型的语言。即使同时部署不同语言的火焰图观察工具,生成的火焰图数据也难以统一,难以从系统角度观察不同语言应用的性能比。4、传统的火焰图只能观察进程和线程粒度,是宿主时代的工具。对于云原生系统更注重的容器粒度,传统的火焰图无法直观区分。gala-ops火焰图四大特点1.易于部署和集成Gala-ops是一款针对云基础设施灰度故障的应用级/系统级在线诊断工具。火焰图探针stackprobe集成在gala-gopher组件中。用户只需一键安装gala-gopher,然后在配置文件中开启或关闭火焰图探针即可使用。具体安装部署说明请参考gala-gopher文档。gala-ops火焰图默认会在本地生成svg格式的火焰图。此外,还支持pyroscope、grafana等第三方运维平台。你只需要在配置文件中填写第三方插件的地址,火焰图探针程序会定时自动将火焰图数据上传到远端,供后续分析分析使用。实时监控。下面是gala-opscpuflamegraph对接pyroscope和grafana的例子。通过选择特定时间段,可以查看该时间段的火焰图,对函数cpu占比进行排序,配合其他系统或应用指标,轻松发现和定位问题。2.容器支持在云原生系统中,应用是以容器的形式部署的。在传统火焰图中进行系统级观察时,最多反映线程名称。如果不同容器实例中的线程名称相同,调用栈会合并在一起,无法区分,影响后续的定位和定界。gala-ops火焰图探针可以自动识别机器上的pod和容器,并将工作负载、容器和进程号信息添加到图中。如果进程是workload/container进程,则pod和container分别标有[Pod]和[Con]前缀,进程标有[
