gpt4 book ai didi

azure - 如何获取Azure中虚拟机的性能?

转载 作者:行者123 更新时间:2023-12-03 06:27:14 30 4
gpt4 key购买 nike

我正在尝试收集虚拟机的性能,例如 CPU 利用率、可用内存、逻辑磁盘 MB/s 和逻辑磁盘 IOPS,这些可以通过控制台在 Insights 下查看。我想收集这些数据并将它们保存到 CSV 文件中。有没有API可以获取包含Avg、Min、Max、50th、90th和95th的数据?

我尝试过以下解决方案:

  1. az 监视器指标命令:az 监视器指标列表 --resource {ResourceName} --metric "CPU 百分比"

  2. API:https://management.azure.com/subscriptions/{subscription_id}/resourceGroups/{resource_group_name}/providers/Microsoft.Compute/virtualMachines/{vm_name}/providers/microsoft.insights/metrics?api-version=2018-01-01&metricnames=Percentage CPU&timespan={start_time}/{end_time}&interval=PT1H&aggregation=average

  3. Microsoft Azure Monitor 客户端库 (Python SDK):azure-mgmt-monitor

在所有上述方法中,我得到的不是 CPU 利用率,而是“CPU 百分比”结果,即,这些方法给出的不是见解而是指标。

最佳答案

一种可能的解决方案是使用Azure Monitor REST API,它允许您从虚拟机收集各种指标。您可以在请求URL中指定指标名称、时间跨度、间隔和聚合参数。例如:

https://management.azure.com/subscriptions/{subscription_id}/resourceGroups/{resource_group_name}/providers/Microsoft.Compute/virtualMachines/{vm_name}/providers/microsoft.insights/metrics?api-version=2018-01-01&metricnames=Percentage CPU,Average Memory Bytes,Disk Read Bytes/sec,Disk Write Bytes/sec,Disk Read Operations/Sec,Disk Write Operations/Sec&timespan={start_time}/{end_time}&interval=PT1H&aggregation=average,count,maximum,minimun,total

此请求将返回指定时间范围内每小时每个指标的平均值、计数、最大值、最小值和总值。您还可以使用其他聚合类型,例如百分位数。

另一种可能的解决方案是使用Python 的 Azure Monitor 库,它为 REST API 提供了包装器。您可以安装 azure-mgmt-monitor 包并使用 MetricsOperations 类中的 list 方法来获取指标数据。例如:

import datetime
from azure.mgmt.monitor import MonitorManagementClient

# Get the ARM id of your resource
resource_id = (
"subscriptions/{}/"
"resourceGroups/{}/"
"providers/Microsoft.Compute/virtualMachines/{}"
).format(subscription_id, resource_group_name, vm_name)

# Get your credentials ready
credentials = ServicePrincipalCredentials(
client_id = client_id,
secret = secret,
tenant = tenant_id
)

# Create a monitor client
monitor_client = MonitorManagementClient(
credentials,
subscription_id
)

# Get metrics data
metrics_data = monitor_client.metrics.list(
resource_id,
timespan="{}/{}".format(start_time,end_time),
interval='PT1H',
metricnames="Percentage CPU,Average Memory Bytes,Disk Read Bytes/sec,Disk Write Bytes/sec,Disk Read Operations/Sec,Disk Write Operations/Sec",
aggregation="Average,count,maximum,minimun,total",
)

此代码将返回与 REST API 请求类似的结果。

要将指标数据保存到 CSV 文件中,您可以使用 Python 的内置 csv 模块或其他库,例如 pandas。您可以迭代 metrics_data.value 中的每个指标值对象,并将其属性写入一行 CSV 文件中。

关于azure - 如何获取Azure中虚拟机的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75473032/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com