Docs Home
Viewing docs for
BYOCNot available for Self-Managed

Prometheus metrics reference

Prometheus metrics for monitoring the BYOC agent and its workspaces, with PromQL queries for each.

On this page

BYOC exposes Prometheus metrics for monitoring the agent and its workspaces. All metrics are gauges. Use these metrics to build dashboards and alerts in your monitoring system, such as Datadog through its Prometheus/OpenMetrics integration.

The example queries use PromQL syntax; the same metric names and label filters work when you query from other monitoring tools, such as Grafana or Datadog.

Replace <clusterId> with your cluster ID and <vcid> with the workspace (vcluster) ID. Numeric state values map to the states listed in each metric's description. Use these mappings for value-to-text display and alert conditions.

Metric source

The agent emits all metrics in this reference from the pyxis-api-gateway pods, which belong to the pyxis-api-gateway Deployment. The pods expose the metrics on port 9888.

Configure your monitoring tool to scrape port 9888 on the pyxis-api-gateway pods.

Agent metrics

Agent-level metrics need only the clusterId label.

pyxis_control_plane_info returns one series per control-plane component. The name label identifies the component (root, global, cluster, flink, flink-byoc, or a workspace ID), the type label identifies its category (root, product, flink-vc), and the state label carries the state as text. Filter by name to monitor each core control plane individually.

MetricTypeDescription
pyxis_cluster_health_stategaugeOverall health state of the agent/cluster. Values: 0 = Failed, 1 = Succeeded. Requires only the clusterId label. Use the latest value for a status panel, or plot it over time to see health transitions. Recommended alert: value 0 for more than a few minutes.

PromQL query:

TEXT
1max(pyxis_cluster_health_state{clusterId="<clusterId>"})
MetricTypeDescription
pyxis_control_plane_info (root)gaugeState of the root control plane. Values: 0 = NotReady, 1 = Ready, 2 = Disabled, 3 = Finalizing. Recommended alert: value 0 (NotReady).

PromQL query:

TEXT
1max(pyxis_control_plane_info{clusterId="<clusterId>", name="root"})
MetricTypeDescription
pyxis_control_plane_info (global)gaugeState of the global control plane. Same value mapping. Recommended alert: value 0 (NotReady).

PromQL query:

TEXT
1max(pyxis_control_plane_info{clusterId="<clusterId>", name="global"})
MetricTypeDescription
pyxis_control_plane_info (cluster)gaugeState of the cluster control plane. Same value mapping. Recommended alert: value 0 (NotReady).

PromQL query:

TEXT
1max(pyxis_control_plane_info{clusterId="<clusterId>", name="cluster"})
MetricTypeDescription
pyxis_control_plane_info (flink)gaugeState of the Flink product control plane. Same value mapping. Recommended alert: value 0 (NotReady).

PromQL query:

TEXT
1max(pyxis_control_plane_info{clusterId="<clusterId>", name="flink"})
MetricTypeDescription
pyxis_control_plane_info (flink-byoc)gaugeState of the flink-byoc control plane. Same value mapping. Recommended alert: value 0 (NotReady).

PromQL query:

TEXT
1max(pyxis_control_plane_info{clusterId="<clusterId>", name="flink-byoc"})

Workspace metrics

Workspace-level metrics need both the clusterId and vclusterId labels. The max() aggregation collapses duplicate series, for example from multiple scrape sources, into a single value per workspace.

MetricTypeDescription
pyxis_vcluster_stategaugeOverall state of a workspace. Values: 0 = NotReady, 1 = Ready, 2 = Disabled, 3 = Finalizing, 4 = Deleted. Use the latest value for a status panel, or plot it over time to see state transitions. Recommended alert: value 0 (NotReady).

PromQL query:

TEXT
1max(pyxis_vcluster_state{clusterId="<clusterId>", vclusterId="<vcid>"})
MetricTypeDescription
pyxis_vcluster_allocated_resource (CPU)gaugeCPU (cores) currently allocated to the workspace. Plot together with the allocatable metric to build a usage-vs-capacity chart.

