-
This is qemu-guest-agent for BCLinux's images, it uesd in the openstack env, can monitor the system and do sometingelse.
-
It based on the 2.5 branch of github:qemu project
代码主要分三种:qemu-master版、qemu-kvm-0.12.1.2版、qemu-windows版,具体如下:
linux代码主要修改了两个文件:commands-posix.c和qapi-schema.json(qemu-kvm-0.12.1.2是qapi-guest-schema.json),
windows代码主要修改的是commands-win32.c和qapi-schema.json。添加的代码都用##########包起来了
-
qemu-master版适用于centos7、ubuntu14.04、ubuntu12.04;
-
qemu-kvm-0.12.1.2版适用于centos6.5、centos6.4;
-
qemu-windows版适用于windows-server2012。
64位和32位的qga需要分别在64位的机器和32位的机器上编译。
- 准备编译环境:
备注:添加新功能的话,主要修改如下两个文件:commands-posix.c,qapi-schema.json
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev git-email libaio-dev libbluetooth-dev
sudo apt-get install libbrlapi-dev libbz2-dev libcap-dev libcap-ng-dev libcurl4-gnutls-dev libgtk-3-dev libibverbs-dev
sudo apt-get install libjpeg8-dev libncurses5-dev libnuma-dev librbd-dev librdmacm-dev libsasl2-dev libsdl1.2-dev
sudo apt-get install libseccomp-dev libsnappy-dev libssh2-1-dev libvde-dev libvdeplug-dev libvte-2.90-dev libxen-dev liblzo2-dev valgrind xfslibs-dev
-
编译:
cd /root/qemu-master
mkdir -p bin/debug/native
cd /root/qemu-master/bin/debug/native
../../../configure --enable-debug
make qemu-ga
- 准备编译环境:
备注:添加新功能的话,主要修改如下两个文件:commands-posix.c,qapi-guest-schema.json
此处略过
-
编译:
cd /root/rpmbuild/BUILD/qemu-kvm-0.12.1.2
mkdir -p bin/debug/native
cd bin/debug/native
../../../configure
make qemu-ga
-
安装docker:
centos6.5:yum -y install docker-io
ubuntu14.04:yum -y install docker.io
-
编译:
docker run --rm --volume=/root/qemu-2.5.0/:/tmp/qemu-2.5.0 -t -i e3rp4y/centos-mingw-base
yum -y install libgsf wget
wget ftp://195.220.108.108/linux/fedora/linux/releases/21/Everything/x86_64/os/Packages/l/libgcab1-0.4-6.fc21.x86_64.rpm
scp 10.128.3.75:
/docker-lib/msitools-0.95-1.fc24.x86_64.rpm root@computer:/qemu-2.5.0/scp 10.128.3.75:
/docker-lib/libmsi1-0.95-1.fc24.x86_64.rpm root@computer:/qemu-2.5.0/rpm -ivh libgcab1-0.4-6.fc21.x86_64.rpm
cd /tmp/qemu-2.5.0
rpm -ivh libmsi1-0.95-1.fc24.x86_64.rpm
rpm -ivh msitools-0.95-1.fc24.x86_64.rpm
mkdir build
cd build
../configure --target-list=x86_64-softmmu --cross-prefix=x86_64-w64-mingw32- --enable-guest-agent --enable-guest-agent-msi
make V=1 VL_LDFLAGS=-Wl,--build-id qemu-ga-x86_64.msi
-
生成msi文件即可在windows上安装。
输入:{"execute":"guest-get-memory-status"}
输出:{"return": {"total":xx,"used":xxx,"buffer":xx,,"cached":xx,"swap":{"total":xx,"used":xxx}}} 备注:这里单位默认为MB
例:virsh qemu-agent-command centos7 '{"execute":"guest-get-memory-status"}'
输入:{"execute":"guest-get-system-info"}
输出:{"return": {"os-name":"xxxx","kernel-version":”xxxx”,"system-version":”xxxx”,"fqdn":”xxxx”,"lastlogin":"xxxx"}}
例:virsh qemu-agent-command centos7 '{"execute":"guest-get-system-info"}'
输入:{"execute":"guest-get-oom-status"}
输出:{"return": {"oom-happened":"true/false"}}
例:virsh qemu-agent-command centos7 '{"execute":"guest-get-oom-status"}'
输入:{"execute":"guest-get-app-status"}
输出:{"return": {"appStatus":"xxx"}}
备注:"xxx"为top的result
例:virsh qemu-agent-command centos7 '{"execute":"guest-get-app-status"}'
输入:{"execute":"guest-get-disk-status"}
输出:{"return": {"挂载点1":{"total":xxx1,"used",yyy1,"writable",true/false},"挂载点2":{"total":xxx2,"used",yyy2,"writable",true/false}}}
例:virsh qemu-agent-command centos7 '{"execute":"guest-get-disk-status"}'
输入:{"execute":"guest-user-check","arguments":{"command-name":"command-xxxx}}
输出:{"return": {"command-name":"resultxxx"}}
备注:command-name由用户定义,resultxxx为执行command-xxx的返回值)
例:virsh qemu-agent-command centos7 '{"execute":"guest-user-check", "arguments": {"command-name":"list", "command":"ls -l"}}'
输入:{"execute":" change-hostname”,"arguments":{"new-hostname":"xxxx”}}’
输出:{"return":{"errnum":X}}
备注:new-hostname由用户定义,errnum为执行修改主机名的返回值)
例:virsh qemu-agent-command centos6.5 '{"execute":"change-hostname", "arguments": {"new-hostname":"name1"}}'
输入:{"execute":" change-password”,"arguments":{"new-password":"xxxx”}}’
输出:{"return":{"errnum":X}}
备注:new-password由用户定义,errnum为执行修改root密码的返回值)
例:virsh qemu-agent-command centos6.5 '{"execute":"change-password", "arguments": {"new-password":"123456"}}'
memory.total 内存总量
memory.used 内存已使用
memory.buffer 内存buffer量
memory.cached 内存cached量
memory.swap.total 交换空间总量
memory.swap.used 交换空间已使用量
instance.system.info 操作系统信息,包括操作系统类型,版本,最后登录时间等
instance.oom.status 操作系统内存溢出状态
instance.app.status 操作系统应用程序状态
disk.total 磁盘挂载点的总量
disk.used 磁盘挂载点的已使用量
disk.writable 磁盘挂载点是否可读写
user.check 用户自定义检查