首页 > 其他分享 >Elastic Universal Profiling

Elastic Universal Profiling

时间:2023-12-01 14:07:45浏览次数:37  
标签:分析 Profiling Elastic 开发人员 Universal 代码


Elastic Observability 8.10 introduces the general availability release of Elastic Universal Profiling™ and enhancements to the Elastic AI Assistant for Observability.

  • Elastic® Universal Profiling is a whole-system, always-on, continuous profiling solution that eliminates the need for code instrumentation, recompilation, on-host debug symbols, or service restarts. Leveraging eBPF, it operates within the Linux kernel space, capturing only necessary data with minimal overhead. It profiles every line of code, including application, kernel, and third-party libraries, providing whole-system code visibility across your entire fleet. 
  • Elastic Universal Profiling 是一种全系统、始终在线、持续的分析解决方案,无需代码检测、重新编译、主机上调试符号或服务重新启动。利用eBPF,通用分析在 Linux 内核空间内运行,以不引人注目的方式以最小的开销仅捕获所需的数据。它分析机器上运行的每一行代码——不仅包括您的应用程序代码,还包括内核和第三方库——从而为您的整个机群提供深入的、全系统的代码可见性,这样您就可以消除猜测。

前言

  Universal Profiling 是Es提供的一种分析工具,可以根据官方描述,它基本上对业务是零侵入,运行成本极低的一个工具。就可以帮我们分析出来服务器上运行程序的好坏。可以给我们精准分析道每一个方法,每一行代码。可以让我们知道资源占用情况。

  计算效率一直是软件专业人员最关心的问题,但在每一行代码都影响底线和环境的时代,有一个新的理由来关注它。提高软件效率可以带来更好的性能、更低的资源消耗、更低的成本和更低的排放。高效的软件不仅有利于企业,而且有利于企业。

一、主要能用来做什么?



1、了解整个基础架构中哪些代码行始终消耗 CPU 资源。



  通用分析为所有应用程序的运行时行为提供了前所未有的可见性:它构建从内核到用户空间本机代码,一直到在更高级别运行时运行的代码的堆栈跟踪,使您能够识别性能回归,减少浪费计算,并更快地调试复杂问题。

2、构建初衷给SRE、开发人员和 FinOps 专业人员

下方会给出用例

Elastic Universal Profiling_应用程序

二、Elastic Universal Profiling强大之处

  • 1.零侵入:Elastic Universal Profiling 是一种全系统、始终在线、持续的分析解决方案,无需代码检测、重新编译、主机上调试符号或服务重新启动。
  • 2.资源耗费少:以不引人注目的方式以最小的开销仅捕获所需的监控数据。
  • 3.监控精细:分析机器上运行的每一行代码——不仅包括您的应用程序代码,还包括内核和第三方库——从而为您的整个机群提供深入的、全系统的代码可见性。
  • 4.分析支持多种语言: PHP、Python、Java(或任何 JVM 语言)、Go、Rust、C/C++、Zig、Node.js/V8、Ruby 和 Perl。


三、效果展示与案例



1、SRE 用例



对于 SRE,弹性通用分析提供了涵盖内核、运行时和第三方库代码的系统范围性能洞察。凭借前所未有的广度和深度的可见性,它可以洞察可能潜伏在系统中的未知因素,从而实现精确、快速的故障排除。这种更深层次的全系统可见性使 SRE 能够回答基本的“为什么”和“什么”问题:

  • 为什么我们要将 x% 的 CPU 预算花在函数 y 上?
  • 为什么我们会在非高峰时段遇到意外的 CPU 峰值? 
  • 不同工作负载的资源消耗模式是什么?如何优化它们以提高成本和碳排放效率?
  • 我们整个多云队列中最昂贵的代码行是什么?




Elastic Universal Profiling_Universal_02


所有这些可见性都可供您(SRE)使用,而无需依赖开发人员来检测或更改代码,并且零重新编译或重新启动。Universal Profiling 使您能够准确、快速地诊断和解决问题。只需部署代理并在几分钟后接收分析数据(在 Kibana ®中)。现在就开始吧。 

[有关分析如何补充 APM 的相关文章:为什么指标、日志和跟踪还不够]


Elastic Universal Profiling_Universal_03


显示 A/B 测试回归的微分火焰图


2、开发者用例


开发人员现在可以衡量每个已部署变更的性能(获得或损失)、云成本和碳足迹影响,这在历史上还是第一次。


弹性通用分析为性能优化、捕获回归、验证版本以及有助于节省云成本和 CO 2排放提供了强大的见解。凭借识别内核和用户空间级别的数据结构、内存分配和代码执行问题的洞察力,开发人员有能力捕获最难以捉摸的问题。这种代码级可见性使开发人员能够回答关键的“什么”和“为什么”问题,例如: 

  • 为什么最近的代码更改会导致特定方法速度减慢? 
  • 最新版本引入了哪些意外的回归,以及如何及时解决这些问题?
  • 与之前的版本相比,新版本在 CPU 消耗、云成本和 CO 2足迹方面有何表现?
  • 如何微调第三方图书馆功能以满足绩效标准,同时与可持续发展目标保持一致? 

借助 Elastic Universal Profiling,开发人员可以专注于创新、优化和交付高效的应用程序,以满足性能、业务和环境可持续性目标。


Elastic Universal Profiling_Elastic_04


通用分析支持 PHP、Python、Java(或任何 JVM 语言)、Go、Rust、C/C++、Zig、Node.js/V8、Ruby 和 Perl。


差异函数视图 - 显示变更的性能、CO 2和成本影响。


三、金融运营用例


