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.