Releases: grafana/beyla
v1.9.4
What's Changed
Other changes/additions
- Treat go binaries without offsets as generic (1.9 branch patch) by @rafaelroquetto in #1477
Full Changelog: v1.9.3...v1.9.4
v1.9.3
What's Changed
Adds the BEYLA_KUBE_META_RESTRICT_LOCAL_NODE
configuration option that allows configuring the local informer to only watch the Kubernetes Pods from the local node. This will alleviate the memory load, especially during startup.
Other changes/additions
- Backport: Fix eBPF instruction set URL in docs (#1432) [1.9 backport] by @rafaelroquetto in #1459
- [release-1.9] Bump golang.org/x/crypto from 0.22.0 to 0.31.0 in /configs/offsets/sarama by @github-actions in #1460
Full Changelog: v1.9.2...v1.9.3
v1.9.2
What's Changed
Other changes/additions
- [release-1.9] Bump golang.org/x/crypto from 0.22.0 to 0.31.0 in /test/integration/components/gokafka by @github-actions in #1448
- [1.9 backport] Bump golang.org/x/crypto from 0.29.0 to 0.31.0 (#1449) by @mariomac in #1450
- Backport 1444 to 1.9 by @grcevski in #1445
Full Changelog: v1.9.1...v1.9.2
v1.9.1
v1.8.9
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...