首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Get-StatType找到datastore.totalReadLatency.average

无法使用Get-StatType找到datastore.totalReadLatency.average
EN

Stack Overflow用户
提问于 2021-12-02 09:16:45
回答 1查看 69关注 0票数 0

我想找一个数据存储的延迟。

下面是代码

代码语言:javascript
复制
$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"

请让我知道我做错了什么,或者有什么需要做的(任何更新/安装)。

EN

回答 1

Stack Overflow用户

发布于 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。所以试试

代码语言:javascript
复制
Get-Stat -Entity $entity -Stat $stat -Realtime

(也许您从线程中的第一个答案中获取了$stat定义,但从接受的答案中获取了其余的代码?您正在尝试解析numberReadAveraged & numberWriteAveraged的结果,而不收集这些结果。)

为了超越实时/最后一小时,您需要为totalReadLatencytotalWriteLatency收集totalReadLatency3或更高版本。增加stat级别将增加vCenter db。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70196802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档