使用Shell脚本监控KVM虚拟机
来源:互联网 发布:德州淘宝村 编辑:程序博客网 时间:2024/05/20 06:05
最近有朋友问我平时使用KVM虚拟机的时候用什么软件进行管理。其实我平时都是使用virsh命令通过命令行进行虚拟机的管理的。虽然redhat有虚拟机管理和监控平台,但是只能在redhat发行版上使用,其他平台都与这个软件无缘,包括centos。
如果管理kvm用virsh命令,那么监控用什么命令啊?
我的方案是,监控各个kvm虚拟机使用zabbix; 在主机上结合使用ps命令和top命令进行监控。
使用zabbix不是我在这里讨论的重点,感兴趣的话,可以上网查阅相关资料。我在这里只介绍如何使用top和ps命令在主机上监控虚拟机。
但是单独以上二个命令是有问题的:
单独使用top只能看到进程号(PID)和命令描述(qemu-kvm),无法看到是哪一个虚拟机(如下),而virsh命令主要是使用虚拟机名称对虚拟机进行管理的:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3525 root 20 0 20.8g 16g 5636 S 58.1 12.8 19499:19 qemu-kvm 3586 root 20 0 20.6g 10g 5636 S 56.1 8.2 18289:31 qemu-kvm129225 root 20 0 6634m 1.2g 5596 S 4.0 1.0 1001:20 qemu-kvm129268 root 20 0 4946m 707m 5596 S 4.0 0.5 964:44.63 qemu-kvm 3664 root 20 0 5561m 1.2g 5608 S 3.6 0.9 1318:51 qemu-kvm
单独使用ps命令虽然可以看到进程和虚拟机的对应关系但是无法看到实时的监控数据(如下):
ps aux|grep -v 'grep'|grep -v 'vhost-'|grep 'qemu-kvm'|awk '{print $2" "$13}'3525 CKB_JinDie_Server3586 CKB_JinDie_HA_Server3664 DNS_Server129225 Discuz_Server129268 TCExam_Server
因此必须写一个shell脚本将这二个命令进行结合,将虚拟机名称和实时数据对应起来;同时还需要定时来刷新数据,以实现在主机上实时监控虚拟机运行情况的目的。
shell脚本如下:
#!/bin/bash# 查看本机kvm虚拟机的运行情况# Author:CMZSteven#Create Date:2016-06-08#Modified Date:2016-06-08while true;do#清空屏幕显示clear;#获得这一时刻的top信息,并输出到指定文件top -bn1 > /tmp/kvm_top.txt;#获得进程号和虚拟机名称对应表,并输出到指定文件ps aux|grep -v 'grep'|grep -v 'vhost-'|grep 'qemu-kvm'|awk '{print $2" "$13}'> /tmp/kvm_list.txt#获得top命令的前7行,也就是汇总信息行cat /tmp/kvm_top.txt|head -n 7;#将虚拟机名称放到指定信息行的上一行上,实现名称和监控信息的对应for i in `cat /tmp/kvm_list.txt|awk '{print $1}'`;do grep $i /tmp/kvm_list.txt|awk '{print $2}'; grep $i /tmp/kvm_top.txt|grep -v 'vhost-';done;#输入相关监控信息后,暂停10秒,以便查看相关数据sleep 10done;
实际运行结果如下:
top - 17:03:55 up 24 days, 6:29, 2 users, load average: 0.91, 0.98, 1.07Tasks: 742 total, 1 running, 741 sleeping, 0 stopped, 0 zombieCpu(s): 0.9%us, 1.5%sy, 0.0%ni, 97.5%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%stMem: 131915040k total, 81581596k used, 50333444k free, 143408k buffersSwap: 8388604k total, 0k used, 8388604k free, 48952552k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMANDCKB_JinDie_Server 3525 root 20 0 20.8g 16g 5636 S 56.4 12.8 19547:40 qemu-kvmCKB_JinDie_HA_Server 3586 root 20 0 20.6g 10g 5636 S 56.4 8.2 18330:33 qemu-kvmDNS_Server 3664 root 20 0 5561m 1.2g 5608 S 5.8 0.9 1321:51 qemu-kvmDiscuz_Server129225 root 20 0 6634m 1.2g 5596 S 3.9 1.0 1004:30 qemu-kvmTCExam_Server129268 root 20 0 4946m 707m 5596 S 5.8 0.5 967:46.78 qemu-kvm
其实这个脚本还是有改进空间的,如果大家和兴趣,可以自己去尝试升级一下。
0 0
- 使用Shell脚本监控KVM虚拟机
- 用shell脚本监控kvm虚拟机
- 批量创建KVM虚拟机与批量推公钥的shell脚本
- 编写shell脚本监控java虚拟机内存回收(gc)
- shell之KVM虚拟机管理
- linux kvm虚拟机使用
- KVM虚拟机的使用
- 通过编写Shell、Python脚本来实现在线管理KVM虚拟机
- KVM虚拟机脚本自动化安装脚本
- KVM虚拟机脚本自动化安装脚本1
- 主机监控shell脚本
- Shell:监控脚本
- 主机监控Shell脚本
- shell脚本监控
- shell服务器监控脚本
- Shell监控脚本
- 监控磁盘空间shell脚本
- shell 监控脚本
- 工具类:LogUtil
- 执行程序的时候指定jdk和scala
- java实现简单的单点登录
- Android 官方推荐 : DialogFragment 创建对话框
- libevent windows build
- 使用Shell脚本监控KVM虚拟机
- 工具类:TimeUtil
- ORACLE告警日志文件
- 打断线(Split polyline at a vertic point)
- Nginx之(正)反向代理
- cocos2dx android SDK接入总结
- Java基础之图形用户界面的设计
- leetCode_根据前序、中序建树以及根据中序、后序建树
- java基础--jsp/servlet