基于 eBPF 的 HTTP/HTTPS/GRPC GO 服务的自动检测,以及用其他语言编写的 HTTP/HTTPS 服务(拦截内核级套接字操作以及 OpenSSL 调用)。
要试用 Beyla,你需要运行网络服务让 Beyla 进行检测。Beyla 支持多种编程语言(Go、Java、.NET、NodeJS、Python、Ruby、Rust 等),所以如果你已经有一个示例服务,你可以使用它。如果没有示例,可以从目录下载并运行:
example-http-service.go
examples/
curl -OL https://raw.githubusercontent.com/grafana/beyla/main/examples/example-http-service/example-http-service.go go run ./example-http-service.go
接下来,生成一些流量。以下命令将触发一个 GET 请求,每两秒 http://localhost:8080 一次。
watch curl -s http://localhost:8080
现在我们已经运行了一个示例,我们可以下载并运行 Beyla。
首先,从 Github 发布页面下载并解压缩最新版本。该版本应包含可执行文件。
./beyla
Beyla 支持多种方式查找要检测的服务(按网络端口、可执行文件名称、进程 ID)和多种公开格式(Prometheus、OpenTelemetry 指标、单跨度跟踪)。
首先,我们将告诉 Beyla 检测在端口 8080(我们的示例服务)上运行的服务,并在端口 9400 上以 Prometheus 格式公开指标。
export BEYLA_PROMETHEUS_PORT=9400 export OPEN_PORT=8080 sudo -E ./beyla
现在,你应该会看到有关 http://localhost:9400/metrics 的指标。
SYS_ADMIN
CONFIG_DEBUG_INFO_BTF编译
)图书馆 | 加工 |
---|---|
内核级 HTTP 调用 | ✅ |
开放SSL库 | ✅ |
标准net/http |
✅ |
大猩猩穆克斯 | ✅ |
琴酒 | ✅ |
gRPC-Go | ✅ |
你可以触发文件夹中的 Kubernetes 描述符。
deployments/
提供你的格拉法纳凭据。使用以下 K8s 秘密模板介绍 Mimir 和 Tempo 的端点、用户名和 API 密钥:
$ cp deployments/01-grafana-credentials.template.yml 01-grafana-credentials.yml $ # EDIT the fields $ vim 01-grafana-credentials.yml $ kubectl apply -f 01-grafana-credentials.yml
部署 Grafana 代理:
kubectl apply -f deployments/02-grafana-agent.yml
部署演示应用,将自动检测器作为挎斗。可以在 deployments/03-instrumented-app.yml 文件中使用博客示例。
$ kubectl apply -f ./deployments/03-instrumented-app.yml $ kubectl port-forward service/goblog 8443:8443
你应该能够在 Grafana 板中查询跟踪和指标。
eBPF 程序嵌入到生成的文件中。通常不需要此步骤,除非你更改文件夹中的 C 代码。
pkg/internal/ebpf/bpf_*
bpf
如果你安装了 Docker,则只需运行:
make docker-generate
如果无法安装 docker,则应在本地安装以下必需的包:
dnf install -y kernel-devel make llvm clang glibc-devel.i686 make generate
在Fedora 35、38和Red Hat Enterprise Linux 8中测试。
部分代码取自:https://github.com/open-telemetry/opentelemetry-go-instrumentation