Skip to content

feat(openmetrics): add VM status and uptime metrics#9684

Open
mpiton wants to merge 1 commit intomasterfrom
feat/openmetrics-vm-status-uptime
Open

feat(openmetrics): add VM status and uptime metrics#9684
mpiton wants to merge 1 commit intomasterfrom
feat/openmetrics-vm-status-uptime

Conversation

@mpiton
Copy link
Copy Markdown
Collaborator

@mpiton mpiton commented Apr 8, 2026

Description

Add VM status and uptime metrics to the OpenMetrics/Prometheus endpoint.

Two new gauge metrics are exposed:

Metric Description
xcp_vm_status VM power state (1 = current state), with power_state label (Running, Paused, Halted, Suspended)
xcp_vm_uptime_seconds VM uptime in seconds since boot (running VMs only)

Labels: pool_id, uuid, power_state, and optionally pool_name, vm_name.

The implementation follows the existing host status/uptime patterns:

  • Status: dedicated IPC payload (VmStatusItem via GET_VM_STATUS/VM_STATUS), ensuring all VMs are included regardless of RRD data availability
  • Uptime: LabelContext enrichment (VmLabelInfo with startTime, power_state, pool_id, pool_name), only emitted for running VMs to avoid stale startTime on halted/suspended VMs

VM-controllers (dom0) are excluded from both metrics.

Tested on XOA with real infrastructure — both metrics correctly exposed on /metrics endpoint.

Capture d’écran du 2026-04-08 12-43-19 Capture d’écran du 2026-04-08 12-42-43

Fixes XO-1993

Checklist

  • Commit
    • Title follows commit conventions
    • Reference the relevant issue (Fixes XO-1993)
    • If bug fix, add Introduced by
  • Changelog
    • If visible by XOA users, add changelog entry
    • Update "Packages to release" in CHANGELOG.unreleased.md
  • PR
    • If UI changes, add screenshots
    • If not finished or not tested, open as Draft

Review process

If you are an external contributor, you can skip this part. Simply create the pull request, and we'll get back to you as soon as possible.

This 2-passes review process aims to:

  • develop skills of junior reviewers
  • limit the workload for senior reviewers
  • limit the number of unnecessary changes by the author
  1. The author creates a PR.
  2. Review process:
    1. The author assigns the junior reviewer.
    2. The junior reviewer conducts their review:
      • Resolves their comments if they are addressed.
      • Adds comments if necessary or approves the PR.
    3. The junior reviewer assigns the senior reviewer.
    4. The senior reviewer conducts their review:
      • If there are no unresolved comments on the PR → merge.
      • Otherwise, we continue with 3.
  3. The author responds to comments and/or makes corrections, and we go back to 2.

Notes:

  1. The author can request a review at any time, even if the PR is still a Draft.
  2. In theory, there should not be more than one reviewer at a time.
  3. The author should not make any changes:
    • When a reviewer is assigned.
    • Between the junior and senior reviews.

@mpiton mpiton force-pushed the feat/openmetrics-vm-status-uptime branch from 9f65f58 to 19a8d3f Compare April 8, 2026 09:06
@plane-sync-vates
Copy link
Copy Markdown

Linked to Plane Work Item(s)

This comment was auto-generated by Plane

@mpiton mpiton marked this pull request as ready for review April 8, 2026 10:52
@mpiton mpiton requested a review from spacotte-vates April 8, 2026 10:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant