我正在编写一个脚本来提取VM内存膨胀和准备好的求和统计信息。我想以5分钟的间隔拉出24小时的统计数据。我运行的命令是:
$datetime = Get-Date #Get the datetime it currently is
$date = $datetime.Date #Get just the date, starting at midnight
$interval = 5
$statType = "mem.vmmemctl.average", "cpu.ready.summation"
$vmStats = get-stat -Entity $vm -start $date.AddDays(-1) -Finish $date -MaxSamples 10000 -stat $statType -IntervalMins $interval
然而,这样做的结果会给出一组最高$date
(今天午夜)的统计数据,但只能追溯到当前时间的当前时间,昨天。
例如,如果get-date
返回03/14/2018 10:43:42 AM
,$date
设置为03/14/2018 12:00:00 AM
,则使用$date.AddDays(-1)
的开始日期时返回的最早统计信息是2018-03-13 10:30:00.000
。
我不知道发生了什么。我尝试将$date
和$date.AddDays(-1)
同时转换为[date]
和[datetime]
,我也尝试将午夜值硬编码作为开始和结束日期。似乎没有什么能改变这样一个事实,即最早的统计数据是基于Get-Stat
被执行的时间。
使用30分钟或2小时间隔时不会发生这种情况。问题似乎只发生在5分钟的统计间隔。我究竟做错了什么?这是Get-Stat
的正常行为吗?
答案 0 :(得分:0)
您想要的5分钟粒度仅适用于过去24小时。比这更早的统计数据会累积到您观察到的30分钟间隔内(并最终进一步累积)。
"是实时统计信息的聚合(汇总)。他们是 以不同的采样间隔汇总并存储在 数据库。我们遵循MRTG标准。
过去的一天:过去一天的统计数据采用实时统计数据并将其汇总,以便每5分钟有1个数据点。因此,有 每小时12个数据点,每天288个。
过去一周:过去一周的统计数据采用过去一天的统计数据并将其汇总,以便每30分钟有1个数据点。因此,那里 每天48个数据点,每周336个。
过去一个月:过去一个月的统计数据采用过去一周的统计数据并将其累计,因此每2小时有1个数据点。因此,有12个数据 每天积分和每月360积分(30天一个月)。 过去的一年:过去一年的统计数据采用了过去一个月的统计数据并将其推高,因此每天有1个数据点。因此,有365个数据 每年积分。"