Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9350376
  • 博文数量: 1669
  • 博客积分: 16831
  • 博客等级: 上将
  • 技术积分: 12594
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-25 07:23
个人简介

柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!

文章分类

全部博文(1669)

文章存档

2023年(4)

2022年(1)

2021年(10)

2020年(24)

2019年(4)

2018年(19)

2017年(66)

2016年(60)

2015年(49)

2014年(201)

2013年(221)

2012年(638)

2011年(372)

分类: 云计算

2017-02-14 14:45:59

CloudStack中对各种资源的监控机制


物理资源是虚拟化的基础设施, 对这些资源的监控及有效利用可以体现一个平台的价值; 同时监控的时效性,准确性直接影响你对资源的操作。CloudStack非常强大,它可以管理的Hypervisor包括XerServer、VMWware ESXi、KVM、OracleVM,并且同时也监控在这些Hypervisor上运行的虚拟机。CloudStack监控的主要数据有CPU,Memory,Network, DISK等. 本文就CloudStack对资源中的物理主机,存储,以及虚拟机的监控做下讲解.

以下我们选择Xenserver作为Hypervisor,NFS作为主存储及二级存储,以及XenServer VM为例来讲解CloudStack是如何监控这些资源的,大家可以以此为基础进一步了解其它资源的监控。

1. 资源监控功能及作用
CloudStack为什么监控资源。一方面,就是让管理员了解CloudStack物理资源处于什么状态,各种资源的利用率是多少,方便管理员早做计划。如下图:

另一方面,CloudStack也会用到监控到得数据,如部署一个虚拟机到某台物理机,会判断此机器的资源是否满足需求,如CPU,内存等。

2. 资源监控的实现
由于监控的资源类别差异很大,而且有实时性的要求,很容易想到使用多线程。CloudStack 在启动ManagementServer时创建了一个包含3个线程的线程池,它们分别周期性的监控主机,虚拟机,存储状态信息,各司其职。

a) 对主机,虚拟机的监控
监控主机和虚拟机在实现上差别不大,因为所有的命令都是发生给主机的,它们的流程几乎相同。先看一下UI主机和虚拟机的状态图。如下:

下图是总览,描述了CloudStack Management如何发送命令到主机的:

StatsCollector是主要的类,它的工作就是监控主机、存储、虚拟机的使用率。它要向主机发送命令,由AgentManager把CMD转换成Request发到此主机对应的DirectAgentAttache, DirectAgentAttache 用Request生成task,并把task放到线程池中执行,在task运行的时候判断Resource是否存在,如果存在,最终由相应的Resource把命令发送到主机。

这里与主机的通信和与系统虚拟机的通讯不同,例如与Xenserver的通讯需要Resource,再借助Task把AgentManager和Resource联系起来,Task的执行是需要等待的,等执行完毕(或者超时),Task会通知正在等待中的AgentManager线程。而与系统虚拟机之间的通讯比较直接,也就是直接发送到对方。我们细节的了解前者。

命令最终发送到Resource,再看看各种Resource是如何处理命令,并与主机打交道的。从流程图上来看,调用是非常明确的,不同的hypervisor对应不同的Resource,最终是由executeRequest处理的了这些命令。以CitrixResourceBase处理命令为例,见下图:

CitrixResourceBase接收到命令后,得到conn(代表与主机的连接),调用getRRData获得主机的信息。getRRData更加flag的值决定取得主机的信息还是虚拟机的信息,如果flag==1就是取得主机的信息。主机返回的是XML格式的数据,再图中的第2步骤,处理XML数据,求得memory,cpu,ethernet的平均使用率,然后返回数据。

结合上两张图,CitrixResourceBase返回结果,一直返回到调用者StatsCollector。StatsCollector把获得数据存在内存里,等UI要显示主机,虚拟机的信息时,就会向StatsCollector索要

b) 对存储的监控
存储包括主存储和二级存储。存储的监控很简单,只取得存储的总量和已分配容量即可。为了获得二级存储的容量信息,Cloudstack Managementserver会启动线程周期发生命令给二级存储虚拟机,由二级存储虚拟机负责统计二级存储的容量。而主存储的信息,是通过xenserver, Vcenter,KVMAgent获得的。

如果二级存储的话就由ClusteredAgentAttache直接发送给二级存储虚拟机。对于主存储,则线路就由各类Resource发送给对应的hypervisor。

来看一下二级存储虚拟机是如何统计存储容量的:

到此我们已经了解CloudStack是如何监控主机和存储资源了,设计架构上相对简单,有难点的地方就是分清楚各种Agent和各种Resource,希望能起到抛砖引玉的作用,为大家进一步研究其它资源的监控提供基础。

    分享到:
This entry was posted in 开发设计,  and tagged , , . Bookmark the .

12 Responses to CloudStack中对各种资源的监控机制

  1.  says:

    讲的很好 收藏

    •  says:

      An answer from an epxret! Thanks for contributing.

    •  says:

      The epxertsie shines through. Thanks for taking the time to answer.

  2.  says:

    受教 谢谢分享

    •  says:

      That’s an apt answer to an interesting quetsoin

    •  says:

      Grade A stuff. I’m unquetsoianbly in your debt.

  3. zhangwei says:

    cloudstack能不能像vmware 那样实现对vm和host的实时监控?

    • 李学辉 says:

      CloudStack目前的机制是定时轮询,时间默认设置是1分钟,是一种Pull的方式.应该来说能满足需要了.

      •  says:

        A little rationality lifts the quality of the dbetae here. Thanks for contributing!

    •  says:

      A bit surprised it seems to simple and yet ufseul.

    •  says:

      Hey, that’s a cleevr way of thinking about it.

  4. What you published was very logical. However,
    what about this? suppose you were to create a awesome
    title? I mean, I don’t wish to tell you how to run your website, however what if you added a title that grabbed a person’s attention?
    I mean CloudStack中对各种资源的监控机制 | CloudStack中国用户组 is
    a little plain. You should peek at Yahoo’s home page and note how they write news headlines to get people interested. You might add a video or a related pic or two to grab people excited about what you’ve written.
    In my opinion, it would bring your blog a little livelier.

阅读(1381) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~