如何在Azure中获得虚拟机的性能?

jtw3ybtb  于 2023-02-19  发布在  其他
关注(0)|答案(1)|浏览(145)

我正在尝试收集虚拟机的性能,如CPU利用率、可用内存、逻辑磁盘MB/s和逻辑磁盘IOPS,这些数据可以通过控制台在洞察下查看。我希望收集这些数据并将其保存到CSV文件中。是否有任何API可用于获取包含平均值、最小值、最大值、第50位、第90位和第95位的数据?
我尝试了以下解决方案:

  1. az监视度量命令:az监视器度量列表--资源{ResourceName} --度量“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&时间跨度={开始时间}/{结束时间}&间隔= PT 1H &聚合=平均值
  3. Microsoft Azure监视器客户端库(Python SDK):蓝色管理监视器
    在上述所有方法中,我得到的结果不是CPU利用率,而是“CPU百分比”,也就是说,这些方法给出的指标不是洞察力。
v8wbuo2f

v8wbuo2f1#

一种可能的解决方案是使用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

此请求将返回指定时间跨度内每小时每个度量的平均值、计数、最大值、最小值和总值。您还可以使用其他聚集类型,如百分比。
另一种可能的解决方案是使用Azure Monitor Library for Python,它为REST API提供了 Package 。你可以安装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文件的一行中。

相关问题