Azure Metric:dtu_used 不接受零维情况
Azure Metric: dtu_used does not accept zero dimension case
我正在尝试获取 Microsoft 的指标。Sql/servers/ 资源:
resource_id 是:/subscriptions/******-8**2-44**-95**-****13a5****/resourceGroups/SQLTesting/providers/Microsoft.Sql/servers/sqltest
例如 metrics
resource_id="/subscriptions/******-8**2-44**-95**-****13a5****/resourceGroups/SQLTesting/providers/Microsoft.Sql/servers/sqltest"
today = datetime.datetime.now().date()
yesterday = today - datetime.timedelta(days=1)
metrics_data = client.metrics.list(
resource_id,
timespan="{}/{}".format(yesterday, today),
interval='PT1H',
metricnames='dtu_used',
aggregation='Average'
)
for item in metrics_data.value:
# azure.mgmt.monitor.models.Metric
print("{} ({})".format(item.name.localized_value, item.unit.name))
for timeserie in item.timeseries:
for data in timeserie.data:
# azure.mgmt.monitor.models.MetricData
print("{}: {}".format(data.time_stamp, data.total))
但我收到 ErrorResponseException: Metric: dtu_used does not accept zero dimension case 错误。如何解决?
我可以重现你的问题,指标 dtu_used
是针对 sql 数据库而不是 sql 服务器,即资源类型 Microsoft.Sql/servers/databases
,而不是 Microsoft.Sql/servers
,请参阅此 link。
要解决此问题,您需要将 resource_id
与特定 sql 数据库的资源 ID 一起使用,例如 /subscriptions/******-8**2-44**-95**-****13a5****/resourceGroups/SQLTesting/providers/Microsoft.Sql/servers/sqltest/databases/Mydatabase
,然后它将正常工作。
在metric定义中,有一个属性叫做isDimensionRequired
,查询它的值时必须提供一个维度的过滤器;如果不这样做,指标查询将失败。
因此,对于 SQL 服务器的 dtu_used
指标,值为 true,这意味着您需要在过滤器中提供 DataBaseResourceId
。
这里有一个例子:
所以,基本上,您需要在指标查询中添加一个过滤器。
我正在尝试获取 Microsoft 的指标。Sql/servers/ 资源:
resource_id 是:/subscriptions/******-8**2-44**-95**-****13a5****/resourceGroups/SQLTesting/providers/Microsoft.Sql/servers/sqltest
例如 metrics
resource_id="/subscriptions/******-8**2-44**-95**-****13a5****/resourceGroups/SQLTesting/providers/Microsoft.Sql/servers/sqltest"
today = datetime.datetime.now().date()
yesterday = today - datetime.timedelta(days=1)
metrics_data = client.metrics.list(
resource_id,
timespan="{}/{}".format(yesterday, today),
interval='PT1H',
metricnames='dtu_used',
aggregation='Average'
)
for item in metrics_data.value:
# azure.mgmt.monitor.models.Metric
print("{} ({})".format(item.name.localized_value, item.unit.name))
for timeserie in item.timeseries:
for data in timeserie.data:
# azure.mgmt.monitor.models.MetricData
print("{}: {}".format(data.time_stamp, data.total))
但我收到 ErrorResponseException: Metric: dtu_used does not accept zero dimension case 错误。如何解决?
我可以重现你的问题,指标 dtu_used
是针对 sql 数据库而不是 sql 服务器,即资源类型 Microsoft.Sql/servers/databases
,而不是 Microsoft.Sql/servers
,请参阅此 link。
要解决此问题,您需要将 resource_id
与特定 sql 数据库的资源 ID 一起使用,例如 /subscriptions/******-8**2-44**-95**-****13a5****/resourceGroups/SQLTesting/providers/Microsoft.Sql/servers/sqltest/databases/Mydatabase
,然后它将正常工作。
在metric定义中,有一个属性叫做isDimensionRequired
,查询它的值时必须提供一个维度的过滤器;如果不这样做,指标查询将失败。
因此,对于 SQL 服务器的 dtu_used
指标,值为 true,这意味着您需要在过滤器中提供 DataBaseResourceId
。
这里有一个例子:
所以,基本上,您需要在指标查询中添加一个过滤器。