Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何获取Azure Cosmos数据库/容器大小?_.net_Azure_Rest_.net Core_Azure Cosmosdb - Fatal编程技术网

.net 如何获取Azure Cosmos数据库/容器大小?

.net 如何获取Azure Cosmos数据库/容器大小?,.net,azure,rest,.net-core,azure-cosmosdb,.net,Azure,Rest,.net Core,Azure Cosmosdb,目前,我正在尝试获取Azure Cosmos DB SQL API帐户数据卷。使用PowerShell Get AzMetric命令创建解决方案。有人知道如何使用.NETSDK或RESTAPI解决这个问题吗 有人知道如何使用.NETSDK或RESTAPI解决这个问题吗 Azure PowerShell只是REST API上的包装器。如果使用-Debug参数运行PowerShell Cmdlet,则应看到Cmdlet正在进行REST API调用以获取数据 例如,如果我通过Azure Portal

目前,我正在尝试获取Azure Cosmos DB SQL API帐户数据卷。使用PowerShell Get AzMetric命令创建解决方案。有人知道如何使用.NETSDK或RESTAPI解决这个问题吗

有人知道如何使用.NETSDK或RESTAPI解决这个问题吗

Azure PowerShell只是REST API上的包装器。如果使用
-Debug
参数运行PowerShell Cmdlet,则应看到Cmdlet正在进行REST API调用以获取数据

例如,如果我通过Azure Portal跟踪请求/响应以检查数据库的存储大小,我注意到正在发送以下请求:

https://management.azure.com/subscriptions/<my-subscription-id>/resourceGroups/<my-resource-group>/providers/Microsoft.DocumentDb/databaseAccounts/<my-cosmosdb-account-name>/databases/<my database rid e.g 2942BA==>/metrics?
api-version=2014-04-01&
$filter=(name.value eq 'Available Storage' or name.value eq 'Data Size' or name.value eq 'Index Size') 
and endTime eq 2020-04-10T09%3A10%3A00.000Z 
and startTime eq 2020-04-10T08%3A10%3A00.000Z and timeGrain eq duration'PT5M'
https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.DocumentDb/databaseAccounts//databases//metrics?
api版本=2014-04-01&
$filter=(name.value eq“可用存储”或name.value eq“数据大小”或name.value eq“索引大小”)
和结束时间等式2020-04-10T09%3A10%3A00.000Z
以及起始时间eq 2020-04-10T08%3A10%3A00.000Z和时间粒度eq持续时间'PT5M'

您可以执行同样的操作,并找到正在进行的确切REST API调用。

REST API由Gaurav提供,您可以使用Azure.NET SDK版本
0.16.0-preview
0.16.1-preview
检索监视器度量和度量定义

下面的代码是获取Azure Cosmos DB数据库大小。关于更多细节,你可以参考这个

var tenantId=“xxxxxxxx”;
var clientSecret=“xxxxxxxx”;
var clientId=“xxxxxxxx”;
var subscriptionId=“xxxxxxxx”;
var serviceCreds=ApplicationTokenProvider.LoginSilentAsync(tenantId、clientId、clientSecret).GetAwaiter().GetResult();
var monitorClient=新的monitorClient(serviceCreds);
monitorClient.SubscriptionId=SubscriptionId;
var resourceUrl=$“订阅/xxxxxxxx/resourceGroups/xxxxxxxx/providers/Microsoft.DocumentDB/databaseAccounts/xxxxxxxx/databases/xxxxxx/metrics”;
var metricNames=“name.value eq‘数据大小’”;
字符串timeGrain=“和timeGrain eq duration'PT5M';
string startDate=string.Format(“和startTime eq{0}”),DateTime.Now.AddHours(-3).ToString(“o”);
string endDate=string.Format(“and endTime eq{0}”),DateTime.Now.ToString(“o”);
var odataFilterMetrics=新ODataQuery(
字符串格式(
"{0}{1}{2}{3}",
公制名称,
时间颗粒,
开始日期,
(截止日期);;
var metrics=monitorClient.metrics.ListAsync(resourceUrl,odataFilterMetrics).Result;
var tenantId = "xxxxxxxx";
var clientSecret = "xxxxxxxx";
var clientId = "xxxxxxxx";
var subscriptionId = "xxxxxxxx";
var serviceCreds = ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret).GetAwaiter().GetResult();
var monitorClient = new MonitorClient(serviceCreds);
monitorClient.SubscriptionId = subscriptionId;
var resourceUrl = $"subscriptions/xxxxxxxx/resourceGroups/xxxxxxxx/providers/Microsoft.DocumentDB/databaseAccounts/xxxxxxxx/databases/xxxxxx/metrics";
var metricNames = "name.value eq 'Data Size'"; 
string timeGrain = " and timeGrain eq duration'PT5M'";
string startDate = string.Format(" and startTime eq {0}", DateTime.Now.AddHours(-3).ToString("o"));
string endDate = string.Format(" and endTime eq {0}", DateTime.Now.ToString("o"));
var odataFilterMetrics = new ODataQuery<Metric>(
    string.Format(
      "{0}{1}{2}{3}",
      metricNames,
      timeGrain,
      startDate,
      endDate));
var metrics = monitorClient.Metrics.ListAsync(resourceUrl, odataFilterMetrics).Result;