Grafana Beyla 概览
Grafana Beyla 是一个 OSS 项目,支持对使用 Go、C/C++、Rust、Python、Ruby、Java(包括 GraalVM Native)、NodeJS、.NET 等语言编写的 HTTP/gRPC 应用程序进行自动插桩。它基于 eBPF,允许您将自己的程序附加到 Linux 内核的不同点。
通常,对应用程序进行可观测性插桩需要将语言代理添加到部署或软件包中,手动添加追踪点,然后重新部署。使用 Beyla,您可以通过单个命令对所有服务进行插桩,无需修改源代码。
Beyla 由 Grafana Labs 启动并于 2023 年发布。该项目的使命是通过利用 eBPF 帮助用户快速开始应用可观测性。收集到的遥测数据可以与 Grafana Labs LGTM 技术栈(Loki 用于日志,Grafana 用于可视化,Tempo 用于追踪,Mimir 用于指标)中的后端和基础设施数据关联,从而提供无缝、全栈的开源可观测性解决方案。
Grafana Labs 很荣幸领导 Grafana Beyla 项目的开发,将对 Beyla 的一流支持构建到 Grafana 中,并确保 Grafana Labs 用户按需获得 Beyla 支持和应用可观测性功能。
为什么要使用 Grafana Beyla?
Grafana Beyla 如何实现 eBPF 自动插桩?

什么是 eBPF?
eBPF 技术允许将程序附加到 Linux 内核的不同点。eBPF 程序在特权模式下运行,可以检查内核不同部分的运行时信息:系统调用、网络栈,甚至可以在用户空间程序中插入探针。
eBPF 程序是安全的,因为它们会被编译为其自己的虚拟机指令集,然后在沙盒环境中运行,沙盒环境会预先验证每个加载的程序,确保安全的内存访问和有限的执行时间。
验证后,eBPF 二进制文件会被即时 (JIT) 编译为主机原生架构(x86-64、ARM64 等),以实现高效快速的执行。
eBPF 代码从用户空间中运行的普通程序加载,内核和用户空间程序都可以通过 eBPF 规范提供的一系列通信机制共享信息:环形缓冲区、数组、哈希映射等。

基于开源,社区驱动
我们很高兴与开源社区分享我们的学习成果并共同开发这款易于使用的自动插桩应用可观测性工具。