我们将从Azure Monitor获得一些指标。
我安装了库并编写了一个脚本来完成这个任务。
脚本如下。
#! /usr/bin/env python
import datetime
from azure.mgmt.monitor import MonitorManagementClient
from azure.identity import ClientSecretCredential
subscription_id = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
resource_group_name = 'xxxx-xxxxx'
vm_name = 'xxxxxxxxxx'
resource_id = (
"subscriptions/{}/"
"resourceGroups/{}/"
"providers/Microsoft.Compute/virtualMachines/{}"
).format(subscription_id, resource_group_name, vm_name)
TENANT_ID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
CLIENT = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
KEY = 'xxxxxxxxx'
credentials = ServicePrincipalCredentials(
client_id = CLIENT,
secret = KEY,
tenant = TENANT_ID
)
client = MonitorManagementClient(
credentials,
subscription_id
)
today = datetime.datetime.now()
nexttime = today - datetime.timedelta(minutes=1)
metrics_data = client.metrics.list(
resource_id,
timespan="{}/{}".format(nexttime, today),
interval='PT1M',
metricnames='Percentage CPU',
aggregation='average'
)
for item in metrics_data.value:
for timeserie in item.timeseries:
for data in timeserie.data:
print("{}".format(data.average))当我运行这个脚本时,结果有时会显示“无”,尽管我可以在Azure-Monitor上看到正确的值。
当我运行从Azure Load Balancer获取度量的脚本时,脚本返回正确的值。
这个URL (https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/metrics-supported#microsoftcomputevirtualmachines)表示百分比CPU的聚合类型是平均的,所以脚本看起来是正确的。
我不知道为什么这个获得CPU百分比的脚本不返回与Azure-Monitor相同的值。
有人知道解决办法吗?
发布于 2021-04-01 05:39:05
Azure监视器根据UTC时间记录度量指标,因此您应该使用today = datetime.datetime.utcnow()来定义timespan。
根据您的代码,您正在查询最新的1分钟VM CPU百分比,Azure将监视日志度量的一些延迟,因此您可能由于延迟而无法获得此值,因此您可以尝试获得i,e最后5分钟的CPU百分比。
只需尝试下面的代码片段:
today = datetime.datetime.utcnow()
nexttime = today - datetime.timedelta(minutes=5)
query_timespan = "{}/{}".format(nexttime, today - datetime.timedelta(minutes=4))
print(query_timespan)
metrics_data = client.metrics.list(
resource_id,
timespan=query_timespan,
interval='PT1M',
metricnames='Percentage CPU',
aggregation='average'
)
for item in metrics_data.value:
for timeserie in item.timeseries:
for data in timeserie.data:
print("{}".format(data.average))我这边的结果:

门户显示(我的时区是UTC+8):

https://stackoverflow.com/questions/66882652
复制相似问题