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

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:
- Włączyć Monitoring and Telemetry w module Feature Management.
- Utworzyć Application Insights w Azure i skopiować Instrumentation Key.
- 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.

union
app("ECOMSIID365CC").exceptions,
app("SATSIID365CC").exceptions,
app("PRODSIID365CC").exceptions
| summarize itemcount = count() by bin(timestamp, 1h), appName
| project timestamp, itemcount, appName
| render columnchart


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

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

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”).

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

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.

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.
Zostaw komentarz