opentelemetry-ebpf-instrumentation

module
v0.0.0-...-2d5ea0e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 21, 2025 License: Apache-2.0

README

OpenTelemetry eBPF Instrumentation

This repository provides eBPF instrumentation based on the OpenTelemetry standard. It provides a lightweight and efficient way to collect telemetry data using eBPF for user-space applications.

OpenTelemetry e-BPF Instrumentation is commonly referred to as OBI.

🚧 This project is currently work in progress.

How to start developing

Requirements:

  • Docker
  • GNU Make
  1. First, generate all the eBPF Go bindings via make docker-generate. You need to re-run this make task each time you add or modify a C file under the bpf/ folder.
  2. To run linter, unit tests: make fmt verify.
  3. To run integration tests, run either:
make integration-test
make integration-test-k8s
make oats-test

, or all the above tasks. Each integration test target can take up to 50 minutes to complete, but you can use standard go command-line tooling to individually run each integration test suite under the test/integration and test/integration/k8s folder.

Contributing

See CONTRIBUTING

License

OpenTelemetry eBPF Instrumentation is licensed under the terms of the Apache Software License version 2.0. See the license file for more details.

Directories

Path Synopsis
cmd
configs
examples
pkg
components/appolly
Package appolly provides public access to eBPF application observability as a library
Package appolly provides public access to eBPF application observability as a library
components/connector
Package connector provides tools for sharing the connection of diverse exporters (Prometheus, OTEL...) from different nodes
Package connector provides tools for sharing the connection of diverse exporters (Prometheus, OTEL...) from different nodes
components/ebpf/ringbuf
Package ringbuf provides some type aliases to prevent testing/compilation errors in non-linux environments due to the use of Cilium's ringbuf package, which is only available on Linux.
Package ringbuf provides some type aliases to prevent testing/compilation errors in non-linux environments due to the use of Cilium's ringbuf package, which is only available on Linux.
components/ebpf/tcmanager
line below avoids linter errors on Mac
line below avoids linter errors on Mac
components/exec
Package goexec provides the utilities to analyze the executable code
Package goexec provides the utilities to analyze the executable code
components/goexec
Package goexec provides the utilities to analyze the executable code
Package goexec provides the utilities to analyze the executable code
components/helpers/container
Package container provides helper tools to inspect container information
Package container provides helper tools to inspect container information
components/imetrics
Package imetrics supports recording and submission of internal metrics from Beyla
Package imetrics supports recording and submission of internal metrics from Beyla
components/rdns/ebpf/xdp
Package xdp provides DNS message parsing functionality for the XDP-based DNS response tracker.
Package xdp provides DNS message parsing functionality for the XDP-based DNS response tracker.
components/split
Package split provides an Iterator that allows for zero-copy string splitting.
Package split provides an Iterator that allows for zero-copy string splitting.
config
Package config contains some configuration options that need to be in a public package to let Alloy accessing them
Package config contains some configuration options that need to be in a public package to let Alloy accessing them
export/attributes/names
Package attr contains definition of the attribute names of for the metrics, especially for the metrics whose reported attributes are selected in the attributes.select YAML option
Package attr contains definition of the attribute names of for the metrics, especially for the metrics whose reported attributes are selected in the attributes.select YAML option
export/debug
Package debug provides some export nodes that are aimed basically at debugging/testing
Package debug provides some export nodes that are aimed basically at debugging/testing
export/otel
TODO: remove this after batching API becomes stable
TODO: remove this after batching API becomes stable
export/otel/metric/components/x
Package x contains support for OTel metric SDK experimental features.
Package x contains support for OTel metric SDK experimental features.
kubecache/meta/cni
This implementation is a derivation of the code in https://github.com/netobserv/netobserv-ebpf-agent/tree/release-1.4
This implementation is a derivation of the code in https://github.com/netobserv/netobserv-ebpf-agent/tree/release-1.4
obi
pipe/msg
Package msg provides tools for message passing and queues between the different nodes of the Beyla pipelines.
Package msg provides tools for message passing and queues between the different nodes of the Beyla pipelines.
pipe/swarm
Package swarm provides tools for the creation and coordination of the nodes that go inside the different Beyla pipelines
Package swarm provides tools for the creation and coordination of the nodes that go inside the different Beyla pipelines
transform
Package transform provides some intermediate nodes that might filter/process/transform the events
Package transform provides some intermediate nodes that might filter/process/transform the events
test
cmd/grpc/client
Package main implements a simple gRPC client that demonstrates how to use gRPC-Go libraries to perform unary, client streaming, server streaming and full duplex RPCs.
Package main implements a simple gRPC client that demonstrates how to use gRPC-Go libraries to perform unary, client streaming, server streaming and full duplex RPCs.
cmd/grpc/server
Package main implements a simple gRPC server that demonstrates how to use gRPC-Go libraries to perform unary, client streaming, server streaming and full duplex RPCs.
Package main implements a simple gRPC server that demonstrates how to use gRPC-Go libraries to perform unary, client streaming, server streaming and full duplex RPCs.
collector
Package collector implements a test OTEL collector to use in unit tests
Package collector implements a test OTEL collector to use in unit tests
integration/components/docker
Package docker provides some helpers to manage docker-compose clusters from the test suites
Package docker provides some helpers to manage docker-compose clusters from the test suites
integration/components/jaeger
Package jaeger provides some convenience data structures for integration testing.
Package jaeger provides some convenience data structures for integration testing.
integration/components/kube
Package kube contains some tools to setup and use a Kind cluster
Package kube contains some tools to setup and use a Kind cluster
integration/components/prom
Package prom provides some convenience functions for prometheus handling in integration tests
Package prom provides some convenience functions for prometheus handling in integration tests
integration/components/testserver/grpc/client
Package grpcclient implements a simple gRPC client that demonstrates how to use gRPC-Go libraries to perform unary, client streaming, server streaming and full duplex RPCs.
Package grpcclient implements a simple gRPC client that demonstrates how to use gRPC-Go libraries to perform unary, client streaming, server streaming and full duplex RPCs.
integration/components/testserver/grpc/server
Package main implements a simple gRPC server that demonstrates how to use gRPC-Go libraries to perform unary, client streaming, server streaming and full duplex RPCs.
Package main implements a simple gRPC server that demonstrates how to use gRPC-Go libraries to perform unary, client streaming, server streaming and full duplex RPCs.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL