0

Trying to programmatically retrieve performance metric definition and values from the Azure Management API for a Webapp

Using latest Nuget package (Rest-based) for Azure Management: Assembly Microsoft.Azure.Management.Websites.dll, v1.0.0.2

ctx.Sites.GetSiteMetrics return an Internal Server Error no matter what parameters I pass into the filter property

                    var defs = ctx.Sites.GetSiteMetrics(site.AzureResourceGroup, site.AzureResourceName, false,
                        string.Format("$filter=(startTime eq '{0}')",
                            DateTime.UtcNow.Subtract(TimeSpan.FromMinutes(10)).ToString("yyyy-MM-ddThh:mm:ssZ"))).Value;

ctx.Sites.GetSiteMetricDefinitions returns 15 null objects (improper serialization?)

Earlier versions of the library (TokenCloudCredential based) return even more obscure errors (resource not found)

Any ideas?

As requested, fiddler output for GetSiteMetricDefinitions call (looks like improper serialization indeed?)

    {
   "id":"/subscriptions/xxxxxxxxx-xxxx-xxxx-xxxx-4384e4cfd2d6/resourceGroups/ARMTest/providers/Microsoft.Web/sites/WebAppArmTest1/metricdefinitions",
   "value":[
      {
         "name":{
            "value":"CpuTime",
            "localizedValue":"CPU Time"
         },
         "unit":"Seconds",
         "primaryAggregationType":"Total",
         "resourceUri":null,
         "metricAvailabilities":[
            {
               "timeGrain":"PT1M",
               "retention":"P2D"
            },
            {
               "timeGrain":"PT1H",
               "retention":"P30D"
            },
            {
               "timeGrain":"P1D",
               "retention":"P90D"
            }
         ],
         "properties":[

         ]
      },
      {
         "name":{
            "value":"Requests",
            "localizedValue":"Requests"
         },
         "unit":"Count",
         "primaryAggregationType":"Total",
         "resourceUri":null,
         "metricAvailabilities":[
            {
               "timeGrain":"PT1M",
               "retention":"P2D"
            },
            {
               "timeGrain":"PT1H",
               "retention":"P30D"
            },
            {
               "timeGrain":"P1D",
               "retention":"P90D"
            }
         ],
         "properties":[

         ]
      },
      {
         "name":{
            "value":"BytesReceived",
            "localizedValue":"Data In"
         },
         "unit":"Bytes",
         "primaryAggregationType":"Total",
         "resourceUri":null,
         "metricAvailabilities":[
            {
               "timeGrain":"PT1M",
               "retention":"P2D"
            },
            {
               "timeGrain":"PT1H",
               "retention":"P30D"
            },
            {
               "timeGrain":"P1D",
               "retention":"P90D"
            }
         ],
         "properties":[

         ]
      },
      {
         "name":{
            "value":"BytesSent",
            "localizedValue":"Data Out"
         },
         "unit":"Bytes",
         "primaryAggregationType":"Total",
         "resourceUri":null,
         "metricAvailabilities":[
            {
               "timeGrain":"PT1M",
               "retention":"P2D"
            },
            {
               "timeGrain":"PT1H",
               "retention":"P30D"
            },
            {
               "timeGrain":"P1D",
               "retention":"P90D"
            }
         ],
         "properties":[

         ]
      },
      {
         "name":{
            "value":"Http2xx",
            "localizedValue":"Http 2xx"
         },
         "unit":"Count",
         "primaryAggregationType":"Total",
         "resourceUri":null,
         "metricAvailabilities":[
            {
               "timeGrain":"PT1M",
               "retention":"P2D"
            },
            {
               "timeGrain":"PT1H",
               "retention":"P30D"
            },
            {
               "timeGrain":"P1D",
               "retention":"P90D"
            }
         ],
         "properties":[

         ]
      },
      {
         "name":{
            "value":"Http3xx",
            "localizedValue":"Http 3xx"
         },
         "unit":"Count",
         "primaryAggregationType":"Total",
         "resourceUri":null,
         "metricAvailabilities":[
            {
               "timeGrain":"PT1M",
               "retention":"P2D"
            },
            {
               "timeGrain":"PT1H",
               "retention":"P30D"
            },
            {
               "timeGrain":"P1D",
               "retention":"P90D"
            }
         ],
         "properties":[

         ]
      },
      {
         "name":{
            "value":"Http401",
            "localizedValue":"Http 401"
         },
         "unit":"Count",
         "primaryAggregationType":"Total",
         "resourceUri":null,
         "metricAvailabilities":[
            {
               "timeGrain":"PT1M",
               "retention":"P2D"
            },
            {
               "timeGrain":"PT1H",
               "retention":"P30D"
            },
            {
               "timeGrain":"P1D",
               "retention":"P90D"
            }
         ],
         "properties":[

         ]
      },
      {
         "name":{
            "value":"Http403",
            "localizedValue":"Http 403"
         },
         "unit":"Count",
         "primaryAggregationType":"Total",
         "resourceUri":null,
         "metricAvailabilities":[
            {
               "timeGrain":"PT1M",
               "retention":"P2D"
            },
            {
               "timeGrain":"PT1H",
               "retention":"P30D"
            },
            {
               "timeGrain":"P1D",
               "retention":"P90D"
            }
         ],
         "properties":[

         ]
      },
      {
         "name":{
            "value":"Http404",
            "localizedValue":"Http 404"
         },
         "unit":"Count",
         "primaryAggregationType":"Total",
         "resourceUri":null,
         "metricAvailabilities":[
            {
               "timeGrain":"PT1M",
               "retention":"P2D"
            },
            {
               "timeGrain":"PT1H",
               "retention":"P30D"
            },
            {
               "timeGrain":"P1D",
               "retention":"P90D"
            }
         ],
         "properties":[

         ]
      },
      {
         "name":{
            "value":"Http406",
            "localizedValue":"Http 406"
         },
         "unit":"Count",
         "primaryAggregationType":"Total",
         "resourceUri":null,
         "metricAvailabilities":[
            {
               "timeGrain":"PT1M",
               "retention":"P2D"
            },
            {
               "timeGrain":"PT1H",
               "retention":"P30D"
            },
            {
               "timeGrain":"P1D",
               "retention":"P90D"
            }
         ],
         "properties":[

         ]
      },
      {
         "name":{
            "value":"Http4xx",
            "localizedValue":"Http 4xx"
         },
         "unit":"Count",
         "primaryAggregationType":"Total",
         "resourceUri":null,
         "metricAvailabilities":[
            {
               "timeGrain":"PT1M",
               "retention":"P2D"
            },
            {
               "timeGrain":"PT1H",
               "retention":"P30D"
            },
            {
               "timeGrain":"P1D",
               "retention":"P90D"
            }
         ],
         "properties":[

         ]
      },
      {
         "name":{
            "value":"Http5xx",
            "localizedValue":"Http Server Errors"
         },
         "unit":"Count",
         "primaryAggregationType":"Total",
         "resourceUri":null,
         "metricAvailabilities":[
            {
               "timeGrain":"PT1M",
               "retention":"P2D"
            },
            {
               "timeGrain":"PT1H",
               "retention":"P30D"
            },
            {
               "timeGrain":"P1D",
               "retention":"P90D"
            }
         ],
         "properties":[

         ]
      },
      {
         "name":{
            "value":"MemoryWorkingSet",
            "localizedValue":"Memory working set"
         },
         "unit":"Bytes",
         "primaryAggregationType":"Total",
         "resourceUri":null,
         "metricAvailabilities":[
            {
               "timeGrain":"PT1M",
               "retention":"P2D"
            },
            {
               "timeGrain":"PT1H",
               "retention":"P30D"
            },
            {
               "timeGrain":"P1D",
               "retention":"P90D"
            }
         ],
         "properties":[

         ]
      },
      {
         "name":{
            "value":"AverageMemoryWorkingSet",
            "localizedValue":"Average memory working set"
         },
         "unit":"Bytes",
         "primaryAggregationType":"Average",
         "resourceUri":null,
         "metricAvailabilities":[
            {
               "timeGrain":"PT1M",
               "retention":"P2D"
            },
            {
               "timeGrain":"PT1H",
               "retention":"P30D"
            },
            {
               "timeGrain":"P1D",
               "retention":"P90D"
            }
         ],
         "properties":[

         ]
      },
      {
         "name":{
            "value":"AverageResponseTime",
            "localizedValue":"Average Response Time"
         },
         "unit":"Seconds",
         "primaryAggregationType":"Average",
         "resourceUri":null,
         "metricAvailabilities":[
            {
               "timeGrain":"PT1M",
               "retention":"P2D"
            },
            {
               "timeGrain":"PT1H",
               "retention":"P30D"
            },
            {
               "timeGrain":"P1D",
               "retention":"P90D"
            }
         ],
         "properties":[

         ]
      }
   ]
}
Xiaomin Wu
  • 3,621
  • 1
  • 15
  • 14
