eBPF Series: A Brief Analysis of Pixie
Deployment process and instructions reference: pixie install
Pixie Platform Main Components
Pixie Edge Module (PEM): Pixie’s agent, installed per node. PEMs use eBPF to collect data, which is stored locally on the node.
Vizier: Pixie’s collector, installed per cluster. Responsible for query execution and managing PEMs.
Pixie Cloud: Used for user management, authentication, and data proxying. Can be hosted or self-hosted.
Pixie CLI: Used to deploy Pixie. Can also be used to run queries and manage resources like API keys.
Pixie Client API: Used for programmatic access to Pixie (e.g. integrations, Slackbots, and custom user logic requiring Pixie data as an input)
Local Deployment Components and Steps
- Initialization
- Daily Runtime
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 CPU 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.
Private Cloud Deployment Components and Architecture
- Images involved:
- olm component manages pixie This component requires rebuilding the index image to point to a domestic registry, with all image references configured in the domestic registry.
- elastic-operator deploys elastic cluster
- nats cluster components
- postgres
- gcr.io/pixie-oss/pixie-dev/cloud/api_server_image
- gcr.io/pixie-oss/pixie-dev/cloud/artifact_tracker_server_image
- gcr.io/pixie-oss/pixie-dev/cloud/auth_server_image
- gcr.io/pixie-oss/pixie-dev/cloud/config_manager_server_image
- gcr.io/pixie-oss/pixie-dev/cloud/proxy_server_image
- gcr.io/pixie-oss/pixie-dev/cloud/indexer_server_image
- gcr.io/pixie-oss/pixie-dev/cloud/metrics_server_image
- gcr.io/pixie-oss/pixie-dev/cloud/plugin_server_image
- gcr.io/pixie-oss/pixie-dev/cloud/profile_server_image
- gcr.io/pixie-oss/pixie-dev/cloud/project_manager_server_image
- gcr.io/pixie-oss/pixie-dev/cloud/scriptmgr_server_image
- gcr.io/pixie-oss/pixie-dev/cloud/cron_script_server_image
- gcr.io/pixie-oss/pixie-dev/cloud/vzconn_server_image
- gcr.io/pixie-oss/pixie-dev/cloud/vzmgr_server_image
- gcr.io/pixie-oss/pixie-dev/cloud/plugin/load_db
User management, script management, and task execution management records are stored in Postgres; ES is used for cached computation.
