什么是Grafana Beyla?

Grafana Beyla是一个开源的基于eBPF的自动检测工具,可以帮助您轻松开始Go、C/C++、Rust、Python、Ruby、Java、NodeJS、.NET等多个语言的程序的可观察性。

通用基础核心网络连接协议 (uBPF) 用来捕获 RED 指标(速率-错误-持续时间)以及 Linux HTTP/S 和 gRPC 服务的基本跟踪跨度 - 无需对应用程序代码或配置进行任何修改。

阅读公告博客文章

Grafana Beyla 概览

Grafana Beyla 是一个开源项目,它为使用 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?

graph icon
从您的 Web 服务和客户端实时获取 RED 指标和跟踪。
computer chip icon
与任何 Linux 环境兼容,包含 5.8 以上的内核。
hierarchy icon
以 OpenTelemetry 格式和原生 Prometheus 指标导出标准 RED 指标和跟踪。
programming book icon
与所有版本的编程语言兼容,包括不被 OTel 或 Prometheus SDK 支持的语言。
programming monitor icon
支持广泛的编程语言 - Go、Java、.NET、NodeJS、Python、Ruby、Rust 和更多。
automatic instrumentation icon
无需更改代码即可自动工具化。
microchip board icon
与其他经典工具库相比,可以提高解释语言在 CPU 和内存使用方面的效率。
programming search browser icon
内置对 Kubernetes 元数据的支持,更轻松地识别哪些资源出错。

Grafana Beyla 如何在 eBPF 自动工具化方面工作?

Architecture diagram of Application Observability configurations in Grafana Cloud.
1
Beyla 检查在 Linux 上运行的应用程序,以确定该应用程序中使用了哪些技术。
2
在确定应用程序特征后,该工具激活一系列战略性放置以捕获应用程序接收或发送的 HTTP/gRPC 流量的 eBPF uprobes 和 kprobes。
3
使用 uprobes/kprobes,Beyla 生成与 HTTP/gRPC 流量相关的应用程序事件,然后将其转换为以 OpenTelemetry 指标和跟踪的形式导出。
4
OpenTelemetry 指标和跟踪可以发送到配置为 Flow 模式的 Grafana Agent 实例,然后在其中丰富并将其发送到如 Grafana Tempo(用于跟踪)和 Grafana Mimir(用于指标)等 OSS 数据库。
5
最简单的方法是使用 Grafana Agent 并以 Flow 模式配置 Beyla,将您的指标和跟踪发送到 Grafana Cloud 中的应用程序可观测性解决方案,在那里可以将其可视化在预构建仪表板中,并与您的其他遥测数据进行关联。

什么是 eBPF?

eBPF 技术允许将程序附加到 Linux 内核的不同点。eBPF 程序在特权模式下运行,允许从内核的不同部分获取运行时信息:系统调用、网络栈以及甚至可以在您的用户空间程序中插入探针。

eBPF 程序是安全的,因为它们是为自己的虚拟机指令集编译的,然后可以在预验证每个加载的程序以安全内存访问和有限执行时间的安全沙盒环境中运行。

经过验证后,eBPF 二进制文件会即时编译到宿主原生架构(x86-64、ARM64 等)以实现高效快速执行。

eBPF 代码从用户空间运行的普通程序中加载,内核和用户空间程序可以通过 eBPF 规范提供的一套通信机制共享信息:环形缓冲区、数组、哈希表等。

Diagram showing how eBPF instrumentation works.

基于开源,由社区推动

我们很激动能与开源社区分享我们的学习成果,并共同开发这款易于使用的自动化应用程序可观察性工具。

遇见 Beyla 贡献者

与这些杰出的人一起工作

在 Grafana Cloud 上开始应用程序可观察性之旅