Igorek
  • 15,716
  • 3
  • 54
  • 92
  • regarding to "ctx.Sites.GetSiteMetricDefinitions returns 15 null objects (improper serialization?)", can you try to use fiddler to see the actual request to see if there is any real data coming back? – Xiaomin Wu Dec 31 '15 at 00:57
  • Done. Post edited. Data is coming back – Igorek Dec 31 '15 at 01:33
  • notice that there are two Web Site Management nuget package from NuGet https://www.nuget.org/profiles/azure-sdk?showAllPackages=True, do you happen to use the wrong one, the right one seems up to version 4+ – Xiaomin Wu Dec 31 '15 at 01:41
  • There are two. The version 4.x uses classic API. I'm trying to use the ARM (Resource Manager) API. It is my understanding that I cannot talk to ARM-based websites with classic package. What's the right Nuget package for ARM version of the website? – Igorek Dec 31 '15 at 01:43
  • https://www.nuget.org/packages/Microsoft.WindowsAzure.Management.WebSites/4.4.2-prerelease can you give it a try? from Jeffs blog, http://www.jeff.wilcox.name/2014/04/wamlmaml/, it did mention it will support "the new preview Azure management". Specially the last publish date is "2015-03-18", i dont think it is only for classic resources. – Xiaomin Wu Dec 31 '15 at 02:14
  • So, I've been working a lot with classic Microsoft.WindowsAzure.* libraries. They do not see resources provisioned with ARM. In fact, in order to find ARM resources, one needs the resource group - concept that does not exist in Microsoft.WindowsAzure.* namespace – Igorek Dec 31 '15 at 06:05
  • try to ask from here https://github.com/Azure/azure-sdk-for-net, those guy should know. – Xiaomin Wu Dec 31 '15 at 18:27
  • Thanks. I actually stand corrected. You're right, ARM WebApps can be managed thru classic API. VMs and Storage cannot. Very confusing. Thanks for the help! – Igorek Dec 31 '15 at 20:45
  • 1
    Glad to hear that you have resolved your issue :) – Xiaomin Wu Dec 31 '15 at 21:35
  • You can refer to the code sample at this GitHub repo https://github.com/juvchan/AzureWebAppManagementSDKSample – juvchan Jan 04 '16 at 12:29

0 Answers0