Releases: grafana/beyla
v1.6.2
v1.6.1
v1.6.0
What's Changed
Breaking changes 🔨
Standardized how we set peernames in traces
Now traces prefer the peer hostname over the IP addres. This could affect you if you have any alert or dashboard relying in the old IP-based peer address.
What's new
Attribute selectors for application metrics
Beyla 1.5 allowed to select which attributes were reported in the network metrics.
Beyla 1.6 extends this feature to application-level metrics. For example:
attributes:
select:
beyla_network_flow_bytes:
# limit the beyla_network_flow_bytes attributes to only the three attributes
include:
- beyla.ip
- src.name
- dst.port
sql_client_duration:
# report all the possible attributes but db_statement
include: ["*"]
exclude: ["db_statement"]
http_client_request_duration:
# report the default attribute set but exclude the Kubernetes Pod information
exclude: ["k8s.pod.*"]
Check the documentation for more details.
Filter flows and spans by attribute values
Beyla 1.6 lets filtering out metrics and spans not matching the provided selection criteria.
For example:
filter:
network:
transport: UDP
dst_port: "53"
Would cause that beyla only reports UDP network flows whose destination port is 53.
It allows to match multiple values by with a filesystem-like Glob syntax. For example:
filter:
application:
k8s.pod.name: beyla-*
Would report only application metrics and traces from Kubernetes pods whose name starts with beyla-
.
Check the documentation for more details.
Expire Application metrics with Prometheus exporter
To reduce cardinality of Application metrics in Prometheus, Beyla will stop reporting the metrics of an application between two endpoints when there is unobserved activity during 5 minutes. You can override the default 5-minutes value with the BEYLA_PROMETHEUS_TTL
configuration options.
This feature was already available in Beyla 1.5 for network metrics exported via OTEL or Prometheus. However, the expiration is not yet available for Application observability with OpenTelemetry, as the OpenTelemetry SDK does not yet provide a feasible way to remove histogram metrics.
Support OTEL_GO_AUTO_TARGET_EXE environment variable
In order to enforce our compatibility with opentelemetry standards, the OTEL_GO_AUTO_TARGET_EXE
configuration option is now supported.
This environment variable is equivalent to the BEYLA_EXECUTABLE_NAME
environment variable.
Bug fixes 🐛
Add .total suffix to network flow bytes metric in OTEL
When network metrics are sent via Prometheus or via an intermadiate OTEL collector, the metrics are queryable as beyla_network_flow_metrics_total
in Grafana.
Before this release, when using the OTEL endpoint in Grafana Cloud, metrics were visible as beyla_network_flow_metrics
, without the _total.
Beyla 1.6.0 adds explicitly the .total
suffix to the OTEL exporter.
Other bug fixes
- Fix rpc server address, should use otel.SpanHost instead of otel.Span.Peer by @corneliu-calciu in #780
- Track properly response sizes for SSL by @grcevski in #781
- Deal with unknown ReplicaSet owners by @mariomac in #847
Other changes/additions
- Standardize how we set peer/host names by @grcevski in #764
- remove network.allowed_attributes and use attributes.allow. by @mariomac in #777
- Helm chart: fix network requirements when network preset is not set but config network.enable is set by @mariomac in #760
- Fix missed hardcoded offset by @grcevski in #762
- Make error rate show all errors by @grcevski in #765
- Support OTel Go Auto options by @grcevski in #766
- Fix format check of old_grpc component by @mariomac in #768
- Upgrade x/net to 0.24 by @grcevski in #770
- Fix bugs with reading tcp flags and sequence by @grcevski in #771
- Refactor metric attribute getters by @mariomac in #769
- Fix race conditions in kube database by @mariomac in #773
- Update
make docs
procedure by @github-actions in #772 - Exclude files from test coverage reports by @mariomac in #775
- Fix nodeSelector Affinity and Tolerations indentation by @georgesouzafarias in #782
- Add priorityclassname Support by @georgesouzafarias in #779
- Eliminate unconnected trace spans by @grcevski in #784
- Arramos84/more helm chart options by @arramos84 in #786
- Actions for releasing helm chart by @mariomac in #783
- Update documentation for running beyla without privileges by @dashpole in #785
- Add tests for recycling services by @grcevski in #787
- Fix helm chart linting by @mariomac in #791
- Add extra k8s docs explanations by @grcevski in #790
- helm-test.yml: disable super-linter by @mariomac in #793
- helm-release.yml: disable chart changes verification by @mariomac in #792
- helm actions: disable version increment creck temporarily, and fix GH… by @mariomac in #796
- Fix indent for imagePullSecrets by @bismarck in #795
- fix helm-release chart path by @mariomac in #797
- Fix CHART_DIR path by @mariomac in #798
- replace github token by GH_BOT_ACCESS_TOKEN by @mariomac in #799
- Update README.md by @fstab in #800
- Automatic update of offsets.json by @github-actions in #805
- GitHub action to publish Beyla compiler image by @mariomac in #810
- Provide multiple tags to docker generator image by @mariomac in #811
- Check eBPF code integrity by @mariomac in #813
- Fix crash if only application_service_graph feature is enabled by @mariomac in #807
- Release-beyla-helm-chart job by @mariomac in #802
- fix code integrity verification by @mariomac in #817
- Automatic update of offsets.json by @github-actions in #815
- Tweak generator image by @mariomac in #818
- Consolidate traces receiver with traces SDK by @marctc in #729
- Update map bucket iteration by @titaneric in #804
- Cleanup trace SDK by @marctc in #819
- Run few transactions for the distributed test by @grcevski in #822
- Add option to make sql statements parts of traces by @grcevski in #826
- Replace
n
in bufio.Writer offset with naming variable by @titaneric in #833 - Prometheus metrics expirer also for App O11y by @mariomac in #827
- Allow securityContext to be configured via values.yaml by @samtbg in #834
- Documenting Helm chart deployment by @mariomac in #809
- Fix authentication headers in traces exporter by @mariomac in #835
- Track unknown TCP requests with SQL detection by @grcevski in #832
- feat helm: optionally create ServiceMonitor resource by @alex067 in #830
- Automatic update of offsets.json by @github-actions in #841
- Add tutorial for running Beyla in Alloy's Helm by @marctc in #776
- Fix long url parsing for kprobes by @grcevski in #838
- Ignore TCP requests that are tracked as HTTP by @grcevski in #840
- Add backup path for finishing requests by @grcevski in #839
- feat(helm): Support all Kubernetes recommended labels by @nlamirault in #836
- Update
make docs
procedure by @github-actions in #842 - OATS tests coverage report by @mariomac in #828
- Update codecov plugin by @mariomac in #844
- Document attributes selection and filtering features by @mariomac in #843
- Split integration tests by @mariomac in https://github.com/grafana/beyla/p...
v1.5.3
v1.5.2
v1.5.1
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