PxL Scripts
PxL (Pixie Language) is Pixie’s query language for exploring telemetry data. It is based on Python and the Pandas DataFrame API.
Built-in Scripts
Pixie comes with many pre-built scripts accessible from the Live UI:
Cluster Overview
| Script |
Description |
px/cluster |
Service graph with HTTP traffic, latency, error, and throughput per service |
px/namespace |
Pods and services in a namespace with service map |
px/namespaces |
All namespaces with pod/service counts and resource consumption |
| Script |
Description |
px/service |
Latency, error, and throughput over time for a service |
px/services |
LET (Latency, Error, Throughput) for all services in a namespace |
px/service_stats |
LET over time with traffic summary |
px/service_edge_stats |
Statistics about traffic between two services |
pxbeta/service_endpoints |
Performance per logical endpoint (with URL wildcards) |
Request Tracing
| Script |
Description |
px/http_data |
Recent HTTP/2 requests in the cluster |
px/http_data_filtered |
HTTP requests filtered by service, pod, path, status code |
px/dns_data |
Recent DNS requests with request/response bodies |
Database Monitoring
| Script |
Description |
px/mysql_data |
Recent MySQL requests with full bodies |
px/mysql_stats |
MySQL latency, error, and throughput by pod |
px/sql_queries |
Latency per normalized SQL query |
px/pgsql_data / px/pgsql_stats |
PostgreSQL monitoring |
px/redis_data / px/redis_stats |
Redis monitoring |
px/cql_data / px/cql_stats |
Cassandra monitoring |
Network Monitoring
| Script |
Description |
px/net_flow_graph |
Network flow graph between pods |
px/dns_flow_graph |
DNS request flow graph |
bpftrace/tcp_drops |
TCP drops between pod pairs |
bpftrace/tcp_retransmits |
TCP retransmission counts |
Infrastructure
| Script |
Description |
px/nodes |
Resource usage (CPU, memory, network) for all nodes |
px/node |
Detailed stats for a single node |
px/pod |
Pod overview with HTTP metrics, resources, and CPU flamegraph |
px/pods |
Overview of all pods in a namespace |
px/perf_flamegraph |
Stack trace samples for application profiling |
px/jvm_stats |
JVM stats for Java processes |
Script Editor
The Pixie Live UI includes a built-in script editor (Ctrl+E) for modifying and creating PxL scripts.
Example: Filtering HTTP errors
import px
# Get HTTP events
df = px.DataFrame('http_events', start_time='-5m')
# Access the service name
df.service = df.ctx['service']
# Filter to only catalogue service
df = df[df.service == 'px-sock-shop/catalogue']
# Filter to errors greater or equal to 400
df = df[df.resp_status >= 400]
px.display(df)
Example: MySQL error analysis
import px
df = px.DataFrame('mysql_events', start_time='-5m')
# Filter to error responses
df = df[df.resp_status == 3]
px.display(df)
Scratch Pad
The Scratch Pad allows running custom PxL scripts without modifying built-in ones. Access it from the Live UI navigation.
A script consists of two parts:
- PxL Script — the data query logic (Python-like)
- Vis Spec — the visualization specification (JSON)