PromQL query:

TEXT
1max(pyxis_vcluster_allocated_resource{resourceType="cpu", clusterId="<clusterId>", vclusterId="<vcid>"})
MetricTypeDescription
pyxis_vcluster_allocatable_resource (CPU)gaugeTotal CPU (cores) allocatable to the workspace, its capacity/quota.

PromQL query:

TEXT
1max(pyxis_vcluster_allocatable_resource{resourceType="cpu", clusterId="<clusterId>", vclusterId="<vcid>"})
MetricTypeDescription
pyxis_vcluster_allocated_resource (Memory)gaugeMemory (bytes) currently allocated to the workspace.

PromQL query:

TEXT
1max(pyxis_vcluster_allocated_resource{resourceType="memory", clusterId="<clusterId>", vclusterId="<vcid>"})
MetricTypeDescription
pyxis_vcluster_allocatable_resource (Memory)gaugeTotal memory (bytes) allocatable to the workspace, its capacity/quota.

PromQL query:

TEXT
1max(pyxis_vcluster_allocatable_resource{resourceType="memory", clusterId="<clusterId>", vclusterId="<vcid>"})
MetricTypeDescription
CPU allocated percentderivedPercentage of workspace CPU capacity currently allocated. Recommended alert: sustained value above 80%.

PromQL query:

TEXT
1(max(pyxis_vcluster_allocated_resource{resourceType="cpu", clusterId="<clusterId>", vclusterId="<vcid>"}) * 100)
2/ max(pyxis_vcluster_allocatable_resource{resourceType="cpu", clusterId="<clusterId>", vclusterId="<vcid>"})
MetricTypeDescription
Memory allocated percentderivedPercentage of workspace memory capacity currently allocated. Recommended alert: sustained value above 80%.

PromQL query:

TEXT
1(max(pyxis_vcluster_allocated_resource{resourceType="memory", clusterId="<clusterId>", vclusterId="<vcid>"}) * 100)
2/ max(pyxis_vcluster_allocatable_resource{resourceType="memory", clusterId="<clusterId>", vclusterId="<vcid>"})
MetricTypeDescription
pyxis_vcluster_component_state (Namespace)gaugeState of the workspace Namespace component. Values: 0 = NotReady, 1 = Ready.

PromQL query:

TEXT
1max(pyxis_vcluster_component_state{clusterId="<clusterId>", vclusterId="<vcid>", componentKey="Namespace"})
MetricTypeDescription
pyxis_vcluster_component_state (RAMSecurityToken)gaugeState of the workspace RAMSecurityToken component. Values: 0 = NotReady, 1 = Ready.

PromQL query:

TEXT
1max(pyxis_vcluster_component_state{clusterId="<clusterId>", vclusterId="<vcid>", componentKey="RAMSecurityToken"})
MetricTypeDescription
pyxis_vcluster_component_state (STS credential secret)gaugeState of the workspace STS credential secret monitor. Values: 0 = NotReady, 1 = Ready.

PromQL query:

TEXT
1max(pyxis_vcluster_component_state{clusterId="<clusterId>", vclusterId="<vcid>", componentKey="Monitor:vvp-sts-credential-secret"})
MetricTypeDescription
pyxis_vcluster_component_state (ResourceQuota)gaugeState of the workspace ResourceQuota component. Values: 0 = NotReady, 1 = Ready.

PromQL query:

TEXT
1max(pyxis_vcluster_component_state{clusterId="<clusterId>", vclusterId="<vcid>", componentKey="ResourceQuota"})

Notes

Visualize state metrics (pyxis_vcluster_state, pyxis_vcluster_component_state, pyxis_control_plane_info, pyxis_cluster_health_state) as a latest-value stat panel with value-to-text mapping, and as a time series to observe transitions.

CPU values are in cores. Memory values are in bytes.

Suggested baseline alerts: cluster health = 0 (Failed), any control-plane component = 0 (NotReady), workspace state = 0 (NotReady), any workspace component = 0 (NotReady), CPU or memory allocation above 80% of capacity.

Was this helpful?