Releases: grafana/beyla
v1.9.0
What's Changed
Beyla 1.9.0 is released with major internal changes, in preparation to what's coming for the future Beyla 2.0 release.
Breaking changes 🔨
Removed override_instance_id
configuration option
This option was aimed uniquely for debugging purposes.
More info: #1125
Fix instance and job in Prometheus exporter
Renaming target_instance
Prometheus attribute to instance
. Also, the job
attribute has been added to Prometheus.
Now, all the metrics are consistent, no matter they are exported via OTEL or Prometheus.
More info: #1130
Set OTEL service name and namespace from application environment variables
If the application has set the OTEL_SERVICE_NAME
or OTEL_SERVICE_NAMESPACE
variables in its environment,
Beyla will use them to set the reported service name and namespace.
If the variables are not there, Beyla will use the previously existing mechanism to set service name and namespace.
Bug fixes 🐞
Fix cgroup ID parsing in newest Docker versions
More info: #1287
Fix OS capability checking
There were few bugs in the OS capability checking which are being fixed with this PR:
- If SYS_ADMIN is present, it effectively means all capabilities.
- If we have kernel older than 5.8, SYS_ADMIN is a must, the others weren't split off yet.
- If we have NET_ADMIN we also have NET_RAW, so we can relax that check.
More info: #1131
What's new
Introduce option for high volume request tracking
Beyla tracks the full request completion time, this typically means we look to see if the application is responding
with more data after the first HTTP response. One example would be a large file download, where the majority of the time
is actually serializing the data on the wire. When the client uses keep-alive, we don't necessarily see the connection
close event, but we tell by new pushed requests that we should terminate an earlier request.
This approach doesn't work well in when there's high volume of requests, e.g. beyond our current map sizing. The delayed
requests will likely be booted out of the map before we have a chance to complete them.
The BEYLA_BPF_HIGH_REQUEST_VOLUME
configuration option forces Beyla to complete the request as soon as the response
is finished. It will produce less accurate accounting for large file downloads, but it will avoid no data for high
volume of requests.
More info: #1192
Use scratch
as the base to build the Beyla docker images
It provides smaller images, as well as removing the risk for any potential vulnerability in the base image.
More info: #1367
Kubernetes: no need for a privileged init container anymore
The way Beyla internally mounts and shares some eBPF data structures has changed. This removes the necessity of
giving Beyla elevated privileges, or creating a privileged init container to mount the BPF file system.
More info: #1251
Experimental: Kubernetes API cache service
⚠️ This is an experimental service aimed only for developer preview. Expect breaking changes. Make sure that the
deployed image of the cache service (grafana/beyla-k8s-cache:1.9.x
) matches the
version of the Beyla image
To decorate the traces and metrics with Kubernetes metadata, each Beyla instance establishes a connection to the
Kubernetes cache service. On big clusters (500+ nodes, 500+ Beyla instances), this action could greatly overload the
Kubernetes API because listening for cluster-global resources is really expensive.
Experimentally, you can configure Beyla to move the Kube API subscription logic to an external service (with fewer
instances), and connect Beyla to the Kubernetes API cache service instead of the Kubernetes API directly.
The easiest way to enable this service is via our latest Helm chart, in values.yml
:
k8sCache:
replicas: <typically 1 cache replica for 50 Beyla instances>
Other changes/additions
- Add 'watch services' permission to unprivileged example by @marevers in #1126
- Deduplicate instance ids and restore target_instance in Prometheus by @mariomac in #1129
- Update OTEL collector library to v0.108.1 by @mariomac in #1133
- Helm chart: allow unprivileged deployment of Beyla by @marevers in #1128
- Update OTEL collector library to v0.108.1 (1.8 backport) by @mariomac in #1134
- Automatic update of offsets.json by @github-actions in #1136
- Docs: Fix link to 'Beyla and Kubernetes walkthrough' by @marevers in #1141
- Update rust test dependencies versions by @rafaelroquetto in #1142
- Automatic update of offsets.json by @github-actions in #1149
- Refactor to have only one Go tracer by @marctc in #1132
- Update rails test Dockerfile by @rafaelroquetto in #1148
- Add target for ARM integration tests by @rafaelroquetto in #1139
- Avoid that a Pod update removes the container metadata by @mariomac in #1156
- Add Linux Traffic Control probes for App O11y by @grcevski in #1160
- Increase buffer size to 192 to capture longer URLs by @marevers in #1150
- Process metrics dashboard by @mariomac in #1109
- Automatic update of offsets.json by @github-actions in #1163
- Propagate context through TCP packets by @grcevski in #1161
- Allow filtering by client/server in application traces by @mariomac in #1166
- Fixing Docker Generator build action by @mariomac in #1164
- feat(helm): additional labels for ServiceMonitor by @nlamirault in #1167
- Revert OTel expiration code by @grcevski in #1143
- Fix bounds check in kafka parsing by @grcevski in #1171
- Enforce clang-format for C source files by @rafaelroquetto in #1177
- Fix clang-format-check workflow file by @rafaelroquetto in #1179
- Support for RHEL 4.18 kernels by @rafaelroquetto in #1175
- Add two ports to service, daemonset and servicemonitor conditionally by @marevers in #1168
- Split eBPF load and attach for Go programs by @grcevski in #1169
- Add some default settings for beyla application metrics by @xujiaxj in #1184
- Use git-lfs to track .o files by @rafaelroquetto in #1183
- Use clang-tidy on ebpf code by @rafaelroquetto in #1180
- Automatic update of offsets.json by @github-actions in #1191
- Add clang-tidy make target by @rafaelroquetto in #1189
- Add quickstart build instructions to the README file by @rafaelroquetto in #1188
- Move bin files back to git lfs by @rafaelroquetto in #1193
- Introduce option for high volume request tracking by @rafaelroquetto in #1196
- Add workflow for checking git-lfs files by @rafaelroquetto in #1194
- Use struct with pid and Go routine addr for Go BPF maps by @marctc in #1182
- Fix linting/compilation on Darwin environments by @mariomac in #1199
- Add metrics to measure latency of k8s informer by @marctc in #1200
- Extract ReplicaSet name from pod name by @mariomac in #1202
- Try to fix unmounting of BPF FS during integration tests by @mariomac in #1205
- Remove ReplicaSet informer by @mariomac in #1204
- Use struct with pid and Go routine addr for Go BPF maps by @marctc in #1201
- Discover service names from process env vars by @grcevski in #1195
- Add option to skip ConfigMap check by @marevers in #1208
- Use only the required informers by @mariomac in #1210
- Allow configuring informer resync time by @mariomac in #1216
- Automatic update of offsets.json by @github-actions in #1220
- update helm chart to use Beyla 1.8.4 by @mariomac in #1223
- Account for deleted files in workflow files by @rafaelroquetto in #1218
- Always decorate k8s_owner_name by @mariomac in #1226
- Make EBPF tracer config visible by @mariomac in #1222
- Move already instrumente...
v1.8.8
v1.8.7
v1.8.6
v1.8.5
v1.8.4
v1.8.3
v0.0.7-pre
What's Changed
Test release for the purpose of verifying if the fix to OTel metric expiration works with the temporary branch.
Breaking changes 🔨
- Cleanup UID/InstanceID duplicity. Also remove
override_instance_id
config option by @mariomac in #1125 - Fix instance and job in prometheus, and document honor_labels by @mariomac in #1130
Bug fixes 🐛
Other changes/additions
- Add 'watch services' permission to unprivileged example by @marevers in #1126
- Fix OS capabilities by @grcevski in #1131
- Update OTEL collector library to v0.108.1 by @mariomac in #1133
- Helm chart: allow unprivileged deployment of Beyla by @marevers in #1128
- Update OTEL collector library to v0.108.1 (1.8 backport) by @mariomac in #1134
- Automatic update of offsets.json by @github-actions in #1136
- Docs: Fix link to 'Beyla and Kubernetes walkthrough' by @marevers in #1141
Full Changelog: v1.8.3...v0.0.7-pre
v1.8.1
What's Changed
Update OTEL collector library from v0.102.0 to v0.108.1. This should have no visible effect on users but will enable the integration of Beyla in the next version of Grafana Alloy.
Full Changelog: v1.8.0...v1.8.1
v1.8.0
What's Changed
Breaking changes 🔨
Network metrics: new behavior of the direction
field
The direction
attribute (whose values were ingress
/egress
until Beyla 1.7.0) has been renamed to iface_direction
. This attribute specifies in which direction of the network interface is a flow captured (ingress or egress).
Since Beyla 1.8.0, the direction
attribute shows the direction of a connection (valid for TCP): request
or response
.
PR: #1074
Process CPU metrics: rename attribute process.cpu.state
to cpu.mode
Process metrics are still an experimental/unstable OpenTelemetry specification. We renamed that attribute according to the latest changes in the specification.
PR: #1110
Internal metrics: renamed beyla_build_info
to beyla_internal_build_info
This breaking change should not have noticeable effect in someone, as internal metrics are aimed to debug Beyla.
PR: #1119
Bug fixes 🐛
- Improving thread safety of K8s informer DB by @mariomac in #1118
- Prevent negative network tx/rx data for process by @mariomac in #1123
- Fix OTEL_RESOURCE_ATTRIBUTES variable by @rafaelroquetto in #1085
- Fix handling of different iovec struct layouts / enums by @rafaelroquetto in #1086
- Fix handling of ITER_IOVEC by @rafaelroquetto in #1090
Other changes/additions
- adding Rafael to list of maintainers by @mariomac in #1076
- Update ClusterRole permissions in documentation by @mariomac in #1079
- Update ClusterRole permissions in documentation [1.7 backport] by @mariomac in #1081
- Check if required capabilities are available by @rafaelroquetto in #1067
- Helm Chart 1.3.0 with Beyla 1.7.0 by @mariomac in #1078
- Automatic update of offsets.json by @github-actions in #1084
- Improve debug information for old kernels by @grcevski in #1088
- Automatic update of offsets.json by @github-actions in #1089
- Attempt fix missing http calls by @grcevski in #1092
- Use kprobe for unreliable recvmsg return probe by @grcevski in #1095
- Update Alloy examples matching newer version by @marctc in #1094
- Memory optimizations for various parts of the code by @grcevski in #1096
- Add Beyla debug dashboard by @marctc in #1098
- Validate timeout greater than 0s for InformersSyncTimeout by @marctc in #1103
- Fix slog errors by @rafaelroquetto in #1104
- Fix coverage exclusion pattern by @mariomac in #1106
- Detect OTel instrumentations in applications by @grcevski in #1101
- Update
make docs
procedure by @github-actions in #1102 - Update Go version to 1.23 by @mariomac in #1105
- Fixing compilation on Mac by @mariomac in #1107
- Split iovec reading for tcp_recvmsg by @grcevski in #1108
- Support testing different kernel versions by @rafaelroquetto in #1100
- Terminate Beyla if we can't open a configured Prometheus port by @grcevski in #1111
- Add some default settings for beyla network metrics by @xujiaxj in #1112
- Remove self references from service graphs by @grcevski in #1115
- Automatic update of offsets.json by @github-actions in #1116
- K8s net attributes: default src/dst owner type by @mariomac in #1114
- Resolve node ips by @grcevski in #1121
New Contributors
Full Changelog: v1.7.0...v1.8.0