一个非侵入式跟踪分析程序

news/2024/9/22 7:23:53

      otel-profiling-agent为elastic开源项目,用于对生产环境中的应用程序进行性能分析,帮助开发者理解程序的运行情况,识别瓶颈,优化性能。用于包括CPU和内存使用情况的分析、调用跟踪、性能指标收集等功能。它是一个用于Linux的全系统、跨语言的性能分析器,通过eBPF(Extended Berkeley Packet Filter)实现,eBPF 起初是为了网络数据包过滤而设计的,但其功能已经大幅扩展,现在它可以用于各种内核子系统,包括但不限于网络、安全、性能监控、系统跟踪和诊断等。
      根据官方描述其有如下特点:
1、CPU和内存占用极低(测试中上限为1% CPU和250MB内存)。
2、支持原生C/C++程序,无需DWARF调试信息。
3、支持无框架指针和无主机调试符号的系统库分析。
4、支持混合堆栈跟踪,从内核空间到高级语言。
5、支持多种语言的原生代码分析,无需主机上的调试符号。
6、支持广泛的高级语言(HLLs),如JVM、Python、Ruby、PHP、Node.js、V8、Perl等,.NET正在准备中。
7、100%非侵入性,无需在被分析的进程中加载代理或库。
不需要重新配置、仪器化或重启HLL解释器和VM,代理支持在默认配置中展开每种支持的语言。
8、支持原生inline frames,提供编译器优化的洞察并提供更高精确度的函数调用链。

现有实现

      有了它在对Java程序进行性能分析时就可以在极低的性能损失下进行,目前的Java程序性能分析/跟踪实现都是基于Java Agent方案实现的。基于Java Agent是在对的程序侵入性下进行的,侵入性意味着对程序可能会照成比较大影响代码逻辑、性能、系统资源等,还可能因为该程序的漏洞导致生产程序出现安全性问题。
      在基于Java Agent的方案下分析/跟踪Java程序的性能损失极端情况下可能达到10%或导致程序崩溃,这对生产环境下的程序影响比较大。
      而otel-profiling-agent可以在极低资源占用下实现对Java程序进行非侵入式的跟踪分析。

使用

      官方并没有提供编译好的otel-profiling-agent文件,如想尝试可自己编译该项目生成二进制文件。除了源码编译外官方还提供了基于Docker镜像的编译文件,可使用Docker编译减少编译环境导致的问题。
      编译完成后可运行如下指令:

sudo ./otel-profiling-agent -collection-agent=127.0.0.1:11000 -disable-tls

1.png

      注意,运行上面指令需要先开启一个采集器代理用于接收otel-profiling-agent上报的监控数据,如没有启动代理该程序无法启动。官方提供了devfiler桌面应用程序用于通过火焰图可视化采集数据。

2.png
collection-agent所接收的数据

3.png
devfiler可视化

      启动程序即可通过采集器观察到otel-profiling-agent所上报的数据。otel-profiling-agent为一个gRPC客户端程序,采集器为一个gRPC服务端程序。
      由于otel-profiling-agent刚开源,目前相关周边生态支持还不够完善,官方提供了一个devfiler桌面应用程序,用于本地可视化代理输出的工具。opentelemetry-collector对otel-profiling-agent也还没有支持。目前官方正在筹备将其捐赠给OpenTelemetry基金会。

仓库地址:https://github.com/elastic/otel-profiling-agent

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/47142.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

2024CISCN华东南-WEB-gxngxngxn

WEB 差不多2小时就把web给ak了,没想到华东南强度最大的不是题目,而是场地连续8小时的30多度高温(welcomesubmit-BREAKsubmit-FIX 修复点在upload.php <?php // $path = "./uploads"; error_reporting(0); $path = "./uploads"; $name=$_FILES[myfile…

openai开源 shap-e 根据文本或图像生成 3D 模型,支持导入blender

OpenAI开源Shap-E,部署与使用详细教程。文本图片可生成3D动画和建模文件。介绍 github仓库地址:https://github.com/openai/shap-e 技术原理论文:https://arxiv.org/abs/2305.02463 官方生成效果示例:部署安装 打开colab:https://colab.research.google.com/ 新建一个笔记,…

山东大学项目实训-基于LLM的中文法律文书生成系统(十九)- RAG(5)

项目代码解读 # 官方库 import os import shutil import time from datetime import datetime import logging import pickle from glob import glob from typing import List# 第三方库 # langchain库 from langchain.document_loaders import UnstructuredPowerPointLoader, …

GitHub上狂揽62Kstars的程序员做饭指南

写在前面 作为一名程序员,我们经常会在全球最大的同性交友网站 GitHub上寻找一些优质的开源项目来学习,以提升自己的专业技能。 今天给大家推荐的是一个GitHub上狂揽61K⭐⭐的开源项目。项目名叫做HowToCook,只听名字,大家应该能想到这是一个教程序员怎么做饭的项目。 作为一…

VueX Vue: Could not find a declaration file for module vuex.

vuex4.0.2 webstorm报如下错误 Vue: Could not find a declaration file for module vuex.解决办法 在src目录下新建一个vuex.d.ts 文件内容如下 declare module "vuex" {export * from "vuex/types/index.d.ts";export * from "vuex/types/helpers.d…

webstorm vue3+ts报错:Cannot find module ‘@/views/xxx.vue‘ or its corresponding type declarations

意思是说找不到对应的模块“@/views/xxx.vue”或其相应的类型声明因为ts只能解析 .ts 文件,无法解析 .vue文件 解决方法很简单,一开始的时候env.d.ts是空文件(如vite-env.d.ts),我们可以在项目的env.d.ts中引入如下代码: declare module *.vue {import { DefineComponent }…

Dell Latitude 7300 安装 Centos 7.6 保姆级教程

本教程记录通过Windows 10 制作Centos Linux 7.6 并安装到 Dell Latitude 7300 过程。 该教程为覆盖机器原有磁盘数据方式安装,原有系统上所有数据将丢失,如有重要数据请注意备份。下载Centos 7.6 镜像 url : https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/i…

Keepalived 高可用

一、Keepalived1.Keepalived是什么 Keepalived 是一个用于 Linux 系统的开源软件,主要用于实现负载均衡和高可用性服务。它通常用于网络服务的故障转移和故障恢复,特别是在基于 IP 的负载均衡器和虚拟 IP 地址上。以下是 Keepalived 的一些关键特性和功能:虚拟 IP (VIP) 支持…