什么是 Grafana Beyla?

Grafana Beyla 是一款基于 eBPF 的开源自动插桩工具,可帮助您轻松开始对 Go、C/C++、Rust、Python、Ruby、Java、NodeJS、.NET 等应用程序进行可观测性检测。

eBPF 用于捕获 Linux HTTP/S 和 gRPC 服务的 RED 指标(速率-错误-持续时间)和基本追踪 span,无需修改应用程序代码或配置。

阅读公告博客文章

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?

graph icon
从您的 Web 服务和客户端获取即时 RED 指标和追踪。
computer chip icon
兼容内核版本高于 5.8 的任何 Linux 环境。
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
识别应用程序特征后,该工具会激活多个 eBPF uprobes 和 kprobes,这些探针经过策略性部署,以捕获应用程序接收或发送的 HTTP/gRPC 流量信息。
3
使用 uprobes/kprobes,Beyla 生成与应用程序 HTTP/gRPC 流量相关的事件,然后将其转换为 OpenTelemetry 指标和追踪并导出。
4
OpenTelemetry 指标和追踪可以发送到配置为 Flow 模式的 Grafana Agent 实例,在那里它们会被丰富并发送到 OSS 数据库,例如用于追踪的 Grafana Tempo 和用于指标的 Grafana Mimir。
5
最简单的入门方法是将 Beyla 与 Grafana Agent 在 Flow 模式下配置,将您的指标和追踪发送到 Grafana Cloud 中的应用可观测性解决方案,在那里您可以在预构建的仪表盘中将其可视化并与您的其他遥测数据关联。

什么是 eBPF?

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

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

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

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

Diagram showing how eBPF instrumentation works.

基于开源,社区驱动

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

认识 Beyla 的贡献者

与像他们一样优秀的人一起工作

开始在 Grafana Cloud 上使用应用可观测性