Pixie uses eBPF to automatically instrument Kubernetes applications.
Pixie ships with a set of default data sources, which can also be extended by the user.
Pixie automatically collects the following data:
Protocol traces: Full-body messages between the pods of your applications. Tracing currently supports the following list of protocols. For more information, see the Request Tracing, Service Performance, and Database Query Profiling tutorials.
Resource metrics: CPU, memory and I/O metrics for your pods. For more information, see the Infra Health tutorial.
Network metrics: Network-layer and connection-level RX/TX statistics. For more information, see the Network Monitoring tutorial.
JVM metrics: JVM memory management metrics for Java applications.
Application profiles: Sampled stack traces from your application. Pixie’s continuous profiler is always running to help identify application performance bottlenecks when you need it. Currently supports compiled languages (Go, Rust, C/C++). For more information, see the Continuous Application Profiling tutorial.
Pixie automatically traces the following protocols:
|HTTP2/gRPC||Partially Supported||Currently only for Golang apps with debug information.|
|NATS||Supported||Requires a NATS build with debug information.|
Additional protocols are under development.
Pixie supports tracing of traffic encrypted with the following libraries:
|OpenSSL||Version 1.1.0 or 1.1.1, dynamically linked.|
|Go TLS||Requires a build with debug information.|