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 🔨
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
- @esara made their first contribution in #594
- @vgnanasekaran made their first contribution in #597
- @marctc made their first contribution in #614
Full Changelog: v1.2.1...v1.3.1