azure - 是否有任何 API 可以查询 Azure VM 的可用磁盘/内存空间?
问题描述
查看通过 azure Metrics API 磁盘空间可用的指标,也不是可用内存,都可以作为指标使用。
现在我知道我可以使用它通过门户网站查看这些指标。
但我特别希望定期查询这些数据,以便在我的任何 VM 磁盘空间快满(或内存快满)时提醒我。
有没有办法做到这一点?
解决方案
如果你的最终目标是
- 设置警报并在达到阈值时收到通知 - 然后您可以通过创建日志警报规则来完成。有关更多信息,请参阅此文档。
- 使用 API 查询 Azure VM 的可用磁盘/内存空间指标 - 然后遵循此API 参考或此文档和此文档。
- 使用 PowerShell 查询 Azure VM 的可用磁盘/内存空间指标 - 然后遵循此cmdlet。
对于上述所有工作方式,您必须首先
- 创建一个 Log Analytics 工作区并在 Azure VM 中安装 Log Analytics 代理(或者换句话说,启用 Log Analytics VM 扩展)。要使用 Azure 门户完成此操作,请遵循此文档。要使用 Azure PowerShell / CLI 完成相同操作,请根据您的 Azure VM 的操作系统遵循此文档或此文档。
- 一旦您的 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 操作系统,则查找可用 MBytes 内存的查询是:
Perf
| where ( ObjectName == "Memory" )
| where ( CounterName == "Available MBytes Memory" )
| summarize AggregatedValue= avg(CounterValue) by Computer, bin(TimeGenerated, 30s)
如果您的 Azure VM 是 Windows 操作系统,那么对可用 MBytes 的查询是:
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 门户 -> Log Analytics 工作区 -> 您的 Log Analytics 工作区 -> 高级设置 -> 数据 -> Windows 性能计数器/Linux 性能计数器中添加了相应的性能计数器。
注意2:使用其他性能计数器,您还可以获取更多数据,如磁盘读取时间、磁盘写入时间、空闲时间、当前磁盘队列长度、缓存字节、提交字节、页面错误、页面读取、页面写入、空闲 inode 等.
希望这可以帮助!干杯!
推荐阅读
- angular - 如何找到我在 Angular 版本中使用的库的最新稳定版本
- python - 继承 - 在方法中调用方法
- typescript - 从给定类型的一组键中,相应地设置这些键的两个实例会导致错误类型
- xml - 如何合并多个节点 XPath
- sql - Google 表格 - 将未排序的逗号分隔值从一列解析为单独的列。值的顺序并不总是相同
- linux - 我的 AWS 服务器(debian 或 Linux)需要什么包格式
- xamarin.forms - 有没有办法识别在列表视图中打开/关闭的上下文菜单?
- postgresql - postgres 从 now() 中删除微秒
- javascript - CSS将拉伸图像宽度向下舍入到最接近实际像素数的倍数
- android - 如何使 HTML 视频元素缓冲使用 AssetManager 加载的资产