github grafana/beyla v1.5.0

latest releases: v1.8.4, v0.0.7-pre, v1.8.4-alpha...
5 months ago

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 cangelog

Bug fixes 🐛

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 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

Full Changelog: v1.4.1...v1.5.0

Don't miss a new beyla release

NewReleases is sending notifications on new releases.