v1.5.0
Highlights
Kubernetes: add support for pod matching based on labels by @msvechla
This change adds a new selector property k8s_pod_labels
to the discovery.services
configuration section. This selector property will limit the instrumentation to the applications running in the Pods having labels with matching keys and values.
Kudos for @msvechla for its contribution.
Direct generation of span metrics and service graph metrics
Beyla 1.5 can generate application metrics in span metrics/service graph format directly, replicating how metrics are derived from application traces. This allows for better support and integration with products which rely on span metrics, such as Grafana Cloud Application Observability, where the application traces are sampled, and therefore the span metrics are inaccurate.
To enable span or service graph metrics, add the application_span
or application_service_graph
values to the BEYLA_OTEL_METRICS_FEATURES
or BEYLA_PROMETHEUS_FEATURES
configuration properties. Check the Beyla configuration documentation for more details.
Some improvements in network metrics generation
⚠️ Network metrics is still an experimental feature under active development. Expect breaking changes
in future Beyla versions.
Network metrics now can be exported as Prometheus, as an alternative to OpenTelemetry. To enable it, just set the BEYLA_PROMETHEUS_PORT
configuration value when BEYLA_NETWORK_METRICS
is enabled.
You can filter metrics by Internet protocol. For example, you could restrict the network metrics only to UDP
traffic. The BEYLA_NETWORK_PROTOCOLS
and BEYLA_NETWORK_EXCLUDE_PROTOCOLS
will let you enumerate which protocols to accept
or exclude.
To reduce cardinality of Network metrics, either in Prometheus or OpenTelemetry, Beyla will stop reporting the network metrics between two endpoints when there is unobserved traffic between both endpoints during 5 minutes. You can override the default 5-minutes value with the BEYLA_OTEL_METRICS_TTL
or BEYLA_PROMETHEUS_TTL
configuration options. This feature is not yet available for application-level metrics.
Finally, the following attributes can be now added to the network metrics: src.port
, dst.port
and transport
.
Check documentation for more configuration details.
Fixing long response tracking
Fixed a bug present in previous versions of Beyla, that prevented Beyla from properly measuring the response time of long responses
(for example, a data stream or downloading a large file).
Complete cahngelog
Bug fixes 🐛
- Fix Go http/grpc bad data by @grcevski in #751
- Grafana: fix metric names for dashboard by @marevers in #678
- Fix hardcoded offsets for http2 context propagation by @grcevski in #676
- Grafana: fix response code labels for dashboard by @marevers in #689
- Better client detection for kprobes by @grcevski in #688
- Read the Go server connection info reliably by @grcevski in #716
- Getting rid of K8s library warning messages by @mariomac in #734
Other changes/additions
- Better way to inject headers in gRPC by @grcevski in #672
- Remove stray debug code by @grcevski in #687
- Fix traces receiver for Grafana Agent by @marctc in #690
- Update cilium library to v0.13.2 by @mariomac in #685
- Add support for pod matching based on labels by @msvechla in #694
- Increase Refresh Interval in Sample Dashboard by @SeamusGrafana in #701
- OTEL exporter: separate metrics by features by @mariomac in #697
- Fix Spans ID creation for OTEL Traces receiver by @marctc in #703
- Make prometheus registry configurable by @marctc in #702
- Revert cilium lib to 0.12.3 by @mariomac in #705
- NetO11y: refactor attributes filter to be prometheus-ready by @mariomac in #704
- Move transform package to pkg directory by @marctc in #706
- RED Metrics Dashboard now supports multiple metric names by @mariomac in #707
- Track black box multi network interface by @grcevski in #698
- Prometheus exporter for network metrics by @mariomac in #708
- Document Network Prometheus exporter by @mariomac in #712
- Add support for tracking properly large responses by @grcevski in #710
- Reduce size of the http2 code by @grcevski in #711
- Automatic update of offsets.json by @github-actions in #714
- Link to rendered tutorial docs rather than the source files by @fstab in #686
- Network metrics: prometheus expirer by @mariomac in #715
- Automatic update of offsets.json by @github-actions in #719
- Helm chart by @khushijain21 @wasim-nihal in #642
- Update Go version to 1.22 + update and fix linters by @mariomac in #674
- Change Agent to Alloy by @grafsean in #727
- Add network ports as available attributes in network observability by @grcevski in #724
- Rename Grafana Agent to Alloy in code by @marctc in #728
- Automatic update of offsets.json by @github-actions in #726
- Network metrics agent without using the Traffic Control ebpf interface by @grcevski in #721
- Change Go to use net.FD for peer and host by @grcevski in #725
- Add option for direct Beyla spanmetric generation by @grcevski in #731
- Add instrumentation for
sql.Exec
by @marctc in #733 - Implement prometheus scrape span metrics by @grcevski in #735
- Remove gin specific instrumentation by @grcevski in #738
- Update unprivileged documentation to require NET_RAW by @dashpole in #730
- Allow customizing the base path and don't mount the BPF fs if it is already mounted by @dashpole in #741
- Updated the pipes library by @mariomac in #736
- Support transport protocol as network metric attribute by @mariomac in #744
- Finish K8s informers when the context is cancelled by @mariomac in #747
- Makefile: automatically update prereq binaries after version changes by @mariomac in #748
- Support network metrics in helm chart by @mariomac in #743
- Network metrics: Expire old metrics for OTEL exporter by @mariomac in #720
- Add example of Kubernetes instrumentation with Alloy by @marctc in #750
- Shorten K8s integration tests time by @mariomac in #749
- update network metrics pipeline doc by @mariomac in #756
- Added more descriptive failing messages to flaky integration test by @mariomac in #755
- Network metrics: filter by transport protocol by @mariomac in #752
- Update helm chart Beyla version by @mariomac in #754
- Add support for directly generating span graphs by @grcevski in #745
- Document protocols filter by @mariomac in #753
New Contributors
- @marevers made their first contribution in #678
- @msvechla made their first contribution in #694
- @SeamusGrafana made their first contribution in #701
- @khushijain21 made their first contribution in #642
- @dashpole made their first contribution in #730
Full Changelog: v1.4.1...v1.5.0