Beyla 1.7.0 is out with a huge amount of features and bugfixes!
Please check the Beyla documentation for more information about how to configure and enable them: https://grafana.com/docs/beyla/latest/
What's Changed
Breaking changes 🔨
Use proper pre/suffixes for internal metrics names by @marctc in #941
This breaking change would only affect users configuring Beyla to report internal metrics of its own Behavior (mainly used for performance testing and debugging purposes)
Fix typo in BPF debug yaml field by @marctc in #964
Replaces the bfp_debug
configuration option by bpf_debug
. This option is mainly used by Beyla developers for internal debugging.
enable by default: server_address and server_port attributes by @mariomac in #989
The user still has the possibility to disable them by means of the attributes selection YAML section.
Set heuristic as default value for unmatched routes arg by @marctc in #988
The user still has the possibility to disable heuristic routes in the routes
YAML configuration.
Bug fixes 🐛
- check kafka pkt length before parsing clientid by @esara in #906
- Fix race condition in Expiry Map by @mariomac in #946
- Fix OTEL traces URL endpoint by @mariomac in #952
- App metrics/traces: decorate peer service IPs with service names by @mariomac in #968
- Improve .NET language detection by @marctc in #967
- Avoid un-understandable Pipes panics by @mariomac in #1012
- remove client.address as default attribute on RPC metrics by @mariomac in #1022
- Fix missing gRPC/HTTP2 events by @grcevski in #867
Highlighted additions
Reporting application processes
⚠️ This feature is based in the current OpenTelemetry semantic convention for OS Processes, which is currently marked as Experimental. You might expect some breaking changes in the future.
Add application_process
to the BEYLA_OTEL_METRIC_FEATURES
or BEYLA_PROMETHEUS_FEATURES
option to get the following Process metrics:
process.cpu.time
process.cpu.utilization
process.memory.usage
process.memory.virtual
process.disk.io
process.network.io
New supported protocols for Go and Non-Go programs
Beyla now supports the following application protocols for both Go programs:
- Redis
- Kafka
- SQL
Network metrics, new client.port
and server.port
attributes
Network metrics bring src.port
and dst.port
, which would be swapped in request and response network metrics. client.port
and server.port
remain consistent for both request and response network metrics.
Other changes/additions
- Remove check-ebpf-integrity from release_binaries task (1.6 backport) by @mariomac in #850
- Remove check-ebpf-integrity from release_binaries task by @mariomac in #849
- Update OpenTelemetry SDK to 1.27 by @mariomac in #853
- Fix array index panic on SQL parsing (1.6 backport) by @mariomac in #856
- Fix array index panic on SQL parsing by @mariomac in #855
- Change the PID filter implementation to use bloom filter by @grcevski in #851
- Track connection errors in grpc_go by @grcevski in #852
- Fix attributes filter network documentation by @mariomac in #861
- Improve http2/grpc termination detection by @grcevski in #858
- Restore service.name as metric attribute by @mariomac in #868
- Update default Beyla version in helm chart by @mariomac in #862
- Add config options for traces backoff config by @marctc in #865
- Update Gopsutil library to v3 by @mariomac in #884
- Update
make docs
procedure by @github-actions in #888 - Initial infrastructure for dealing with Kafka protocol in Go by @grcevski in #886
- Fix http parsing for duplicate HTTP by @grcevski in #887
- Updating image version in documentation by @mariomac in #866
- Add support for tracking Redis client calls for non-Go programs by @grcevski in #891
- Add instrumentation for redis in Go by @grcevski in #894
- Automatic update of offsets.json by @github-actions in #896
- Fix DNS resolution error when network monitoring is turned on by @kirankumar-grootan in #898
- Add kafka support by @marctc in #890
- Fix typo in metrics.md by @marctc in #902
- Fixes for SQL detection and Go events handled by kprobes by @grcevski in #901
- Automatic update of offsets.json by @github-actions in #904
- Foundation to report application processes by @mariomac in #892
- Push Go Kafka events using the current parser by @grcevski in #900
- Fix code coverage reports for testing by @mariomac in #908
- Prometheus process metrics exporter by @mariomac in #907
- Report Redis failed calls by @grcevski in #909
- Remove beyla metrics and traces by default by @grcevski in #910
- Automatic update of offsets.json by @github-actions in #913
- Bump collector SDK version to 102 by @grcevski in #912
- Complete process metrics for CPU by @mariomac in #911
- Decorate process metrics with kubernetes metadata by @mariomac in #917
- check for empty redis commands by @esara in #916
- Improve process discovery performance by @grcevski in #919
- Process memory metrics by @mariomac in #922
- Support kafka fetch version 15 by @grcevski in #903
- Speed up HTTP2 check by @grcevski in #923
- Process metrics for disk I/O bytes by @mariomac in #924
- Process network metrics by @mariomac in #925
- Various fixes for corrupt gRPC URLs and wrong request directions by @grcevski in #930
- Add elixir based integration test by @grcevski in #938
- Using experimental OTEL API for removing metrics by @mariomac in #937
- Add metric for instrumented processes by @marctc in #928
- Fix flaky unit test by @mariomac in #939
- More reliable SSL black-box tracing tracking by @grcevski in #940
- Fix delayed SSL server trace cleanup by @grcevski in #942
- Fixes for service naming, redis and kafka support by @grcevski in #945
- Fix link in options.md by @marctc in #947
- OTEL: removing metrics from removed entities by @mariomac in #948
- Fix bpf load problems on older kernels by @grcevski in #949
- Process memory metrics: report deltas instead of absolute values in OTEL exporter by @mariomac in #950
- Direction based on flags instead of relation between src_port and dst_port by @bareckidarek in #883
- updated pipeline map with process metrics by @mariomac in #951
- Fix one more grpc wrong direction bug by @grcevski in #954
- max_entries of flow_directions map sets from configuration by @bareckidarek in #959
- Update to new oats, improve tests by @grcevski in #957
- Add logger to display BPF logs by @marctc in #955
- Fix default config value in Helm chart by @marctc in #961
- Remove unnecessary filtered connection info map by @grcevski in #963
- Add ability to choose what instrumentations are enabled by @grcevski in #958
- Merging app and network K8s informers by @mariomac in #956
- Optimize InstrumentationSelection by @mariomac in #965
- Remove commented code by @marctc in #966
- Add detection for PHP language by @marctc in #970
- Fixes to http2 connection detection and bad gRPC paths by @grcevski in #969
- Add host.name to process metrics by @mariomac in #973
- Add PHP in attacher by @marctc in #974
- Fix bad iovec length check by @grcevski in #972
- Reduce number of iteration to 4 to process gRPC frames by @marctc in #977
- Introduce bpf tail call to increase the size of grpc parsing loop by @grcevski in #978
- Add k8s_cluster_name to resource attrs by @marctc in #976
- Update
make docs
procedure by @github-actions in #979 - Add service_namespace attr to span metrics by @marctc in #980
- Enable ServiceNamespace in appAttributes by @marctc in #981
- Fix typo by @marctc in #983
- Automatic update of offsets.json by @github-actions in #985
- updating integration test accessory images by @mariomac in #986
- Differentiation between metric and resource attributes by @mariomac in #984
- Add build_info metrics to internal metrics by @marctc in #987
- Add logging on pod/svc ip k8s operations by @marctc in #990
- Fix flaky ssl test by @grcevski in #982
- Use service when resolving k8s ips by @marctc in #992
- Revert "Add logging on pod/svc ip k8s operations (#990)" by @marctc in #993
- Selection of metric attributes by "glob" in metric name by @mariomac in #991
- correct behavior of glob-based attribute selection by @mariomac in #995
- Fix wrong kafka protocol detection by @grcevski in #994
- Revert "Differentiation between metric and resource attributes (#984)" by @mariomac in #999
- Allow to selectively disable some K8s informers by @mariomac in #997
- Automatic update of offsets.json by @github-actions in #1000
- Tracking the NodeJS event loop by @grcevski in #998
- Document wildcards in attributes.select by @mariomac in #996
- Exclude src_port from kubernetes neto11y tests by @mariomac in #1002
- OTEL process attributes moved to resource-level by @mariomac in #1003
- Add support for segment.io kafka-go library by @grcevski in #1006
- Switch default network mode to socket filter to avoid cilium conflict by @grcevski in #1008
- Make sure we have enough access for span metrics by @grcevski in #1010
- Cleanup BTF by @grcevski in #1011
- Automatic update of offsets.json by @github-actions in #1014
- Documentation: set up network metrics for Asserts by @grafsean in #1007
- Allow for easier network metrics enablement by @grcevski in #1013
- Fix PR conflict by @grcevski in #1018
- Fix dashboard linting by @mariomac in #1016
- Network metrics: report client and server port by @mariomac in #1015
- Replace custom EKS cluster-name retrieval by OTEL-contrib code by @mariomac in #1017
- Fix uninitialized go connection info by @grcevski in #1019
- Docs: enumerate client/server port and process metrics by @mariomac in #1020
- Use bpf_dbg_printk instead of bpf_printk by @marctc in #1026
- Move export package from internal to pkg by @marctc in #1033
- Use Prometheus registry when specified by @marctc in #1034
- Add SetDebugMode function in config.go by @marctc in #1037
- Export k8s flags by @marctc in #1038
- avoid ipv6 loopback address reported as src or dst of span by @esara in #1021
- Disable DNS name resolver by default by @mariomac in #1032
- More fixes for Go connection fetching by @grcevski in #1036
- Automatic update of offsets.json by @github-actions in #1043
- Add host ID reporting to application metrics by @mariomac in #1042
- Fix fetching Go server status code by @grcevski in #1044
- Fixes for the new eBPF code for older kernels by @grcevski in #1047
- Prevent beyla self-instrumentation by @grcevski in #1048
- Short timeout for cloud instance ID fetcher by @mariomac in #1050
- Link directly to resource in GitHub by @grafsean in #1051
- Add exclusion lists to discovery section by @mariomac in #1052
- Cleans up some stray fmt and dead code by @grcevski in #1056
- Introduce JSON span printer by @rafaelroquetto in #1035
- Automatic update of offsets.json by @github-actions in #1061
- Fix k8 namespace cache in database by @grcevski in #1059
- Expire span metrics and service graph metrics in the OTEL exporter by @mariomac in #1062
- Remove debug prints preventing debug to load on 5.10 by @grcevski in #1063
- Fix some issues for Alloy integration by @marctc in #1058
- Count testing in OTEL histogram export by @mariomac in #1064
- Disable OTEL expirer and hide it from docs by @mariomac in #1066
- Remove expiration code from OTEL metrics by @mariomac in #1068
- Change SetDebugMode by a more flexible ExternalLogger functionality by @mariomac in #1069
New Contributors
- @kirankumar-grootan made their first contribution in #898
- @bareckidarek made their first contribution in #883
- @rafaelroquetto made their first contribution in #1035
Full Changelog: v1.6.4...v1.7.0