kanyun worker原理
信息获取
主要是有几个plugin函数,依次调用,并把结果发给server
获得主机信息
plugin_local_cpu()
使用命令 sleep %d;top -n 1 -b|grep Cpu|awk '{print $2}' 来检测计算节点(非虚拟机)cpu占用率
plugin_traffic_accounting_info()
获得流量信息,测试不好用
获得宿主机信息
plugin_agent_info(){
import libvirt
conn = libvirt.openReadOnly('qemu:///system')
hostname = conn.getHostname() #获得主机信息
conn.listDomainsID() #列出宿主机
dom_conn = conn.lookupByID(1) #连接到第一台宿主机
dom_conn.name() #宿主机名称
dom_conn.info() #宿主机信息[id,mem_usage,mem_max,vcpu,cpu_time]
dom_conn.memoryStats() #宿主机内存使用{actual,rss}
}
通过调用libvirt来获取本台机器上虚拟机的使用情况
获得cpu信息
获得cpu使用率方式:
宿主机上cpu两段时间cpu运行时长间隔/主机上实际时长间隔
cpu = 100.0 * self.diffs[dom_id].get_diff() / (self.diffs[dom_id].get_time_pass() * dom_nr_virt_cpu * 1e9)
获得内存信息
获得内存总量和使用量有info()和memoryStats()两个函数。
info()函数取到的内存信息在这里测试时不准确,每次usage和max都是一样的值,而使用memoryStats()取到的是正常的,没有深究区别,先使用后者。
信息发送到server
self.send([msg_type, json.dumps(info)])
通过这句代码将数据发送到server端
其中包括采集到的info信息和本次发送信息的类型msg_type