As you noticed, these aggregated metrics are not split into per-vhost values (because they are aggregated :) ). Some metrics returned by /metrics/per-object, do return the vhost, so for example, you can count
the number of values returned by "rabbitmq_queue_messages_ready{vhost="/"}" to get a number of queues in vhost /. Similarly, you can count the number of values returned by "rabbitmq_channel_get_empty_total{vhost="/"}",
to get a number of channels in the / vhost.
The point is - the fact that the value you are looking for is not explicitly there, doesn't mean you can't calculate it - you can use the count() function, as in:
count(rabbitmq_queue_messages_ready{vhost="/"}")
But the Management API could be a simpler solution.