The container-tracer project brings the power of the Linux kernel tracing to Kubernetes. It leverages existing kernel tracing frameworks such as ftrace, perf, ebpf to trace workloads running on a Kubernetes cluster. Designed as a native Kubernetes application, its main goal is to be simple and efficient in doing one thing - collecting low level system traces per container.
- Linux kernel with enabled ftrace. Almost all kernels, shipped with major Linux distributions meet that requirement.
- Open Telemetry and Jaeger installed on the system / cluster. Although this is not a mandatory requirement, it is a good to have. Container-tracer does not store the collected traces. All it can do is to dump them on the console, or send them to an external database using Open Telemetry.
- Root permissions on the system / cluster.
Container-tracer uses Makefile to build, so just type make
in the top directory of the project.
By default, it builds two applications:
cmd/tracer-node/tracer-node
cmd/tracer-svc/tracer-svc
There are different make targets for each of them, so they can be compiled independently:
make tracer
compiles cmd/tracer-node/tracer-node
make service
compiles cmd/tracer-svc/tracer-svc
Look at installation for detailed instructions.
After installation of the container-tracer, you can interact with it using a REST API.
Look at the container-tracer documentation for a detailed explanation of the
container-tracer architecture and a description of the REST API.
Index of available documentation:
- installation
- container-tracer overview
- container-tracer-api
- container-tracer-flow
- tracer-node
- tracer-svc
- trace-hooks desription
- ftrace hooks
The container-tracer project team welcomes contributions from the community. For more detailed information, refer to CONTRIBUTING.md.
Container-tracer is available under the GPLv2.0 or later license.