在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

KVM虚拟机监控的示例分析

138次阅读
没有评论

共计 3710 个字符,预计需要花费 10 分钟才能阅读完成。

丸趣 TV 小编给大家分享一下 KVM 虚拟机监控的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

    1 对 CPU 的监控

Python 代码

import libvirt
import os
import time

conn=libvirt.open(qemu:///system)
if conn==None:
print  fail to connect hypervisor
sys.exit(1)
try:
dom0=conn.lookupByID(85)# 根据 OpenStack 创建的 Instance ID 得到相应的 Domain 对象
except:
print  fail to find the domain by ID
sys.exit(1)

Pstart_time=time.time()  # 取当前时间
Dstart_time=dom0.info()[4]# 直接获取 DomainInfo 中的 CPU 时间信息
time.sleep(2)
Dstop_time=dom0.info()[4]
Pstop_time=time.time()
core_num=int(dom0.info()[3])# 获取 DomainIndo 中的 core 数量信息

#CPU 利用率计算公式 -CPU 时间差 / 时间间隔 /1000000000/ 核的数量 *100=CPU 利用率
cpu_usage=(Dstart_time-Dstop_time)/(Pstart_time-Pstop_time)/1000000000/core_num*100
cpu_usage=cpu_usage if (cpu_usage 0) else 0.0
cpu_usage=cpu_usage if (cpu_usage 100) else 100.0
print cpu_usage

     

   2 对内存的监控

python 代码

def get_memory(pid):# 定义获取当前已使用的内存的函数
mem=0

#linux 下 /proc/pid(进程 ID)/smaps 下保存的是进程内存映像信息,比同一目录下的 maps 文件更详细些

for line in file(/proc/%d/smaps % int(pid), r ):
if re.findall(Private_ ,line):

  #统计 Private 内存信息量
mem+=int(re.findall( (\d+) ,line)[0])
return mem

# 根据实例名获取进程 ID

pid=(os.popen( ps aux|grep +dom0.name()+ | grep -v grep | awk {print $2} ).readlines()[0])
memstatus=get_memory(pid)
memusage= %.2f % (int(memstatus)*100.0/int(dom0.info()[2]))
print memusage

验证方法:可以 SSH 到相应的虚拟实例上,如果是 Linux 系统可以用 free - m 指令查看内存使用率

   3 对磁盘的监控

    创建虚拟机应用实例时,会生成相应的 XML 文件来表明实例的信息

   def get_devices(dom,path,devs):# 该函数用于获取 XML 中某节点的值

tree=ElementTree.fromstring(dom.XMLDesc(0))# 将 XML 文件转换为 XML 树对象
devices=[]
for target  in tree.findall(path):
dev=target.get(devs)
if  not dev  in devices:
devices.append(dev)
return devices

def get_blockStats(dom):# 获取磁盘状态信息函数 包含磁盘读入的总比特数和写出的总比特数
block_status={}
disks=get_devices(dom, devices/disk/target , dev)
for block in disks:
block_status[block]=dom.blockStats(block)
return block_status

block_status0={}
block_status1={}
block_status0=get_blockStats(dom0)
time.sleep(2)
block_status1=get_blockStats(dom0)
block_info=[]
for block in get_devices(dom0, devices/disk/source , file):
block_info.append(dom0.blockInfo(block,0))# 获取磁盘信息 其中 0 为默认传入的参数
for domBlockInfo in block_info:
print logical size in bytes :%s % domBlockInfo[0]
print highest allocated extent in bytes :%s % domBlockInfo[1]
print physical size in bytes :%s % domBlockInfo[2]
print disk usage :%s % str(domBlockInfo[1]/1.0/domBlockInfo[0]*100)[:5]
for block in get_devices(dom0, devices/disk/target , dev):
print rd_speed :%s % str((block_status1[block][1]-block_status0[block][1])/2048)
print wr_speed :%s % str((block_status1[block][3]-block_status0[block][3])/2048)

验证方法:可以 SSH 到相应的虚拟实例上,如果是 Linux 系统可以用 df - h 指令查看磁盘使用率

    4 对网络的监控

def get_nicInfo(nics):# 获取网络信息包括 Receive 的总比特数和 Transmit 的总比特数
net_status={}

# 通过 cat /proc/net/dev 命令查看网络信息
for nic  in nics:
net_status[nic]=[os.popen( cat /proc/net/dev |grep -w +nic+ |awk {print $10} ).readlines()[0][:-1],os.popen(cat /proc/net/dev |grep -w +nic+ |awk {print $2} ).readlines()[0][:-1]]
return net_status
net_status0={}
net_status1={}

# 获取网卡名称
nics=get_devices(dom0, devices/interface/target , dev)
net_status0=get_nicInfo(nics)
time.sleep(2)
net_status1=get_nicInfo(nics)
for nic  in nics:
print   netcard_name :%s % nic
print   transmit_speed :%s %  str((int(net_status1[nic][0])-int(net_status0[nic][0]))/2048)
print   receive_speed :%s %  str((int(net_status1[nic][1])-int(net_status0[nic][1]))/2048)

参考:

Libvirt 官网 API 定义

virDomainBlockInfo

struct virDomainBlockInfo {

unsigned long longcapacity

logical size in bytes of the block device backing image

unsigned long longallocation

highest allocated extent in bytes of the block device backing image

unsigned long longphysical

physical size in bytes of the container of the backing image

}

virDomainBlockStatsStruct

struct virDomainBlockStatsStruct {

long longrd_req

number of read requests

long longrd_bytes

number of read bytes

long longwr_req

number of write requests

long longwr_bytes

number of written bytes

long longerrs

In Xen this returns the mysterious oo_req .

}

以上是“KVM 虚拟机监控的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计3710字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 久久riav.com | 欧美日韩一区二区综合 | 中文一级黄色片 | 久久夜色精品国产亚洲av动态图 | 久久久精品久久久久三级 | 99精品国产久热在线观看66 | 日韩欧美在线视频不卡免费视频 | 一区二区视频免费看 | 国产精品人妻一区夜夜爱 | 视频一区二区三区免费观看 | 亚洲天堂999 | 久久天堂视频 | 精品无码一区二区三区亚洲桃色 | 亚洲黄色电影 | 国产精品久久久久久爽爽爽床戏 | 99热欧美| 精品久久久久久无码专区不卡 | 囗交免费网站 | 一区二区三区免费视频 www | 成人欧美一区二区三区1314 | 四虎影院国产精品 | 大地资源在线观看中文免费 | 黄网站欧美内射 | 国产一区在线观看视频 | 国产 精品 自在 线免费 | 久久99热精品免费观看k影院 | 久久久久久午夜成人影院 | 久久av高潮av无码av喷吹 | 日韩a在线观看 | 欧美一级看片a免费视频 | 免费99热在线观看 | 黄色成人免费视频 | 免费观看一级欧美在线视频 | 成人毛片免费视频 | 久久国产电影 | 深夜a级毛片视频免费 | 国产高清视频在线观看 | 国产成人久久精品区一区二区 | 四虎网站最新网址 | 日韩美一区二区三区 | 国产视频一区二 |