Grafana Beyla
eBPF应用程序自动打标
要对应用程序进行仪表化以获取指标和跟踪,通常需要在应用程序部署/包中添加语言代理。在某些编译型语言,如Go或Rust中,您必须手动将跟踪点添加到代码中。
Grafana Beyla是一个基于eBPF的应用程序自动仪表化工具,可轻松入门应用程序可观察性。Beyla使用eBPF自动检查应用程序可执行文件和OS网络层,并捕获与Web事务和相关指标(如Linux HTTP/S和gRPC服务的Retail Errors Duration(RED))相关的跟踪跨度。所有数据捕获均不修改应用程序代码或配置。
Beyla提供以下功能
- 自动为各种编程语言编写的应用程序进行仪表化,例如:Go、C/C++、Rust、Python、Ruby、Java(包括GraalVM Native)、NodeJS、.NET等
- 高效仪表化和低开销的数据捕获,即使是编译型代码也有效
- 以OpenTelemetry格式和原生Prometheus指标进行供应商无关的数据导出
- 为Go服务提供分布式跟踪
- 在任意Linux环境中运行
- 监听Kubernetes API,以装饰Pod和服务元数据
- 为已使用Grafana Alloy的客户提供简单的设置
要求
- 具有BPF类型格式(BTF)启用,版本5.8或更高版本的Linux内核。大多数Linux发行版从内核5.14开始,BTF默认启用了。您可以通过检查系统上是否存在
/sys/kernel/btf/vmlinux
来验证您的内核是否启用了BTF。如果您需要重新编译内核以启用BTF,则必须设置配置选项CONFIG_DEBUG_INFO_BTF=y
。 - 在主机上启用eBPF。
- 对于Go程序的仪表化,它们必须使用至少Go 1.17编译。我们目前支持使用主要版本构建的Go应用程序,该版本不早于当前稳定的主要版本低于3个版本。
- 对执行Beyla具有管理访问权限。
入门
遵循特定语言的快速入门指南,了解如何设置Beyla以仪表化特定语言编写的应用程序。
遵循设置文档,以独立服务、使用Docker或Kubernetes的方式开始使用Beyla。
遵循教程,了解如何使用Beyla对应用程序进行仪表化并将数据发送到Grafana云。