如何从 Azure Log Analytics 中找到附加到 Azure Linux 虚拟机的每个磁盘的总大小?
Posted
技术标签:
【中文标题】如何从 Azure Log Analytics 中找到附加到 Azure Linux 虚拟机的每个磁盘的总大小?【英文标题】:How to find total size of each disk attached to Azure Linux Virtual Machine from Azure Log analytics? 【发布时间】:2021-10-27 07:53:55 【问题描述】:我有 Azure Log Analytics 中收集的 Azure Linux VM 指标的资源日志。一些指标是 % Used Space 、 Free MB 等。 我在分区级别获取这些指标的日志。(/home、/boot、/opt、/tmp、/mnt 等)
具有时间戳、VM 名称、指标名称、指标值、分区名称作为字段的示例记录:
我想根据这些指标计算附加到 VM 的每个数据磁盘的总磁盘大小。 我试过这个公式:
TotalSizeInMb = (可用兆字节/(100- % 已用空间)) * 100
我猜,我得到了每个分区的总大小,例如 /home、/boot、/mnt、/tmp 等。 我无法将这些分区与 Azure 中的 OS 磁盘或数据磁盘相关联。
理想情况下,我想从 Log Analytics 中的指标中找到 OS 磁盘和数据磁盘的总大小。
有人可以帮我解决这个问题吗?
谢谢
【问题讨论】:
你检查过this 吗? @amitd 是的,我已经检查过了。但这与附加到 Windows VM 的磁盘有关,这将在 Log Analytics 中为每个磁盘生成指标。在 Linux VM 的情况下,它是不一样的,它会为磁盘中的每个分区生成指标。我试图找出如何从 Log Analytics 中可用的指标中找到连接到 Linux Vm 的磁盘的总大小。 【参考方案1】:请使用以下查询以 GB 为单位查找每个磁盘的总大小:
let disk_free_GB =
Perf
| where ObjectName == "Logical Disk"
| where CounterName == "Free Megabytes"
| where InstanceName != "/boot/efi" and InstanceName != "_Total" //excluding partitions and total vm space
| summarize (TimeGenerated, disk_free_gb)=arg_max(TimeGenerated, CounterValue/1024) by Computer, InstanceName;
let used_space_percent =
Perf
| where ObjectName == "Logical Disk"
| where CounterName == "% Used Space"
| where InstanceName != "/boot/efi" and InstanceName != "_Total" //excluding partitions and total vm space
| summarize (TimeGenerated, Used_Space_Percent)=arg_max(TimeGenerated, CounterValue) by Computer, InstanceName;
disk_free_GB
| join (
used_space_percent
) on Computer, InstanceName
| extend total_gb = disk_free_gb/(1-Used_Space_Percent/100)
| project Computer, InstanceName, disk_free_gb, Used_Space_Percent, total_gb
预期的输出是:
【讨论】:
以上是关于如何从 Azure Log Analytics 中找到附加到 Azure Linux 虚拟机的每个磁盘的总大小?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Log Analytics / Azure Monitor 挂接到角色分配中?
从 Databricks 将日志推送到 Log Analytics
将日志从一个 Azure Log Analytics 工作区传送到另一个