我想找一个数据存储的延迟。
下面是代码
$vmName = ""
$stat = "datastore.totalReadLatency.average","datastore.totalWriteLatency.average"
$entity = Get-VM -Name $vmName | select -Unique
$start = (Get-Date).AddHours(-1)
$dsTab = @{}
$dsTab = Get-Datastore | Where {$_.Type -eq "VMFS"} | %{
$key = $_.ExtensionData.Info.Vmfs.Uuid
if(!$dsTab.ContainsKey($key)){
$dsTab.Add($key,$_.Name)
}
else{
"Datastore $($_.Name) with UUID $key already in hash table"
}
}
Get-Stat -Entity $entity -Stat $stat -Start $start |
Group-Object -Property {$_.Entity.Name} | %{
$vmName = $_.Values[0]
$VMReadLatency = $_.Group |
where {$_.MetricId -eq "datastore.totalReadLatency.average"} |
Measure-Object -Property Value -Average |
Select -ExpandProperty Average
$VMWriteLatency = $_.Group |
where {$_.MetricId -eq "datastore.totalWriteLatency.average"} |
Measure-Object -Property Value -Average |
Select -ExpandProperty Average
$VMReadIOPSAverage = $_.Group |
where {$_.MetricId -eq "datastore.numberReadAveraged.average"} |
Measure-Object -Property Value -Average |
Select -ExpandProperty Average
$VMWriteIOPSAverage = $_.Group |
where {$_.MetricId -eq "datastore.numberWriteAveraged.average"} |
Measure-Object -Property Value -Average |
Select -ExpandProperty Average
$_.Group | Group-Object -Property Instance | %{
New-Object PSObject -Property @{
VM = $vmName
Host = $_.Group[0].Entity.Host.Name
Datastore = $dsTab[$($_.Values[0])]
Start = $start
DSReadLatencyAvg = [math]::Round(($_.Group |
where {$_.MetricId -eq "datastore.totalReadLatency.average"} |
Measure-Object -Property Value -Average |
Select -ExpandProperty Average),2)
DSWriteLatencyAvg = [math]::Round(($_.Group |
where {$_.MetricId -eq "datastore.totalWriteLatency.average"} |
Measure-Object -Property Value -Average |
Select -ExpandProperty Average),2)
VMReadLatencyAvg = [math]::Round($VMReadLatency,2)
VMWriteLatencyAvg = [math]::Round($VMWriteLatency,2)
VMReadIOPSAvg = [math]::Round($VMReadIOPSAverage,2)
VMWriteIOPSAvg = [math]::Round($VMWriteIOPSAverage,2)
}
}
} | Export-Csv c:\report.csv -NoTypeInformation -UseCulture当我检查任何数据存储时,我无法找到stat "datastore.totalReadLatency.average","datastore.totalWriteLatency.average"。
请让我知道我做错了什么,或者有什么需要做的(任何更新/安装)。
发布于 2021-12-07 00:01:12
运行您的
Get-Stat -Entity $entity -Stat $stat -Start $start
在PowerCLI v12.4中,我看到了如下所示的错误,并且没有返回数据
度量计数器"datastore.totalreadlatency.average“不存在于实体<$vmname>
这使我来到了这条线,在那里,解决方案代码看起来与您的很接近。无论如何,使用-Realtime似乎可以修复最后一个小时的场景。我不确定在最近的版本中是否有什么变化,或者什么。
没有找到这个文档,但是当指定了Get-Stat时,-Realtime似乎忽略了-Realtime。所以试试
Get-Stat -Entity $entity -Stat $stat -Realtime(也许您从线程中的第一个答案中获取了$stat定义,但从接受的答案中获取了其余的代码?您正在尝试解析numberReadAveraged & numberWriteAveraged的结果,而不收集这些结果。)
为了超越实时/最后一小时,您需要为totalReadLatency和totalWriteLatency收集totalReadLatency3或更高版本。增加stat级别将增加vCenter db。
https://stackoverflow.com/questions/70196802
复制相似问题