1

Die Dokumentation für diese Methode gefunden hereAzure Fluent API - AppServicePlanOperations.ListMetricsWithHttpMessagesAsync Kosten InternalServerError

mein Hier Code werden kann:

 var appServiceManager = AppServiceManager.Authenticate(credentials, subscriptionId); 
     var filter = "(name.value eq 'CpuPercentage') and startTime eq '2017-10-06T08:00:00Z' and endTime eq '2017-10-06T09:00:00Z' and timeGrain eq duration'PT1H'"; 
     var metrics = appServiceManager.AppServicePlans.Inner.ListMetricsWithHttpMessagesAsync("myResourceGroupName", "myAppServicePlanName", false, filter).Result;  

die einzige detaillierte Ausnahme I Dies ist erhalten:

Ein oder mehrere Fehler sind aufgetreten. (Operation einen ungültigen Status zurückgegeben Code 'InternalServerError') ---> Microsoft.Rest.Azure.CloudException: Operation einen ungültigen Statuscode

'InternalServerError' ergab

Die Dokumentation sagt, dass filter optional ist, was es ist nicht (Ich erhalte einen BadRequest, wenn ich null übergebe). Ich stelle jetzt einen zur Verfügung und es löst nun einen internen Serverfehler aus.

Ich habe ein Problem auf dem azure-sdk-for-net Repo geöffnet, aber ich hoffe, dass jemand anderes sehen kann, wenn ich irgendwelche Fehler in meinem filter String mache.

Antwort

1

Ich kann dieses Problem auch auf meiner Seite reproduzieren, wenn Sie den von Ihnen erwähnten Code verwenden. Ich finde eine andere Microsoft.Azure.Management.Monitor.Fluent SDK könnte für die Liste der Metriken der Ressource verwendet werden, ist es eine Beta Version. Ich mache eine Demo auf meiner Seite, es funktioniert richtig auf meiner Seite.

using Microsoft.Azure.Management.Fluent.ServiceBus; 
using Microsoft.Azure.Management.Fluent.ServiceBus.Models; 
using Microsoft.Rest.Azure.Authentication; 
using Microsoft.Rest.Azure.OData; 

namespace MonitorDemo 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      var azureTenantId = "tenant Id"; 
      var azureSecretKey = "secret key"; 
      var azureAppId = "azure AD application Id"; 
      var subscriptionId = "subscription Id"; 
      var resourceGroup = "resource group name"; 
      var servicePlanName = "service plan name"; 
      var serviceCreds = ApplicationTokenProvider.LoginSilentAsync(azureTenantId, azureAppId, azureSecretKey).Result; 
      MonitorClient monitorClient = new MonitorClient(serviceCreds) { SubscriptionId = subscriptionId }; 
      var resourceUri = $"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/serverfarms/{servicePlanName}"; // resource id 
      var metricNames = "name.value eq 'CpuPercentage'"; // could be concatenated with " or name.value eq '<another name>'" ... inside parentheses for more than one name. 

      // The $filter can include time grain, which is optional when metricNames is present. The is forms a conjunction with the list of metric names described above. 
      string timeGrain = " and timeGrain eq duration'PT5M'"; 

      // The $filter can also include a time range for the query; also a conjunction with the list of metrics and/or the time grain. Defaulting to 3 hours before the time of execution for these datetimes 
      string startDate = " and startTime eq 2017-10-06T08:00:00Z"; 
      string endDate = " and endTime eq 2017-10-06T09:00:00Z"; 

      var odataFilterMetrics = new ODataQuery<MetricInner>(
       $"{metricNames}{timeGrain}{startDate}{endDate}"); 

      var metrics = monitorClient.Metrics.ListWithHttpMessagesAsync(resourceUri, odataFilterMetrics).Result; 
     } 
    } 
} 

enter image description here

packages.config

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="Microsoft.Azure.Management.Monitor.Fluent" version="1.3.0-beta" targetFramework="net47" /> 
    <package id="Microsoft.Azure.Management.ResourceManager.Fluent" version="1.3.0" targetFramework="net47" /> 
    <package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="2.28.3" targetFramework="net47" /> 
    <package id="Microsoft.Rest.ClientRuntime" version="2.3.9" targetFramework="net47" /> 
    <package id="Microsoft.Rest.ClientRuntime.Azure" version="3.3.10" targetFramework="net47" /> 
    <package id="Microsoft.Rest.ClientRuntime.Azure.Authentication" version="2.3.1" targetFramework="net47" /> 
    <package id="Newtonsoft.Json" version="6.0.8" targetFramework="net47" /> 
</packages> 
+0

Dank Tom für die Zeit, um zu antworten nehmen. Ich werde mit Ihren Ergebnissen spielen und wenn es meine Bedürfnisse erfüllt, werde ich Ihre Antwort akzeptieren – AMoghrabi

Verwandte Themen