用shell脚本监控kvm虚拟机
来源:互联网 发布:还珠格格原著知画结局 编辑:程序博客网 时间:2024/06/05 00:40
近日领导提出一个需求:要求不在任何一台云主机上安装agent或者其他东西,对云主机的CPU,内存,网络,IO进行监控,刚开始是一头雾水,后来听说可以通过监控kvm来提取数据
首先云主机都是分布在每一台物理服务器上,可以通过物理机上的kvm来获取云主机运行状态的数据
kvm虚机是用virsh来管理的
我的计划是,监控各个kvm虚拟机使用zabbix; 在主机上结合使用ps命令和top命令进行监控。
但是单独以上二个命令是有问题的:
单独使用top只能看到进程号(PID)和命令描述(qemu-system-x86),无法看到是哪一个虚拟机(如下),而virsh命令主要是使用虚拟机名称对虚拟机进行管理的:
单独使用ps命令虽然可以看到进程和虚拟机的对应关系但是无法看到实时的监控数据(如下):
root@ncnode02:~# ps aux|grep -v 'grep'|grep 'qemu-system-x86'|awk '{print $2" "$14}'8321 instance-0000025d8810 instance-000002389337 instance-0000022c10085 instance-000001df10566 instance-000001c811486 instance-000001ae12870 instance-0000014e14233 instance-0000013d14719 instance-0000010e15174 instance-000000fd15642 instance-000000f716186 instance-000000e316723 instance-000000cd17182 instance-000000c917366 instance-0000001b32402 instance-0000014532950 instance-0000014433895 instance-000001b6114823 instance-00000379
因此必须写一个shell脚本将这二个命令进行结合,将虚拟机名称和实时数据对应起来;同时还需要定时来刷新数据,以实现在主机上实时监控虚拟机运行情况的目的。
shell脚本如下:
#!/bin/bash#查看本机kvm虚拟机的运行情况#Author:fanht#create Date:2017-12-04#Modified Date: 2017-12-04while truedo#清空屏幕 clear#获得这一时刻的top信息,并输出到指定文件 top -bn1 > /tmp/kvm_top.txt;#获得进程号和虚拟机名称对应表,并输出到指定文件 ps aux|grep -v 'grep'|grep 'qemu-system-x86'|awk '{print $2" "$14}' > /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
实际运行结果如下:
用脚本可以看到每台云主机的cpu和内存,但是依然很不好,没有图形化的图表,还需要继续研究用zabbix来监控云主机的运行状态
参考:http://blog.csdn.net/cmzsteven/article/details/51614265
阅读全文
0 0
- 用shell脚本监控kvm虚拟机
- 使用Shell脚本监控KVM虚拟机
- 批量创建KVM虚拟机与批量推公钥的shell脚本
- 编写shell脚本监控java虚拟机内存回收(gc)
- shell之KVM虚拟机管理
- 通过编写Shell、Python脚本来实现在线管理KVM虚拟机
- KVM虚拟机脚本自动化安装脚本
- KVM虚拟机脚本自动化安装脚本1
- 用shell脚本监控进程,挂掉后重启
- 主机监控shell脚本
- Shell:监控脚本
- 主机监控Shell脚本
- shell脚本监控
- shell服务器监控脚本
- Shell监控脚本
- 监控磁盘空间shell脚本
- shell 监控脚本
- shell脚本监控进程
- java.lang.ClassNotFoundException: net.sf.json.JSONObject
- 自适应高度布局
- 关于接口api调用
- 修改oracle数据库用户名及密码的方法
- Android之路 1.activity跳转、传值、生命周期、活动
- 用shell脚本监控kvm虚拟机
- Android开发中线程池的使用总结
- 在ubuntu中安装单机Hadoop(一)
- PCL arm linux 源码安装
- ns2从入门到放弃(一)
- 三种基本的继承类型
- Android之路 2.Toast,Intent
- 使用pypy初步
- 当我说要做大数据工程师时他们都笑我,直到三个月后……