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 #848
New Contributors
- @georgesouzafarias made their first contribution in #782
- @corneliu-calciu made their first contribution in #780
- @arramos84 made their first contribution in #786
- @bismarck made their first contribution in #795
- @titaneric made their first contribution in #804
- @samtbg made their first contribution in #834
- @alex067 made their first contribution in #830
- @nlamirault made their first contribution in #836
Full Changelog: v1.5.3...v1.6.0