刘少星


人的一切痛苦,本质上都是对自己无能的愤怒。加油!


welcome to mine blog !

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

最近的文章

JavaScript变量作用域

转载自:http://www.cnblogs.com/rainman/archive/2009/04/28/1445687.html,略改JavaScript的变量作用域是基于其特有的作用域链JavaScript没有块级作用域函数中声明的变量在整个函数中都有定义1.JavaScript的作用域链var rain = 1;function rainman(){ var man = 2; funciton inner(){ var innerVar = 4; alert(rai...…

JavaScript继续阅读
更早的文章

kanyun server服务

数据接收和存储数据接收使用msg_type, report = socket.recv_multipart()获得数据类型和内容,然后再使用plugins[msg_type](app=app, db=db, data=data)调用相应的函数,处理数据从MYSQL数据库中获得相应实例的uuid,作为cassandra的key,即每一row存储一个虚拟机数据…

OpenStack继续阅读