Skip to content

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

Merged
mpiton merged 2 commits intomasterfrom
feat/openmetrics-vm-status-uptime
Apr 20, 2026
Merged

feat(openmetrics): add VM status and uptime metrics#9684
mpiton merged 2 commits 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 for xcp_vm_status: pool_id, uuid, power_state, and optionally pool_name, vm_name.
Labels for xcp_vm_uptime_seconds: pool_id, uuid, 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
Copy link
Copy Markdown
Collaborator

@spacotte-vates spacotte-vates left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR description says that xcp_vm_uptime_seconds should have a power_state label but it's missing. Since the label would always be "Running" I think you can just remove it from the description.

Otherwise looks solid.

Comment thread packages/xo-server-openmetrics/src/openmetric-formatter.mts Outdated
@spacotte-vates spacotte-vates requested a review from b-Nollet April 13, 2026 13:04
@mpiton mpiton force-pushed the feat/openmetrics-vm-status-uptime branch from 19a8d3f to 265ce57 Compare April 13, 2026 13:17
Comment thread packages/xo-server-openmetrics/src/open-metric-server.mts Outdated
Comment thread packages/xo-server-openmetrics/src/openmetric-formatter.mts Outdated
Comment thread docs/docs/advanced.md Outdated
Comment thread packages/xo-server-openmetrics/src/openmetric-formatter.test.mts
@mpiton mpiton requested a review from b-Nollet April 20, 2026 09:12
Copy link
Copy Markdown
Collaborator

@b-Nollet b-Nollet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, you can rebase and merge

@mpiton mpiton force-pushed the feat/openmetrics-vm-status-uptime branch from d3855ce to e8961b9 Compare April 20, 2026 09:48
@mpiton mpiton merged commit 45f810c into master Apr 20, 2026
1 check passed
@mpiton mpiton deleted the feat/openmetrics-vm-status-uptime branch April 20, 2026 12:09
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.

3 participants