写一个关于监控的psutil模块

前几天看到朋友郑彦生分享的psutil模块的使用方法,感觉对于监控又多了一层想法,因为前期主要是通过saltstack,收集数据,但是有时候比较麻烦,在小型规模做监控的时候还是建议用psutil模块,方便快捷:首先介绍psutil模块的一些基本用法:

1、监控cpu:

>>>importpsutil>>>psutil.cpu_count()#查看线程24>>>psutil.cpu_percent()#查看cpu负载0.20000000000000001

2、查看内存相关信息:

内存可以查看总共多少内存,使用了多少,还剩多少:

>>> mem = psutil.virtual_memory()

#统计所有的信息

>>>memsvmem(total=67502866432L,available=61983199232L,percent=8.1999999999999993,used=7092293632L,free=60410572800L,active=5551243264,inactive=410374144,buffers=335728640L,cached=1236897792)>>>mem.total#内存总数67502866432L>>>mem.used#使用了多少内存7092293632L>>>mem.free#剩余内存60410572800L

3、硬盘的IO和使用情况:

#输出硬盘分区信息>>>psutil.disk_partitions()[sdiskpart(device=’/dev/mapper/VolGroup-lv_root’,mountpoint=’http://xiaoluoge.blog.51cto.com/’,fstype=’ext4′,opts=’rw’),sdiskpart(device=’/dev/sda3′,mountpoint=’/boot’,fstype=’ext4′,opts=’rw’),sdiskpart(device=’/dev/mapper/VolGroup-lv_home’,mountpoint=’/home’,fstype=’ext4′,opts=’rw’)]#根据分区信息查看大小>>>psutil.disk_partitions(‘http://xiaoluoge.blog.51cto.com/’)[sdiskpart(device=’/dev/mapper/VolGroup-lv_root’,mountpoint=’http://xiaoluoge.blog.51cto.com/’,fstype=’ext4′,opts=’rw’),sdiskpart(device=’proc’,mountpoint=’/proc’,fstype=’proc’,opts=’rw’),sdiskpart(device=’sysfs’,mountpoint=’/sys’,fstype=’sysfs’,opts=’rw’),sdiskpart(device=’devpts’,mountpoint=’/dev/pts’,fstype=’devpts’,opts=’rw,gid=5,mode=620′),sdiskpart(device=’tmpfs’,mountpoint=’/dev/shm’,fstype=’tmpfs’,opts=’rw’),sdiskpart(device=’/dev/sda3′,mountpoint=’/boot’,fstype=’ext4′,opts=’rw’),sdiskpart(device=’/dev/mapper/VolGroup-lv_home’,mountpoint=’/home’,fstype=’ext4′,opts=’rw’),sdiskpart(device=”,mountpoint=’/proc/sys/fs/binfmt_misc’,fstype=’binfmt_misc’,opts=’rw’)]#硬盘IO的使用情况>>>psutil.disk_io_counters()sdiskio(read_count=107158,write_count=20666736,read_bytes=1792485376,write_bytes=133169932288,read_time=130421,write_time=337076882)4、采集网卡流量和网络IO:#统计总体信息>>>psutil.net_io_counters()snetio(bytes_sent=984192973,bytes_recv=1274031495,packets_sent=3924134,packets_recv=6024010,errin=0,errout=0,dropin=0,dropout=0)#查看具体每个接口{‘lo’:snetio(bytes_sent=349343820,bytes_recv=349343820,packets_sent=1583789,packets_recv=1583789,errin=0,errout=0,dropin=0,dropout=0),’em1′:snetio(bytes_sent=634794145,bytes_recv=823789288,packets_sent=2339457,packets_recv=3623086,errin=0,errout=0,dropin=0,dropout=0),’em4′:snetio(bytes_sent=0,bytes_recv=0,packets_sent=0,packets_recv=0,errin=0,errout=0,dropin=0,dropout=0),’em3′:snetio(bytes_sent=59939,bytes_recv=100907694,packets_sent=932,packets_recv=817226,errin=0,errout=0,dropin=0,dropout=0),’em2′:snetio(bytes_sent=0,bytes_recv=0,packets_sent=0,packets_recv=0,errin=0,errout=0,dropin=0,dropout=0)}

*注:当然还有很多信息,大家可以去官网查看,,,我这里就简单解释了

下面是为了方便下次调用的时候写的模块,返回参数单位都是M。大家需要转换成G为单位的话直接/1024即可。

[root@mailtest]#catmiontor.py#!/usr/bin/envpythonimportre,pickleimportpsutilimporttimedefGetcpuLoad():cpuLoad=psutil.cpu_percent(interval=1)returncpuLoaddefGetMeminfo():mem=psutil.virtual_memory()mem_total=mem.total/1024/1024mem_user=mem.used/1024/1024mem_free=mem.free/1024/1024mem_dic={‘mem_total’:float(mem_total),’mem_user’:float(mem_user),’mem_free’:float(mem_free)}returnmem_dicdefGetNetworkinfo(eth):networkinfo=psutil.net_io_counters(pernic=True)[eth]bytes_sent=list(networkinfo)[0]/1024/1024bytes_recv=list(networkinfo)[1]/1024/1024total=(bytes_sent+bytes_recv)returntotaldefGetNetworkio():networkio=psutil.net_io_counters()bytes_sent=list(networkio)[0]/1024/1024bytes_recv=list(networkio)[1]/1024/1024total=(bytes_sent+bytes_recv)returntotaldefGetdiskIO():disk_io=psutil.disk_io_counters()read_count=list(disk_io)[0]/1024/1024write_count=list(disk_io)[1]/1024/1024io_total=(read_count+write_count)returnio_totaldefGetdiskSize():disk_list=[]d_list=[]total_disk=[]disk_name=list(psutil.disk_partitions())fornameindisk_name:disk_list.append(list(name)[1])withopen(‘fdisk_list.txt’,’w’)asfd:pickle.dump(disk_list,fd)withopen(‘fdisk_list.txt’,’r’)asfd:fdisk_name=pickle.load(fd)forninfdisk_name:fdisk_name_list=ntotal=list(psutil.disk_usage(n))[0]/1024/1024used=list(psutil.disk_usage(n))[1]/1024/1024free=list(psutil.disk_usage(n))[2]/1024/1024d_list=[fdisk_name_list,total,used,free]total_disk.append(d_list)withopen(‘total_list.txt’,’w’)asfd:pickle.dump(total_disk,fd)if__name__==’__main__’:#printGetMeminfo()printGetNetworkinfo(’em3′)生命太过短暂,今天放弃了明天不一定能得到

写一个关于监控的psutil模块

相关文章:

你感兴趣的文章:

标签云: