github grafana/beyla v1.3.1
Beyla v1.3.1

latest releases: v1.8.4, v0.0.7-pre, v1.8.4-alpha...
6 months ago

Highlights

⚠️ Breaking change: update metric collection names to stable HTTP spec

We have updated the metrics collection names to the stable HTTP spec for OpenTelemetry. This change also
applies to our Prometheus metrics exporter: https://github.com/open-telemetry/semantic-conventions/blob/main/docs/http/http-metrics.md

Users should update their dashboards, alerts, etc, from the following old to the following new names.

Old Prometheus metric names:

  • http_server_duration_seconds
  • http_client_duration_seconds
  • http_server_request_size_bytes
  • http_client_request_size_bytes

Old OTEL metric names:

  • http.server.duration
  • http.client.duration
  • http.server.request.size
  • http.client.request.size

New Prometheus metric names:

  • http_server_request_duration_seconds
  • http_client_request_duration_seconds
  • http_server_request_body_size_bytes
  • http_client_request_body_size_bytes

New OTEL metric names:

  • http.server.request.duration
  • http.client.request.duration
  • http.server.request.body.size
  • http.client.request.body.size

Fixed Kubernetes integration for GKE and other distributions

The way GKE internally stored the container IDs in the /proc filesystem was not recognized by
Beyla. In consequence, Beyla was not able to match process/container low-level information
with high-level Kubernetes metadata.

This could also happen with other Kubernetes distributions.

Native histograms for Prometheus

For Prometheus, native histograms are enabled if you
enable the native-histograms feature in your Prometheus collector.

Exponential histograms for OpenTelemetry

For OpenTelemetry you can use exponential histograms
for the predefined histograms instead of defining the buckets manually. You need to set up the standard
OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION
environment variable. See the Beyla documentation for more information.

Improved memory usage

Under some high-load scenarios (a single Beyla instance instrumenting 80 containers), the virtual memory space
was in the order of GigaBytes.

In the test results, the virtual memory (container_memory_usage_bytes and container_memory_working_set_bytes)
decreased from 155MiB to 84MiB on 1 container instrumentation, and 3.5GiB to 338MiB when load tested with about 80 containers.

RSS (container_memory_rss) didn't change much. About 75MiB with 1 container and 206MiB when load tested.

Full changelog

Breaking changes 🔨

  • Update metric collection names to stable HTTP spec by @grcevski in #598

Bug fixes 🐛

  • Support DaemonSet and StatefulSet in discovery and decoration by @mariomac in #571
  • Fixed gRPC 1.61 offsets and updated go.mod versions by @mariomac in #609

Other changes/additions

  • Detect trace conflicts in Kprobe context propagation by @grcevski in #557
  • K8s tutorial: add extra steps for trace visualization by @mariomac in #561
  • Track clones for context propagation by @grcevski in #560
  • Add support for tracking http2 client and server requests by @grcevski in #568
  • Prometheus exporter: add k8s_replicaset_name, k8s_daemonset_name and k8s_statefulset_name attributes by @mariomac in #574
  • Update K8s documentation with the daemonset/replicaset/statefulset selectors and labels by @mariomac in #575
  • Removing BEYLA_SYSTEM_WIDE advicing from error logs by @mariomac in #577
  • Improve Docker container ID parsing from /proc/pid/cgroup by @mariomac in #578
  • Fix publish-technical-documentation-release workflow for tag events by @jdbaldry in #583
  • Catch pids that are off a parent and not quite ready by @grcevski in #581
  • Add fallback to no kretprobes by @grcevski in #582
  • Reorganizing Beyla configuration packages by @mariomac in #584
  • Propagate context in http2 by @grcevski in #585
  • Black-box context propagation for go by @grcevski in #587
  • doc update for readOnlyRootFilesystem by @esara in #594
  • Disable http2 context prop test by @grcevski in #596
  • Added http route to client attributes by @vgnanasekaran in #597
  • Fix check for context propagation support by @myhro in #600
  • Add route to client requests for promscrape and tests by @grcevski in #599
  • Compile as statically linked binary by @myhro in #601
  • Add Vale workflow to lint prose on added/modified lines by @jdbaldry in #604
  • parse containerid for a pid from cgroup as a hex chain by @esara in #589
  • Synchronize bpf2go in makefile with version in go.mod by @mariomac in #610
  • update ebp-generator image to ubuntu by @mariomac in #613
  • Add docs for running unprivileged in k8s by @grcevski in #611
  • Announce the community call by @grcevski in #616
  • Switch to sys_bind to support more platforms by @grcevski in #615
  • Add support for native/exponential histograms by @marctc in #614
  • Don't cleanup prematurely by @grcevski in #619
  • Fix generator-build-image makefile task by @mariomac in #624
  • Network flows metrics by @mariomac in #586
  • Temporary workaround for unsupported DWARF location types by @mariomac in #626
  • Reduce BPF memory consumption by @grcevski in #620
  • Exposing beyla_build_info metric in Prometheus exporter by @mariomac in #627
  • Fix integration tests' coverage data by @mariomac in #631
  • Fixing coverage report in K8s tests by @mariomac in #633
  • Fix docs links and build warnings by @grafsean in #636
  • Replace BEYLA_OTEL_USE_EXPONENTIAL_HISTOGRAMS by standard env var by @mariomac in #635
  • Fix missing go_trace_map cleanup by @grcevski in #638
  • Fixing network metrics' bytes and adding some useful fields by @mariomac in #641
  • switch maps to LRU to mitigate failed retprobes by @grcevski in #643
  • Added Marc to code owners and maintainers lists by @mariomac in #647

New Contributors

Full Changelog: v1.2.1...v1.3.1

Don't miss a new beyla release

NewReleases is sending notifications on new releases.