📅  最后修改于: 2023-12-03 15:17:38.433000             🧑  作者: Mango
在 Microsoft Azure 上,我们可以创建和管理虚拟机 (VM) 来托管我们的应用程序和服务。VM 可以是单个订阅内的,也可以跨越多个订阅。
当我们管理多个订阅时,需要一种在跨订阅范围内检查 VM CPU 利用率的方法。本文将介绍如何在 Microsoft Azure 中实现这一目标。
Azure Monitor 是一个在 Azure 中开箱即用的服务,可以帮助我们监视不同资源的性能、诊断问题、设置警报等。在 VM 上使用 Azure Monitor 可以帮助我们监视 VM 的 CPU 利用率。
要启用 VM 的监视,需要创建一个监视策略。以下是一个示例 PowerShell 脚本,用于创建一个监视策略,该策略将监视指定订阅中所有 VM 的 CPU 利用率并生成警报:
# 连接到 Azure 订阅
Connect-AzAccount
# 指定要监视的订阅 ID
$subscriptionId = "YOUR_SUBSCRIPTION_ID"
# 创建监视策略
$alertRule = New-AzMetricAlertRuleV2 `
-Name "VM CPU Usage" `
-Location "global" `
-ResourceScope "/subscriptions/$subscriptionId" `
-Description "Alert on high CPU usage on any VM" `
-WindowSize "00:05:00" `
-Criteria `
"{\"odata.type\":\"Microsoft.Azure.Monitor.Web.Models.MicrosoftThresholdCriteria\",\"dataSource\":\"microsoft.insights/metrics\",\"metricName\":\"Percentage CPU\",\"operator\":\"GreaterThan\",\"threshold\":80,\"timeAggregation\":\"Average\",\"dimensions\":\"[{'name':'ComputerName','value':'*'}]\",\"metricNamespace\":\"microsoft.compute/virtualmachines\",\"windowSize\":\"00:05:00\",\"evaluationFrequency\":\"00:01:00\"}" `
-Actions `
(New-AzAlertRuleEmail -CustomEmails "youremail@example.com" | New-AzAlertRuleEmail -CustomEmails "yourotheremail@example.com")
该脚本会创建一个名为“VM CPU Usage”的新监视策略,并在订阅中的所有 VM 上设置警报。警报将在任何 VM 的 CPU 利用率超过 80% 时触发,并发送电子邮件到指定的自定义电子邮件地址。
Azure Log Analytics 是一个用于存储、分析和可视化日志数据的服务。我们可以将 VM 的性能计数器数据发送到 Log Analytics,并使用 Log Analytics 查询语言 (Kusto) 来查询和分析这些数据。
以下是一个示例 Kusto 查询,该查询会返回指定订阅中所有 VM 的平均 CPU 利用率:
Perf
| where ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName != "_Total"
| summarize avg(CounterValue) by Computer, bin(TimeGenerated, 5m)
该查询将返回一个表格,其中列出了所有 VM 的计算机名称 (Computer)、时间戳 (TimeGenerated) 和平均 CPU 利用率 (avg_CounterValue)。
在 Microsoft Azure 中跨订阅范围内监视 VM 的 CPU 利用率可以通过使用 Azure Monitor 或 Log Analytics 来实现。使用 PowerShell 和 Azure Monitor 的组合可以帮助我们轻松地设置警报和通知,以便在发生问题时快速采取行动。使用 Log Analytics 可以帮助我们更深入地分析 VM 的性能并提供灵活的可视化选项。