Onevm list does not show MONITORING data

Hi all,

I am trying to use onevm list --extended --json to get useful data from ONe, but it seems that the MONITORING section is empty for some (not all) of my running VMs, even though onevm show <ID> --json contains monitoring data as expected. Why there is a dfference between this:

onevm list --extended --json | jq '.VM_POOL.VM[] | select(.ID=="8895") | .MONITORING,.STATE'
{}
"3"

and this:

onevm show --json 8895 | jq '.VM.MONITORING, .VM.STATE'
{
  "CPU": "251.04",
  "DISKRDBYTES": "44765184",
  "DISKRDIOPS": "3985",
  "DISKWRBYTES": "1525964955648",
  "DISKWRIOPS": "49598571",
  "ID": "8895",
  "MEMORY": "40114656",
  "NETRX": "391185323893",
  "NETTX": "38169537979",
  "TIMESTAMP": "1737474034"
}
"3"

This is ONe 6.8.0 on AlmaLinux 9 hosts, using KVM for virtualizaton and Ceph as a storage.

Thanks,

–Yenya

Update: it seems that recently created VMs contain empty MONITORING section, while many older VMs have data in the MONITORING section of onevm list --json --extended.

Hi @Yenya,

First easy answer should be: Upgrade to 6.10. This issue might be something that the team fixed already, so if you can upgrade and check if the issue persists, so the team will file a bug.

Aside that, the VM Monitoring can be located inside onevm list, but it’s not regularly updated, so it may contain old values.

Cheers,

Hi @FrancJP ,

I have upgraded to 6.10 now. It was not such an easy answer as one would expect, but nevertheless it seems that there are still running VMs with empty MONITORING section in onevm list.

$ onevm list --extended --json | jq '.VM_POOL.VM[] | select(.ID=="8895") | .MONITORING,.STATE'
{}
"3"

What I am trying to do is to get monitoring info from all VMs in order to evaluate which ones impose the highest IOPS load on the back-end storage. Querying each VM with a distinct onevm show is quite slow. Is there more efficient way how to extract this information from OpenNebula?

Thanks,

-Yenya

As the monitoring data were moved tp different DB table, it’s no longer possible to show it using onevm list --extended. Currently, the only option is to loop onevm show for all VMs.