Python 实现Linux KVM 系统监控指标,很多年前写的,拿出来是为了帮助同事,快速学习Python技术

#!/usr/bin/env python
#-*-coding:utf8-*-
"""
@Author :  Villiam Sheng
@Group  :  Linux Group
@Date   :  2011-07-18
@Funtion:
            Update kvm host status ...
            get_nic: Get a week network flow
                1,Get Seven days before flow,get maximum value!
                2,Get Seven days before flow,get average value!
 
"""
import os,sys,libvirt,socket,shutil,re
from  statvfs import F_BLOCKS,F_BAVAIL,F_BSIZE
 
class kvm_os_status(object):
    def __init__(self):
        self.vmm = {}
        try:
            self.conn = libvirt.open(None)
        except libvirt.libvirtError,e:
            print e
 
    def get_mem(self):
        try:
            f = open(‘/proc/meminfo‘,‘r‘)
            for i in f.readlines():
                if i.find(‘MemTotal:‘) != -1:
                    total_mem=int(i.split(‘:‘)[1].split(‘kB‘)[0])/1024
                    continue
            try:
                exec_command = """ grep "memory" /data*/domains/*/*.xml 2>/dev/null |awk -F "<memory>" ‘{print $2}‘|awk -F "</memory>" ‘{print $1}‘ """
                mem = os.popen(exec_command).readlines()
                act_mem = 0
                for m in mem:
                    act_mem += int(m) / 1024
                self.vmm[‘free_mem‘] = total_mem - act_mem
            except Exception,e:
                pass
        except Exception,e:
            pass
 
    def get_mip(self):
        try:
            exec_command = """cat /etc/sysconfig/network-scripts/ifcfg-br0 |grep "IPADDR"|awk -F"=" ‘{print $2}‘ 2>/dev/null"""
            mip = os.popen(exec_command).read().strip()
            sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
            try:
                sock.connect((mip,0))
            except socket.error,e:
                exec_command = """cat /etc/sysconfig/network-scripts/ifcfg-br1 |grep "IPADDR"|awk -F"=" ‘{print $2}‘"""
                nip = os.popen(exec_command).read().strip()
                self.vmm[‘mip‘] = nip
            self.vmm[‘mip‘] = sock.getsockname()[0]
        except:
            pass
 
 
    def get_disk(self):
        extends = []
        disk={}
        try:
            ext_disk = os.popen("df -h |awk ‘{print $1,$6}‘|grep -v ‘tmpfs‘|grep -v ‘Filesystem‘|grep -v ‘sda1‘|grep -v ‘mfs‘|grep -v ‘T‘").readlines()
        except Exception,e:
            print e
        if ext_disk == "":
            self.vmm[‘free_disk‘] = vfs[F_BLOCKS]*vfs[F_BSIZE]/1024/1024/1024
        else:
            free_disk = 0
            for disk in ext_disk:
                try:
                    vfs = os.statvfs(disk.split()[1])
                except Exception,e:
                    print e
                full_space = vfs[F_BLOCKS]*vfs[F_BSIZE]/1024/1024/1024
                free_space = vfs[F_BAVAIL]*vfs[F_BSIZE]/1024/1024/1024
                imgs = os.popen("ls -ls %s/domains/vm*/data*.img 2>/dev/null | awk ‘{print $1,$6}‘" % disk.split()[1]).readlines()
                if imgs:
                    for i in imgs:
                        t_size, f_size = i.strip().split()
                        free_space -= int(f_size)/1024/1024/1024
                        if int(t_size) != 0:
                            free_space += int(t_size)/1024/1024
                disk={disk.split()[1]:free_space}
                for i in disk.keys():
                    free_disk += disk[i]
            self.vmm[‘free_disk‘] = free_disk
            a = os.popen("cat /etc/issue|awk ‘{print $7}‘|grep -v ‘Kernel‘|grep -v ‘^$‘").readline()
            self.vmm[‘os_type‘] = ‘RHEL%sx64‘%a.strip()
 
    def count(self):
        self.vmm[‘vmm_count‘] = 0
        try:
            for id in self.conn.listDomainsID():
                dom = self.conn.lookupByID(id)
                self.vmm[‘vmm_count‘] = self.vmm[‘vmm_count‘] + 1
        except libvirt.libvirtError,e:
            pass
        print self.vmm
    def work(self):
        self.get_mem()
        self.get_disk()
        self.get_mip()
        self.count()
 
if __name__ == "__main__":
    st = kvm_os_status()
    st.work()