Elastic Universal Profiling 为 FinOps 专业人员提供了战略性管理成本所需的见解,使财务决策与绩效需求和可持续发展目标保持一致,使他们能够回答关键问题,例如: 

  • 如何在不影响性能的情况下降低云成本? 
  • 资源利用的趋势是什么?它们如何与我们的可持续发展目标保持一致? 
  • 提高效率并同时带来经济和环境效益的机会在哪里?


总而言之,就像汽车制造商监控装配线上每个组件的成本一样,Elastic Universal Profiling 可以更深入地洞察软件装配线的单位经济性。

通过 Elastic Universal Profiling了解每一行代码(包括您不拥有的代码)如何影响您的销售成本 ( COGS )。


四、关系性能监控的重要性

以下是领先的云安全和管理平台 AppOmni 的首席安全工程师 Mike Brancato 的说法:


计算效率一直是 SRE 和开发人员最关心的问题。然而,在每一行代码都会影响业务 KPI 和环境的时代,人们重新开始重视软件优化。这是由于高效软件的双重好处:它降低了云成本并推动组织实现其ESG目标。 

Elastic Universal Profiling 通过测量三个维度的效率来帮助您运行高效的服务:CPU performance (gained or lost), CO2 emission, and cloud cost.。 Universal Profiling是一种连续、始终在线的全系统分析解决方案,需要零检测、零代码更改和零重启。它通过构建从内核到用户空间本机代码,一直到在更高级别运行时运行的代码的堆栈跟踪,为所有应用程序的运行时行为提供前所未有的代码可见性,使您能够识别性能回归,减少浪费的计算,并更快地调试复杂问题。  

根据客户的评价,AppOmni 的威胁检测团队利用弹性通用分析来磨练其产品工作负载中需要性能增强的领域,特别是在用 Python 和 Go 编写的应用程序中。以下是 AppOmni 首席安全工程师 Mike Brancato 的想法:



使用 Elastic Universal Profiling,我们能够非常快速地识别应用程序中最慢的部分,并针对这些部分进行改进。我们能够轻松快速地部署到生产中,而不会中断现有工作负载。我们的应用程序和其他组件的分析数据可以立即获得,无需包含任何库或对我们的应用程序进行任何修改。



标签:分析,Profiling,Elastic,开发人员,Universal,代码
From: https://blog.51cto.com/u_15812686/8644441

相关文章

  • elasticsearch一些重要的配置参数
    先看一下官网给我们提供的全部的参数配置项官网地址官方文档链接:注意版本是8.1ConfiguringElasticsearch|ElasticsearchGuide[8.1]|Elastic编辑https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html重要(基本)参数ImportantElasticsearchconfigu......
  • ElasticSearch之Force merge API
    使用本方法,可以触发强制合并操作。默认情况下,ElasticSearch会在后台周期性触发合并操作,因此不需要用户刻意使用本方法。使用强制合并的弊端:可能会产生大于5G的segment对象,而ElasticSearch后台自动触发的合并操作会跳过此类大型segment对象。假如定期执行强制合并,将导致快照的......
  • elasticSearch开发者工具聚合查询
    index/_searchPOST//index索引{"query":{"bool":{"filter":[//过滤条件{"term":{"business.keyword":{"value":"值",......
  • elasticsearch集群
    一、elasticsearch集群结构介绍单机的elasticsearch做数据存储,必然面临两个问题:海量数据存储问题、单点故障问题。海量数据存储问题:将索引库从逻辑上拆分为N个分片(shard),存储到多个节点,每个节点存放在一个服务器上单点故障问题:将分片数据在不同节点备份(replica),例如:0号分片的数据保存......
  • Windows 下使用 curl 连接 Elasticsearch 的常见问题与解决方法
    在Windows下使用curl连接Elasticsearch:解决常见问题引言Elasticsearch是一个强大的分布式搜索引擎,而在Windows操作系统下,使用curl工具与Elasticsearch进行交互时,可能会遇到一些常见的问题。本文将介绍这些问题,并提供解决方法,以确保您可以顺利地连接和与Elasticsear......
  • elasticsearch在Java中查询指定列的方法
     背景ES在查询时如果数量太多,而每行记录包含的字段很多,那就会导致超出ES的查询上线,默认是100MB,但是很多场景下我们只需要返回特定的字段即可,那么如何操作呢。主要代码@AutowiredprivateRestHighLevelClientclient;publicList<Map<String,Object>>search(Stringindex){......
  • ElasticSearch搜索结果处理
    一、排序elasticsearch支持对搜索结果排序,默认是根据相关度算分(_score)来排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。1.1.语法说明:对结果的排序语法如下:GET/indexname/_search{"query":{"match_all":{}},"sort":[{"......
  • ElasticSearch之线程池
    ElasticSearch节点可用的CPU核的数量,通常可以交给ElasticSearch来自行检测和判定,另外可以在``elasticsearch.yml`中显式指定。样例如下:node.processors:2如下表格中的processors即CPU核的数量。线程池的列表线程池名称类型线程数量队列长度用途genericscaling......
  • ElasticSearch之cat nodes API
    命令样例如下:curl-XGET"https://localhost:9200/_cat/nodes?v=true&pretty"--cacert$ES_HOME/config/certs/http_ca.crt-u"elastic:ohCxPH=QBE+s5=*lo7F9"执行结果输出如下:ipheap.percentram.percentcpuload_1mload_5mload_15mnode.role......
  • ElasticSearch之cat nodeattrs API
    命令样例如下:curl-XGET"https://localhost:9200/_cat/nodeattrs?v=true&pretty"--cacert$ES_HOME/config/certs/http_ca.crt-u"elastic:ohCxPH=QBE+s5=*lo7F9"执行结果输出如下:nodehostipattrvalu......