是否有任何方法可以在不通过SSH连接到客户的情况下获得KVM中vm的cpu使用和内存使用情况?我的意思是,虚拟机管理器是如何获得CPU使用率(图表)的?我也需要cpu使用率和内存的百分比。有人知道如何通过libvirt与kvm通信吗?我只需要尽可能多地获得cpu使用量和内存,而不需要SSH。
场景:我正在尝试构建一个包含负载均衡器(主机)+3服务器( am )的设置,然后它会通知我这3台服务器的cpu使用情况,这样如果我需要提供另一台服务器,我就会知道什么时候。
谢谢你的帮助。真的很感激。
发布于 2014-06-18 17:57:00
您可以使用virDomainGetInfo函数从利布维特获取有关域占用的内存和cpu时间的信息。
下面是一个非常简单的例子:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <libvirt/libvirt.h>
int main(int argc, char **argv) {
virConnectPtr c;
virDomainPtr d;
virDomainInfo di;
int res;
int domid;
domid = atoi(argv[1]);
c = virConnectOpen(NULL);
d = virDomainLookupByID(c, domid);
res = virDomainGetInfo(d, &di);
printf("res = %d\n", res);
printf("memory used = %ld\n", di.memory);
printf("cpu time used = %ld\n", di.cpuTime);
}更新
我确信,如果您检查了virt-manager的源代码,您会发现它正是使用这些函数来生成您在问题中提到的各种图形。您可以通过查看"cpu时间“值随时间变化的多少来确定cpu”使用率“。
如果您只是在寻找类似于域正在使用的主机cpu的%,您可以只使用ps。也就是说,如果对应的qemu进程为19650,则可以运行:
$ ps -p 19650 -o pid,%cpu
PID %CPU
19650 10.2https://stackoverflow.com/questions/24284869
复制相似问题