时间: 2024-08-24 21:37:53

Python 实现Linux KVM 系统监控指标,很多年前写的,拿出来是为了帮助同事,快速学习Python技术的相关文章

Day 7 Linux之系统监控、硬盘分区等

Linux之系统监控.硬盘分区等 系统监控 系统监视和进程控制工具—top和free 1) 掌握top命令的功能:top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. 2) 了解使用top命令列出系统状态时,系统默认每5秒刷新一下屏幕上的显示结果.  1.第一行是任务队列信息 14:54:36 当前时间 up 3:42 系统运行时间(时:分) 3 users 当前登录用户数 load average:0.03 0.05 0.10

linux常用系统监控命令

原文:http://blog.sina.com.cn/s/blog_68f1c17001016uvy.html Linux提供了很多用于监控系统的工具,使用这些工具可以找到导致系统性能降低的瓶颈.系统反应慢并不总是由于CPU慢,它也可能是因为磁盘速度太慢.系统中安装的内存较少.网络拥挤或其他反应较慢的系统部件导致. 一.top –进程活动监控 最广泛使用的系统性能监控工具是top,你启动top后,它每隔五秒显示一屏信息,动态实时地显示系统状态. top的输出显示如下: 在最顶行显示了系统名和信息

linux命令---系统监控

和系统运行状况相关的Shell命令:    1.  Linux的实时监测命令(watch):    watch 是一个非常实用的命令,可以帮你实时监测一个命令的运行结果,省得一遍又一遍的手动运行.该命令最为常用的两个选项是-d和-n,其中-n表示间隔多少秒 执行一次"command",-d表示高亮发生变化的位置.下面列举几个在watch中常用的实时监视命令:    /> watch -d -n 1 'who'   #每隔一秒执行一次who命令,以监视服务器当前用户登录的状况  

系统监控指标获取

1.DB02 SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF } .L0S31 { font-style: italic; color: #808080 } .L0S32 { color: #3399FF } .L0S33 { color: #4DA619 } .L0S52 { color: #0000FF } .L0S55 { color: #800080

Linux: 确定系统中哪个进程在写文件

本系列文章由muge0913编写,转载请注明出处:http://www.openext.org/2015/10/linux-which-pid-write-file 微博:http://weibo.com/muge0913 版权声明:本文为博主原创文章,未经博主允许不得转载.

快速学习 Python 数据分析包 之 pandas

最近在看时间序列分析的一些东西,中间普遍用到一个叫pandas的包,因此单独拿出时间来进行学习. 参见 pandas 官方文档 http://pandas.pydata.org/pandas-docs/stable/index.html 以及相关博客 http://www.cnblogs.com/chaosimple/p/4153083.html Pandas介绍 Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底

Linux进程管理和系统监控ps,top

在Linux下进程查看和进程管理是经常使用的命令,我们可以使用ps来查看上一个状态中,各进程的信息,也可以通过top命令来实时的查看进程的属性信息.可以通过kill来管理进程运行,通过调整renice值来调整进程的优先级. 而htop.dstat.glances则是非常优秀Linux的系统监控命令,接下来就一步一步介绍他们的使用. ps的使用 查看ps是shell内置的命令还是外部命令 [[email protected] ~]# type psps is /bin/ps 由上可知ps是外部命令

初学者如何迅速学习Python开发

首先告诉你的是,零基础学习开始学习Python 肯定难,Python的专业程度本身就不简单,学习这事本来就是一件非常煎熬的事情,人都不愿意学习,可是没办法,为了生存掌握一个技能,你必须学,如果你认真的对待,你就找不到高薪水的工作,所以首先学习Python意志,坚持非常重要,很多人放弃的原因根本就是缺乏这些素质. 零基础学习Python必须明确的几点: 1.明确你将来是做什么工作的,需要掌握哪些技能,很多人连这个就不知道就盲目的学,你首先清楚,现在公司需要什么人才,你应该奔着什么目标努力. 2.系

哪些人适合学习Python?老男孩IT教育

零基础学Python要多久?python培训路线 Python是一门简单的编程语言,很多没有编程经验或者对编程一知半解的人都会选择python作为入门编程语言,随着人工智能的发展,python的就业前景也是相当不错的,因此,python是一门既好学又挣钱的编程语言. 对于python的学习,以下几类人更需要掌握: 一.编程新手 非常喜爱编程,以后想从事相关工作,但是零基础,不知道入门选择什么编程语言的朋友,其实是最适合选择Python编程语言的. 二.网站前端开发人员 平常只关注div+css这