是否有用于查询Azure VM的可用磁盘/内存空间的API?

时间:2019-10-22 09:34:36

标签: azure

查看可通过azure Metrics API磁盘空间获得的度量标准,也没有可用内存作为度量标准。

https://docs.microsoft.com/en-us/azure/azure-monitor/platform/metrics-supported#microsoftcomputevirtualmachines

现在我知道我可以使用此通过门户查看这些指标。

https://docs.microsoft.com/en-us/azure/cost-management/azure-vm-extended-metrics#enable-extended-metrics-in-the-azure-portal

但是我特别希望定期查询此数据,以在我的VM的磁盘空间几乎已满(或内存几乎已满)时提醒我。

有什么办法吗?

3 个答案:

答案 0 :(得分:3)

如果您的最终目标是

  1. 设置警报并在达到阈值时得到通知-然后,您可以通过创建日志警报规则来完成。有关更多信息,请参阅this文档。
  2. 使用API​​查询Azure VM的可用磁盘/内存空间指标-然后遵循this API参考或thisthis文档。
  3. 使用PowerShell查询Azure VM的可用磁盘/内存空间指标-然后遵循this cmdlet。

对于上述所有工作方式,您都必须先

  1. 创建一个Log Analytics工作区并在您的Azure VM中安装Log Analytics代理(换句话说,启用Log Analytics VM扩展)。若要使用Azure门户完成此任务,请遵循this文档。若要使用Azure PowerShell / CLI完成相同操作,请根据您的Azure VM的操作系统遵循thisthis文档。
  2. 一旦Azure Log Analytics工作区开始收集日志数据,然后转到Azure门户-> Log Analytics工作区-> Log Analytics工作区->日志,然后键入Kusto查询以查找VM的可用磁盘/内存空间详细信息。查询将如下所示。

如果您的Azure VM是Windows操作系统,则查询以查找磁盘总可用空间为:

Perf
| where ( ObjectName == "LogicalDisk" )
| where ( CounterName == "% Free Space" )
| where ( InstanceName == "_Total" )
| summarize AggregatedValue= avg(CounterValue) by Computer, bin(TimeGenerated, 30s)

如果您的Azure VM是Windows操作系统,则查询以查找磁盘C驱动器的可用空间为:

Perf
| where ( ObjectName == "LogicalDisk" )
| where ( CounterName == "% Free Space" )
| where ( InstanceName == "C:" )
| summarize AggregatedValue= avg(CounterValue) by Computer, bin(TimeGenerated, 30s)

如果您的Azure VM是Linux操作系统,则查询以查找磁盘总可用空间为:

Perf
| where ( ObjectName == "Logical Disk" )
| where ( CounterName == "% Free Space" )
| where ( InstanceName == "_Total" )
| summarize AggregatedValue= avg(CounterValue) by Computer, bin(TimeGenerated, 30s)

如果您的Azure VM是Linux操作系统,则查询以查找安装在Root可用空间上的磁盘:

Perf
| where ( ObjectName == "Logical Disk" )
| where ( CounterName == "% Free Space" )
| where ( InstanceName == "/" )
| summarize AggregatedValue= avg(CounterValue) by Computer, bin(TimeGenerated, 30s)

如果您的Azure VM是Linux操作系统,则查询以查找可用兆字节内存为:

Perf
| where ( ObjectName == "Memory" )
| where ( CounterName == "Available MBytes Memory" )
| summarize AggregatedValue= avg(CounterValue) by Computer, bin(TimeGenerated, 30s) 

如果您的Azure VM是Windows操作系统,则查询的可用字节数是:

Perf
| where ( ObjectName == "Memory" )
| where ( CounterName == "Available MBytes" )
| summarize AggregatedValue= avg(CounterValue) by Computer, bin(TimeGenerated, 30s)

如果您的Azure VM是Windows操作系统,则查询以查找正在使用的承诺字节为:

Perf
| where ( ObjectName == "Memory" )
| where ( CounterName == "% Committed Bytes In Use" )
| summarize AggregatedValue= avg(CounterValue) by Computer, bin(TimeGenerated, 30s)

注1:为使上述所有查询正常工作,请确保在Azure门户->日志分析工作区->您的日志分析工作区->高级设置->数据-> Windows性能计数器/ Linux中添加了相应的性能计数器。性能计数器。

注2:使用其他性能计数器,您还可以获取更多数据,例如磁盘读取时间,磁盘写入时间,空闲时间,当前磁盘队列长度,缓存字节,已提交字节,页面错误,页面读取,页面写入,免费索引节点等。

希望这会有所帮助!干杯!

答案 1 :(得分:1)

答案 2 :(得分:1)

如果您在Azure Monitor中收集磁盘空间/可用内存作为自定义指标,则可以通过标准Azure Monitor指标REST API查询它们。例如,您可以使用Windows Azure诊断(WAD)收集Windows VM上的这些性能计数器,并将其作为自定义指标发送。

https://docs.microsoft.com/en-us/azure/azure-monitor/platform/metrics-custom-overview

https://docs.microsoft.com/en-us/azure/azure-monitor/platform/rest-api-walkthrough