访问Azure指标

时间:2015-02-04 11:31:49

标签: azure metrics

我尝试访问给定cloudService

的指标

我有以下代码:

var metricsClient = new MetricsClient(new CertificateCloudCredentials(SubscriptionId, Certificate));

var resourceid = ResourceIdBuilder.BuildCloudServiceResourceId(cloudServiceName, deploymentName);

var metricsDefinisions = metricsClient.MetricDefinitions.List(resourceid, null, null);


// timeGrain must be 5, 60 or 720 minutes.
TimeSpan timeGrain = TimeSpan.FromMinutes(60);
DateTime startTime = DateTime.UtcNow.AddDays(-1);
DateTime endTime = DateTime.UtcNow;

var name = metricsDefinisions.MetricDefinitionCollection.Value.First().Name;

var response = metricsClient.MetricValues.List(resourceid, new string[] { name }, String.Empty, timeGrain, startTime, endTime);

最后一行返回错误 -

  

{"代码":" InvalidRequest""消息":"莫非   不检索指标。"}

我可能做错了什么?

1 个答案:

答案 0 :(得分:1)

从我打开的MSDN票证

开始:

问题是resourceId用于查询指标。虽然您可以在部署级别请求度量标准定义(这允许发现可用的度量标准),但您无法在部署时查询度量标准。

在角色和角色实例级别提供度量标准。

如果您查看通话返回的每个metricDefinitions

  var metricsDefinisions = metricsClient.MetricDefinitions.List(resourceId, null, null);

他们应该为列表中的每个指标都有一个ResourceIdSuffix属性。这提供了发现指标所在位置所需的信息。

基本上,它们将包含roles \ roleName和roles / rolename / roleinstance / roleinstancename等值 如果将此添加到您已经拥有的resourceId(作为有效的uri),它应该会获得与该定义关联的度量标准值。 在您的情况下,您可能只需要为特定应用程序添加角色/角色实例。

我能够更改我的repro,我能够将问题重新发送到以下内容并使其正常工作。 从:

var resourceId = ResourceIdBuilder.BuildCloudServiceResourceId("imtiazhclientcerttest", "3d2975a038db48d1bd9f40c3b14de459");

要:

var resourceId = ResourceIdBuilder.BuildCloudServiceResourceId("imtiazhclientcerttest", "3d2975a038db48d1bd9f40c3b14de459","WebRole1", "WebRole1_IN_0");