v1.2.0: improvements in Kubernetes support and context propagation
What's Changed
Fixing docker command
arguments
In the Beyla Dockerfile
, we replaced CMD
by ENTRYPOINT
in Beyla, as it should be the standard way of specifying a container command.
This will cause that some docker-compose setups will break because this command
value won't be valid anymore:
command:
- /beyla
- --config=config-file.yml
The correct and standard way will be:
command:
- --config=config-file.yml
Kubernetes deployments will still keep working because they accept either command
for the whole CLI and args
for the arguments.
In addition, the BEYLA_CONFIG_PATH
environment variable is now the preferred way to specify the configuration file path in Docker and Kubernetes environments.
Context propagation (distributed traces) for Go services
Beyla 1.0, was able to read the Traceparent header of the incoming service calls and report it as part of the generated traces. However, it was not able to inject the traceparent header in the outgoing calls of the instrumented service.
This means that it was possible to relate a service span with its parent trace, but not with their child invocations to other services, as the trace parent was lost.
For Go services Beyla 1.2 is able to inject the traceparent header to the child service requests from an instrumented application,
enabling fully distributed traces.
For more information, read the distributed traces documentation.
Kubernetes service selectors
In Beyla 1.0, the user could select which applications to instrument by specifying their used ports or the name of the executable file. These criteria were difficult to use to select Kubernetes Pods or Services, as they work in a higher level of abstraction.
Beyla 1.2 allows specifying the following service selection criteria: k8s_namespace
, k8s_deployment_name
, k8s_replicaset_name
and/or k8s_pod_name
.
You need to run Beyla with the BEYLA_KUBE_METADATA_ENABLE
configuration option set to true
.
For more information, read the Kubernetes tutorial.
OpenTelemetry-compliant Kubernetes metadata decoration
Beyla 1.0 allowed, as an experimental-hidden (undocumented) feature, decorating metrics and traces with Kubernetes metadata about source and destination Pods. These attributes were not standard and, due to an experimental implementation, not 100% reliable.
Beyla 1.2 can decorate any metric with the following, standard OpenTelemetry
attributes:
k8s.namespace.name
k8s.deployment.name
k8s.node.name
k8s.pod.name
k8s.pod.uid
k8s.pod.start_time
You need to run Beyla with the BEYLA_KUBE_METADATA_ENABLE
configuration option
set to true
.
For more information, read the Kubernetes tutorial.
Full list of PRs
- Fix Dockerfile by @mariomac in #551
- Send K8s metadata as resource metadata by @mariomac in #548
- Remove Public Preview notice from docs by @mariomac in #434
- Fix workflow conditional by @jdbaldry in #437
- Make release_branch_regexp match existing release branch by @jdbaldry in #438
- Fix escaping in quoted regexp by @jdbaldry in #439
- Trigger tests in release-* branches by @mariomac in #444
- Fix Basic auth key encoding by @mariomac in #446
- Update go offsets tracker version by @mariomac in #449
- Add systemd service file and related docs by @proffalken in #448
- Fix support for skipping Go tracers by @grcevski in #451
- Different handling of traceparent by @grcevski in #455
- OTEL-compliant K8s decoration by @mariomac in #460
- Add utility helper to determine the kernel lockdown mode by @grcevski in #461
- Kubernetes decoration documentation by @mariomac in #462
- Fix container parse from cgroup file by @mariomac in #468
- Fix documentation links by @mariomac in #469
- Fix more cloud documentation links by @mariomac in #473
- Document service discovery section by @mariomac in #476
- Fix concurrent access crash in PIDsFilter by @mariomac in #479
- Reuse BPF programs in multi-process mode by @grcevski in #471
- Fix 'grafana-agent' URL on Kubernetes docs by @myhro in #481
- Automatic update of offsets.json by @github-actions in #488
- Add test for unsupported Go by @grcevski in #490
- Fix host parsing in httpfltr by @grcevski in #487
- Fix linting/testing on nonlinux systems by @mariomac in #497
- Update and document Beyla requirements by @mariomac in #500
- Remove Go tracers when they become unused by @mariomac in #499
- Add Go version detection by @myhro in #485
- Propagate HTTP trace context in Go by @grcevski in #491
- K8s: fix crash on pod undeployment by @mariomac in #503
- Propagate context go gRPC by @grcevski in #507
- Automatic update of offsets.json by @github-actions in #510
- Documented Grafana OTLP credentials setup with the new OpenTelemetry box by @mariomac in #509
- Fix integration tests by @mariomac in #512
- K8s discovery by @mariomac in #511
- Automatic name/namespace setting from K8s metadata by @mariomac in #513
- Update kubernetes.md by @Obito1903 in #514
- Refactor: clean code for else if by @lwangrabbit in #520
- Documenting Kubernetes discovery by @mariomac in #516
- Refactor: delete magic number by @lwangrabbit in #522
- Fix tutorial usage of open_port by @grcevski in #523
- Add pointer to the community Slack by @grcevski in #525
- Remove stray print by @grcevski in #527
- use privileged: true by default in some examples by @mariomac in #528
- Embed Grafana Office Hours video on deploying Beyla in Kubernetes by @nicolevanderhoeven in #529
- First draft for Go quickstart guide by @mariomac in #530
- Improve gRPC context propagation with hpack by @grcevski in #531
- Improve Ruby and Python executable detection by @mariomac in #533
- Quickstart guides for C/C++, Ruby, Python and Node.js by @mariomac in #534
- Automatic update of offsets.json by @github-actions in #535
- Open source redirects by @grafsean in #537
- Replace Grafana cloud credentials by standard OTLP credentials in quickstart guides by @mariomac in #538
- Report Beyla as SDK name by @grcevski in #540
- Forward port of the LRU size fix by @grcevski in #539
- Add "we are hiring" note by @fstab in #543
- Document distributed traces by @grcevski in #541
- Rust quickstart tutorial by @mariomac in #544
- Suggestion to group tutorials into a folder by @mariomac in #545
- Add BEYLA_CONFIG_PATH env var by @mariomac in #549
- Fix K8s tutorial images by @mariomac in #550
- Black box context propagation by @grcevski in #547
- Fix wrong reported program type and missing traces by @grcevski in #552
- Add backport workflow to cherry-pick PR merge commits to other long-lived branches by @jdbaldry in #553
- minor fixes to k8s-walkthrough.md by @mariomac in #554
- Disable context propagation on kprobes by @grcevski in #556
- Fix GITHUB_TOKEN lookup by @jdbaldry in #558
- Java quickstart tutorial by @mariomac in #546
New Contributors
- @proffalken made their first contribution in #448
- @myhro made their first contribution in #481
- @Obito1903 made their first contribution in #514
- @lwangrabbit made their first contribution in #520
- @nicolevanderhoeven made their first contribution in #529
Full Changelog: v1.0.2...v1.2.0