cloudstack StatsCollector

本文介绍了CloudStack中StatsCollector组件的运作原理。包括HostCollector、VmStatsCollector等任务的职责,如收集主机、虚拟机及存储的状态信息,并通过不同的调度线程池执行各项任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    cloudstack的StatsCollector中具有两个调度线程池ScheduledExecutorService,在StatsCollector中init()中一个名为_executor 的线程池创建4个线程执行HostCollector
、VmStatsCollector、StorageCollector、AutoScaleMonitor、VmDiskStatsTask;一个名为_diskStatsUpdateExecutor的调度线程池创建一个线程执行VmDiskStatsUpdaterTask。线程的间隔

调用时间是从数据库表configuration中读取。




下面说明HostCollectorVmStatsCollectorStorageCollectorAutoScaleMonitorVmDiskStatsTaskVmDiskStatsUpdaterTask的任务。

HostCollector
 
发送GetHostStatsCommandagent,将得到的HostStatsEntry存入字段_hostStats中。
 
发送GetGPUStatsCommandagent,得到的groupDetails更新host_gpu_groupsvgpu_types表。

  host_gpu_groups中的所有hostId存入字段hostIds

VmStatsCollector
 
发给GetVmStatsCommand给每台agent,收集关于每台host机器所有运行的客户VM信息,得到的VmStatById插入或更新字段_VmStats

StorageCollector:
 
从数据库表image_storage中取出二级存储的url,根据type的类型zone则由dcId查找到ssvm,类型为region则从所有ssvm中取出一个ssvm。向ssvm发送GetStorageStatsCommand,将结果保存在字段_storageStats中。

 
从数据库表storage_poolstorage_pool_host_ref中取出up状态的一级存储的host_id。向host_id所指的机器发送GetStorageStatsCommand,将得到的结果保存在字段_storagePoolStats中。若发现结果中capacityBytes值与现有的storage_pool中字段capacityBytes不同,则更新storage_pool表。

AutoScaleMonitor
 
从数据库表autoscale_vmgroups中查找以id为标志的当前VM数量与min_members相比。若current
Vm数量小于min_members,则在该vm_group创建新的vm。达到min_members数量。
 
vm所在的host发送PerformanceMonitorCommand收集内存等性能数据。

VmDiskStatsTask
  
发送GetVmDiskStatsCommandvm所在的host,将得到的结果,加锁并更新VMdisk相关表vm_disk_statisticscurrent_io_read,current_io_write,current_bytes_read,current_bytes_write,net_io_read,net_io_write,net_bytes_read,net_bytes_write字段。

VmDiskStatsUpdaterTask
 
更新数据库表vm_disk_statisticsagg_io_readagg_io_writeagg_bytes_readagg_bytes_write字段。
agg_io_read=current_io_read + 
net_io_read。其它字段同理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值