0

我正在尝试获取 Microsoft.Sql/servers/ 资源的指标:resource_id 是:/subscriptions/******-8**2-44**-95**-****13a5****/resourceGroups/SQLTesting/providers/Microsoft.Sql/servers/sqltest 如示例指标

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错误。如何解决?

4

2 回答 2

1

我可以重现您的问题,该指标dtu_used是针对 sql db 而不是 sql server,即针对资源类型Microsoft.Sql/servers/databases,而不是Microsoft.Sql/servers,请参阅此链接

要解决此问题,您需要将resource_id与特定 sql db 的资源 id 一起使用,例如/subscriptions/******-8**2-44**-95**-****13a5****/resourceGroups/SQLTesting/providers/Microsoft.Sql/servers/sqltest/databases/Mydatabase,然后它将正常工作。

于 2019-11-21T02:48:57.177 回答
1

在度量定义中,有一个名为 的属性isDimensionRequired,当查询其值时,您必须为维度提供过滤器;如果您不这样做,指标查询将失败。

因此,对于dtu_usedSQL Server 的指标,该值为 true,这意味着您需要提供DataBaseResourceIdin 过滤器。

在此处输入图像描述

这是一个充足的:

在此处输入图像描述

因此,基本上,您需要在指标查询中添加一个过滤器。

于 2019-11-21T03:15:51.310 回答