Beyla v2.0.0 is here!
What's Changed
Breaking changes 🔨
Align Beyla setting Service Name/Namespace/Instance according to the OpenTelemetry collector and operator specs
Service Name and Namespace of applications can be set from different metadata, in the following order of priority:
- Resource attributes set via
OTEL_RESOURCE_ATTRIBUTES
andOTEL_SERVICE_NAME
environment variables - Resource attributes set via Pod annotations prefixed with
resource.opentelemetry.io/
. - Resource attributes set via the
app.kubernetes.io/name
andapp.kubernetes.io/part-of
Pod labels, for service
name and namespace, respectively (see documentation to learn how to override these values) - Resource attributes calculated from the owner's metadata (e.g.
k8s.deployment.name
) or pod's metadata (e.g.k8s.pod.name
)
Service Instance ID in Kubernetes is now set as: <namespace>.<pod name>.<container name>
.
Defaulting OpenTelemetry metrics push interval to 60 seconds
In Beyla 1.9, OpenTelemetry were pushed every 5 seconds as default, which might involve higher telemetry costs.
Beyla 2.0 increases this value to 60 seconds. Check the Beyla documentation to check how to override such value.
Exclude system services (self-instrumentation) by default
In auto-instrumentation, Beyla excludes by default the Alloy, OTEL Collector and Beyla pods. You can override
this value using the default_exclude_services
configuration file option. Check documentation for information
about overriding the values.
Contribution from @marevers in #1536
Removed support for deprecated and hidden configuration options
BEYLA_PRINT_TRACES
were deprecated and undocumented since Beyla 1.7. UseBEYLA_TRACE_PRINTER
configuration option instead.BEYLA_METRICS_REPORT_TARGET
andBEYLA_METRICS_REPORT_PEER
were deprecated and undocumented since Beyla 1.5.
Use the Attributes selection configuration to include theurl.path
and
client.address
metrics attributes.
Update OpenTelemetry semantic convention for OTEL v1.30.0
Following updates in OpenTelemetry semantic conventions, he db.system
metric attribute has been renamed to db.system.name
.
New features 🆕
Extended support for traces' context propagation
We added extra eBPF probes at the network layers 4 and 7, which allow writing traceparent headers for a wide range of
application languages.
It is currently disabled by default. To enable it, set the environment variable:
BEYLA_BPF_ENABLE_CONTEXT_PROPAGATION=true
The technical details are here: #1396
Add support for FastCGI protocol
Beyla 2.0 adds support for tracking the FastCGI protocol which is very popular with modern PHP applications.
Unix sockets support
Beyla 2.0 dds support for running TCP and HTTP connections over unix sockets. These are different than the regular TCP sockets because they run streams across mapped files on disk.
Ensure Cilium compatibility
Beyla 1.9 network metrics were incompatible with Cilium, due to conflicts in the Traffic Control resource sharing.
Beyla 2.0 uses BPF link support via TCX to
coexist with Cilium.
By @rafaelroquetto in #1535
Bug fixes 🐛
- Stop Beyla if either NetO11y or AppO11y component fails by @mariomac in #1519
- Fix node name resolution in kubernetes by @mariomac in #1529
- Fix direct packet access by @rafaelroquetto in #1575
Other changes/additions
- Export internal metrics using OTEL metrics by @marctc in #1425
- Helm: remove init container/volume as they are no longer required by @marevers in #1273
- Stop flooding WARNING logs with 'couldn't delete flow entry' by @mariomac in #1408
- Helm chart 1.5.0 by @mariomac in #1398
- Add container name label by @marctc in #1394
- Don't read Go maps anymore by @grcevski in #1413
- Add support for decoding ENDBR32/64 instructions by @rafaelroquetto in #1416
- Fix informers on stale object deletion by @mariomac in #1420
- Add alerts for internal metrics by @marctc in #1412
- fix flaky unit tests by @mariomac in #1421
- Fix SQL detection by @grcevski in #1427
- Improving eBPF generator Docker image by @mariomac in #1428
- Correct documentation of routes default behavior by @mariomac in #1431
- Automatic update of offsets.json by @github-actions in #1429
- Decrease level of "couldn't delete flow" message by @mariomac in #1434
- Fix eBPF Instruction Set broken url by @lucianocarvalho in #1432
- Add support for attaching uprobes and uretprobes to offsets by @rafaelroquetto in #1419
- Fix bpf_printk only accept three parameter by @tomatopunk in #1438
- Fix missing check for ignored metrics for Prometheus export by @grcevski in #1441
- Bump golang.org/x/crypto from 0.22.0 to 0.31.0 in /test/integration/components/gokafka by @dependabot in #1446
- Bump golang.org/x/crypto from 0.29.0 to 0.31.0 by @dependabot in #1449
- Fix missing service info by @grcevski in #1444
- heuristic: make wildcard character configurable by @marevers in #1418
- Kafka server spans shouldn't be producers and consumers by @grcevski in #1452
- Print more information on failing flaky tests by @mariomac in #1451
- Automatic update of offsets.json by @github-actions in #1453
- allow restricting Kube metadata to local node only by @mariomac in #1440
- Refactor http2_grpc to leverage tail calls by @rafaelroquetto in #1447
- Bump golang.org/x/crypto from 0.22.0 to 0.31.0 in /configs/offsets/sarama by @dependabot in #1455
- Integration tests: increase TSDB retention time of prometheus by @mariomac in #1458
- Increase timeout for ARM tests by @rafaelroquetto in #1463
- Isolate BPF_TRACEPARENT macro by @rafaelroquetto in #1457
- Ensure TC programs play nice with 3rdparty programs by @rafaelroquetto in #1462
- Fix missing http2 connection info by @rafaelroquetto in #1464
- Light refactoring of the TC attachment code by @rafaelroquetto in #1466
- Automatic update of offsets.json by @github-actions in #1470
- Treat go binaries without offsets as generic by @rafaelroquetto in #1476
- Update
make docs
procedure by @github-actions in #1480 - Update
make docs
procedure by @github-actions in #1483 - Automatic update of offsets.json by @github-actions in #1482
- Fixed: Service name must be less than 15 chars by @xogoodnow in #1479
- Upgrade to OTel v0.116.0 by @ptodev in #1484
- Add marevers to team members by @grcevski in #1493
- Fix typo in EBPFTracer by @rafaelroquetto in #1494
- Fix CVE-2024-45338 by @grcevski in #1491
- Automatic update of offsets.json by @github-actions in #1495
- Update CODEOWNERS by @marctc in #1496
- Automatic update of offsets.json by @github-actions in #1501
- Update Vale workflow by @jdbaldry in #1497
- Lint all documentation sources by @jdbaldry in #1504
- Add TCX support by @rafaelroquetto in #1478
- Fix library discovery bug by @grcevski in #1498
- Remove network metrics experimental by @grafsean in #1510
- TCManager: split code to InterfaceManager by @rafaelroquetto in #1509
- Vendor parts of the metrics SDK by @grcevski in #1511
- Update helm to version 1.9.6 by @grcevski in #1516
- Update helm chart docs by @mariomac in #1518
- Dump metrics and traces on file after integration tests by @mariomac in #1521
- update Beyla version in helm chart by @mariomac in #1522
- Automatic update of offsets.json by @github-actions in #1524
- Add BPF level metrics by @marctc in #1505
- Use Vale action by @jdbaldry in #1526
- Helm: add note about preventing self-instrumentation by @marevers in #1525
- Fix Docker release status badge by @marevers in #1527
- Fix compilation in Mac by @mariomac in #1528
- Add tracer program for CUDA GPU kernel launches by @grcevski in #1523
- Add support for dynamic gRPC tables by @grcevski in #1530
- Add support for auto detecting TCX by @rafaelroquetto in #1533
- Bump golang.org/x/net from 0.26.0 to 0.33.0 in /test/oats/http by @dependabot in #1534
- Fix dashboard file names by @marctc in #1532
- Ensure Cilium compatibility by @rafaelroquetto in #1535
- updating helm chart to Beyla 1.9.8 by @mariomac in #1537
- Rename BEYLA_BPF_TC_CP to BEYLA_BPF_ENABLE_CONTEXT_PROPAGATION by @rafaelroquetto in #1540
- Improve cuda module discovery by @grcevski in #1539
- Fix return value for the TC tracer by @rafaelroquetto in #1541
- Fix condition to disable BPF collector by @marctc in #1538
- Automatic update of offsets.json by @github-actions in #1542
- Adding defaults for metadata source labels by @mariomac in #1543
- report Beyla version in OTEL traces and metrics by @mariomac in #1544
- GPU Fix call stack issue and support ggml by @grcevski in #1546
- Fix system services pattern by @grcevski in #1550
- Extra service_instance_id testing in K8s by @mariomac in #1549
- Docs: First stage of improving the configuration options information architecture by @grafsean in #1513
- Fixing tests for annotation/label-based service name and namespace by @mariomac in #1551
- RFC: Add documentation for Cilium support by @rafaelroquetto in #1545
- Fix issue with Go request start timing by @grcevski in #1556
- Default metrics expiration TTL to 70 minutes by @mariomac in #1555
- Docs: copy edit for PR 1554 by @grafsean in #1558
- Update workflows to use actions that don't need organization secrets by @jdbaldry in #1553
- Bump golang.org/x/net from 0.28.0 to 0.33.0 in /test/integration/components/go_otel_grpc by @dependabot in #1559
- Trace context propagation docs and enable distributed traces by default by @grcevski in #1557
- Fix merge error in docs around default_exclude_services by @grcevski in #1560
- Change the way resource attributes are populated (unbreaks a 2.0 change) by @mariomac in #1565
- Disable context propagation by default for 2.0 by @grcevski in #1567
- Better support for Go HTTP Client calls by @grcevski in #1564
- Automatic update of offsets.json by @github-actions in #1571
- Support standard annotations for OTEL generic resource attributes by @mariomac in #1569
- Fix context propagation edge cases by @grcevski in #1572
- Add Sean as code owners of docs by @marctc in #1574
- Fix context propagation on old kernels by @grcevski in #1576
- Add the extra probes only if context propagation is enabled by @grcevski in #1577
New Contributors
- @lucianocarvalho made their first contribution in #1432
- @tomatopunk made their first contribution in #1438
- @dependabot made their first contribution in #1446
- @xogoodnow made their first contribution in #1479
- @ptodev made their first contribution in #1484
Full Changelog: v1.9.0...v2.0.0