Co Cię zaskoczy jeśli chcesz monitorować App Service Environment przez REST API?

Jak zawsze teoria jest jasna. W tym blogu łączymy teorię z praktyką i pokazujemy kiedy jest… inaczej:) Jak się okazuje, czasem bez Support’u nie poradzisz.

Wyzwanie:

  1. Korzystasz z App Service Enviroment.
  2. Chcesz monitorować swoje środowisko ASE z narzędzia, które dane o stanie usługi może pobrać tylko przez REST API. (np. PRTG albo Twoje własne narzędzie)
  3. Udało Ci się dotrzeć do artykułu o tym jak monitorować usługi w Azure dzięki REST API. Napisałeś skrypt, stworzyłeś w Azure AD aplikację, napisałeś kod. Jeśli będziesz miał z tym problem, napisz, dam Ci swój skrypt który to wszystko robi naraz.
  4. I teraz wydaje się, że jesteśmy już u celu…bo w przypadku App Service (czyli nie ASE) wszystko działa idealnie. Przykład z mojego środowiska.
  5. Kiedy jednak to sam podejście zastosujcie do ASE, skrypt zadziała ale wynik Was nieco zaskoczy – same 0.0 niezależnie o jaki parametr zapytacie.

Gdzie tkwi problem? Odpowiedź inżyniera mnie nieco zaskoczyła. Otóż wszystkiemu winne jest API, o które poprosiliśmy a dokładnie ‚provider’: microsoft.insights/metrics.

https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Web/sites/$resourceName/providers/microsoft.insights/metrics

W przypadku AppService jest on zaimplementowany, w przypadku ASE nie i trzeba skorzystać z nieco starszego dostawcy (aka ‚providera’ ;)) a mianowicie wprost zapytać o wybraną metrykę jak poniżej.
Teraz wszystkie parametry zostaną idealnie pobrane.

$startTime = "2016-12-29"
$endTime = "2016-12-31"
$apiVersion = "2014-04-01"
$filterValue = "(name.value eq 'CpuTime') and startTime eq $startTime and endTime eq $endTime and timeGrain eq duration'PT1H'"
$request = "https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Web/sites/$resourceName/metrics?api-version=$apiVersion&`$filter=$filterValue"
(Invoke-RestMethod -Uri $request -Headers $authHeader -Method Get -Verbose).Value | ConvertTo-Json

Powodzenia!

Ten wpis został opublikowany w kategorii Bez kategorii i oznaczony tagami , , , , , . Dodaj zakładkę do bezpośredniego odnośnika.