Sii Polska

SII UKRAINE

SII SWEDEN

  • Szkolenia
  • Kariera
Dołącz do nas Kontakt
Wstecz

Sii Polska

SII UKRAINE

SII SWEDEN

Wstecz
Monitorowanie środowisk D365 Finance & Operations w Azure Application Insights

Zarządzanie wieloma środowiskami Dynamics 365 Finance jest ogromnym wyzwaniem. Wymaga efektywnego monitorowania wydajności, wdrożeń czy wyników testów automatycznych. Azure Application Insights to kompleksowe narzędzie, które pozwala nie tylko na szczegółową analizę danych telemetrycznych, ale również na ich wizualizację w formie intuicyjnych dashboardów.

Uruchomienie funkcji Monitoring and Telemetry pozwoli nam identyfikować problemy oraz śledzić ruch użytkowników w aplikacji Dynamics 365 Finance, ale nie jest wystarczające. Wdrożone w naszym Centrum Kompetencyjnym Dynamics 365 rozwiązanie, automatycznie przesyła dane telemetryczne do Application Insights z kluczowych etapów – od buildów po testy automatyczne (RSAT). Dodatkowo integruje Azure Monitor, co pozwala na śledzenie zasobów i wydajności środowisk Tier 1. Dzięki temu możemy w pełnimonitorować procesy wdrożeniowe.

W artykule opiszę te rozwiązania oraz przedstawię kilka prostych przykładów wykorzystania zapytań KQL, które ułatwią analizowanie danych telemetrycznych w Azure Application Insights.

W poniższym tekście prezentowane są dane ze środowisk testowych Centrum Kompetencyjnego.

Monitorowanie danych z aplikacji

Monitorowanie danych z aplikacji
Ryc. 1 Monitorowanie danych z aplikacji

Feature Monitoring and telemetry przesyła dane telemetryczne takie jak:

  • FormRun form loads,
  • X++ Exceptions,
  • X++ custom events,
  • X++ custom metrics.

To pozwala między innymi na śledzenie wyjątków, liczbę wyświetleń stron czy sesji użytkowników w aplikacji Dynamics 365 Finance nad Operations.

Aby skorzystać z tej funkcji, należy:

  1. Włączyć Monitoring and Telemetry w module Feature Management.
  2. Utworzyć Application Insights w Azure i skopiować Instrumentation Key.
  3. Skonfigurować integrację z Azure Application Insights, przechodząc do: System Administration → Setup → Monitoring and Telemetry Parameters.

Więcej szczegółów znajdziesz w oficjalnej dokumentacji.

Ta funkcja umożliwia także monitorowanie środowisk produkcyjnych.

Monitorowanie wielu środowisk

Niżej znajdziecie przykład monitorowania trzech różnych środowisk jednocześnie, ilustrujący, jak można wykorzystać dane telemetryczne do analizy i rozwiązywania problemów w środowiskach Dynamics 365 Finance.

Weryfikacja ilości wyjątków na godzinę dla trzech środowisk (KQL)
Ryc. 2 Weryfikacja ilości wyjątków na godzinę dla trzech środowisk (KQL)
union
  app("ECOMSIID365CC").exceptions,
  app("SATSIID365CC").exceptions,
  app("PRODSIID365CC").exceptions
| summarize itemcount = count() by bin(timestamp, 1h), appName
| project timestamp, itemcount, appName
| render columnchart

Wyświetlenia stron, zalogowani użytkownicy oraz ilość sesji na użytkownika
Ryc. 3 Wyświetlenia stron, zalogowani użytkownicy oraz ilość sesji na użytkownika
Tabela z wyjątkami, zawierająca opis zdarzenia, numer Batch Joba i użytkownika wykonującego
Ryc. 4 Tabela z wyjątkami, zawierająca opis zdarzenia, numer Batch Joba i użytkownika wykonującego

Monitorowanie Build, Release oraz RSAT

W celu automatycznego przesyłania danych do Application Insights, użyłem modułu PowerShell opartego na licencji MIT. Przygotowałem odpowiednie skrypty, które uruchamiane są w Pipeline podczas procesów Build, Test i Release w Azure DevOps.

Przekazywanie danych do Application Insights – Build i Release

Przekazywanie danych do Application Insights
Ryc. 5 Przekazywanie danych do Application Insights

Dane o statusach buildów i release są przesyłane do Application Insights za pomocą skryptu, który został osadzony jako zadanie pomiędzy poszczególnymi krokami builda oraz release w Azure Pipelines. Wykorzystuje on zmienne środowiskowe określające BuildId, nazwę release czy status wykonania danego kroku.

Status wykonania build lub release (success/fail) określany jest na podstawie zakończenia danego etapu. Na przykład:

  • Jeśli krok build zakończył się pomyślnie, przesyłana jest informacja o sukcesie (Success).
  • Jeśli wystąpił błąd, wysyłany jest status porażki (Fail).

Pobierając datę do zmiennej przed rozpoczęciem kroku build, możemy także śledzić całkowity czasu trwania build.

Przekazanie danych do Application Insights – RSAT

Przekazanie danych do Application Insights – RSAT
Ryc. 6 Przekazanie danych do Application Insights – RSAT

W celu automatyzacji monitorowania wyników testów RSAT napisałem skrypt w PowerShell, który pobiera dane z Azure DevOps Test Plans.

Po wykonaniu kroku testów RSAT w pipeline skrypt pobiera wyniki dla ostatniego TestRunID, wykonując zapytanie do API. Dla każdego TestCaseID uzyskane są szczegółowe informacje, takie jak:

  • TestSuite,
  • czas wykonania testu,
  • wynik testu.

Następnie, przy użyciu modułu AzurePowerShellUtilityFunctions, dane te są przesyłane do Application Insights jako zdarzenia telemetryczne, a szczegóły testów są dodawane jako Custom Properties. Dzięki temu możliwe jest monitorowanie wyników poszczególnych testów oraz ich wizualizacja na dashboardach.

Zapytania KQL

Dzięki zapytaniom KQL możemy:

  • Przefiltrować wyniki testów, opierając się na specyficznych ID testów, nazwach zestawów testów (Test Suite) oraz ich wynikach (Outcome).
  • Analizować wyniki testów dla różnych TestRunID, czyli sesji testowych.
  • Przeprowadzać analizę procentową wyników testów dla różnych zestawów testów (np. „Produkty” i „Standard”).
Procentowy podział wyników testów
Ryc. 7 Procentowy podział wyników testów
customEvents
| where name == "RSAT"
| extend Outcome = tostring(customDimensions["Outcome"])
| summarize Count = count() by Outcome
| render piechart

Procentowy podział wyników testów – zapytanie zlicza wyniki testów i pokazuje liczbę sukcesów (Passed) i porażek (Failed) na wykresie kołowym – KQL.

Monitorowanie wydajności i zasobów

Monitorowanie wydajności i zasobów
Ryc. 8 Monitorowanie wydajności i zasobów

W przypadku środowisk Tier 1 Cloud-Hosted, monitorowanie wydajności i zasobów maszyn jest możliwe dzięki integracji z Azure Monitor.

Już po wstępnej konfiguracji automatycznie generowany jest Workbook z wykresami na podstawie danych telemetrycznych dotyczące wydajności maszyn. Kluczowe wskaźniki, takie jak wykorzystanie procesora (CPU utilization), dostępna pamięć (Available memory) czy operacje dyskowe (Logical Disk IOPS) można przypiąć bezpośrednio do dashboardu Application Insights.

Dzięki zastosowaniu Data Collection Rules (DCR) można precyzyjnie określić, jakie dane mają być zbierane przez Azure Monitor. Przykładowe metryki, które mogą być monitorowane, to:

  • Obciążenie procesora (CPU utilization) – umożliwia analizę stopnia wykorzystania procesora przez środowisko.
  • Dostępna pamięć (Available memory) – wskazuje, ile pamięci RAM pozostało do dyspozycji aplikacji.
  • Zajętość dysków.
  • Event Log – umożliwia identyfikację błędów systemowych lub aplikacyjnych.

Dane te są dostępne w Application Insights jako InsightsMetrics, co umożliwia ich filtrowanie i wizualizację za pomocą zapytań KQL.

Wykres zdarzeń dziennika Application i System na każdą godzinę – KQL
Ryc. 9 Wykres zdarzeń dziennika Application i System na każdą godzinę – KQL
Event
| where EventLog == "Application" or EventLog == "System"
| project TimeGenerated, EventLog
| summarize EventCount= count() by bin(TimeGenerated, 1h), EventLog
| render columnchart

Generowanie kolumnowego wykresu zdarzeń dziennika Application i System na każdą godzinę – KQL.

Alerty

Rozbudowanie monitorowania o alerty w Application Insights i Azure Monitor dodatkowo podnosi efektywność zarządzania środowiskiem. Dzięki temu można skonfigurować powiadomienia w przypadku:

  • nadmiernego obciążenia CPU,
  • kończącego się miejsca na dysku,
  • błędów w aplikacji,
  • nieprawidłowego wykonania testów RSAT.

Takie podejście pozwala na szybkie reagowanie na potencjalne problemy i zapewnienie ciągłości działania środowisk Dynamics 365 Finance.

Podsumowanie

Monitorowanie środowisk Dynamics 365 Finance za pomocą Azure Application Insights zapewnia wgląd w wydajność, procesy wdrożeniowe oraz działanie aplikacji. Zapytania KQL dają elastyczność w analizowaniu danych, umożliwiając tworzenie wizualizacji, takich jak procentowy podział wyników testów czy szczegółowe analizy wydajności. Odpowiednio przygotowany dashboard pozwala również monitorować inne powiązane zasoby. Co więcej – umożliwia zarządzanie nimi bezpośrednio z tego poziomu, na przykład włączanie lub wyłączanie maszyn wirtualnych czy uruchamianie i zatrzymywanie Logic Apps.

Warto pamiętać, że korzystanie z Azure Application Insights samo w sobie nie generuje kosztów, ale przechowywanie danych w Log Analitycs Workspaces wiąże się z opłatami za zużycie, które można kontrolować, ustawiając dzienny limit (daily cap), o których więcej dowiesz się ze strony Microsoftu.  

***

Jeżeli interesuje Cię tematyka Dynamics 365, zajrzyj koniecznie do innych artykułów naszych ekspertów.

4.9/5
Ocena
4.9/5
Avatar

O autorze

Mateusz Witkowski

Administrator Systemowy w CC Dynamics 365. Interesuje się chmurą oraz automatyzacją procesów z wykorzystaniem PowerShell i Azure DevOps

Wszystkie artykuły autora

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Może Cię również zainteresować

Dołącz do nas

Sprawdź oferty pracy

Pokaż wyniki
Dołącz do nas Kontakt

This content is available only in one language version.
You will be redirected to home page.

Are you sure you want to leave this page?