Monitorowanie całego rozwiązania

Ukończone

W tej lekcji przyjrzymy się monitorowaniu całego rozwiązania.

Wprowadzenie

Włączenie monitorowania w dzisiejszych złożonych środowiskach obliczeniowych wymaga zebrania danych operacyjnych z każdej warstwy i składnika systemu rozproszonego. Potrzebujesz szczegółowych informacji na temat tych danych i połączyć je z różnymi perspektywami, aby wspierać wielu uczestników projektu w organizacji.

Usługa Azure Monitor zbiera dane z różnych rodzajów źródeł, w których można ich używać do analizy, wizualizacji i alertów. Zapewnia szczegółowe informacje dotyczące wszystkich monitorowanych zasobów, a nawet danych z innych usług, które przechowują swoje dane w usłudze Azure Monitor.

Analiza dziennika

Dzienniki to zdarzenia, które wystąpiły w systemie. Dzienniki mogą zawierać różne rodzaje danych i mogą mieć strukturę lub dowolny tekst ze znacznikiem czasu. Dzienniki mogą być tworzone sporadycznie, ponieważ zdarzenia w środowisku generują wpisy dziennika. System pod dużym obciążeniem zwykle generuje więcej woluminów dziennika.

Dzienniki w usłudze Azure Monitor są przydatne do identyfikowania głównych przyczyn problemów. Dane zbierane przez dzienniki usługi Azure Monitor są przechowywane w co najmniej jednym obszarze roboczym usługi Log Analytics. Dane są pobierane z obszaru roboczego usługi Log Analytics przy użyciu zapytania dziennika, które jest żądaniem tylko do odczytu w celu przetwarzania danych i zwracania wyników. Zapytania dzienników są zapisywane w języku język zapytań Kusto (KQL), który jest tym samym językiem zapytań używanym przez usługę Azure Data Explorer.

Uwaga

Przykładowa aplikacja usługi Azure Spring Apps została już skonfigurowana w obszarze roboczym usługi Log Analytics. Aby uzyskać więcej informacji na temat składni języka KQL , zobacz podsumowanie lekcji na końcu tego szkolenia.

Korzystanie z usługi Log Analytics

Istnieją faktycznie trzy sposoby uzyskiwania dostępu do dzienników aplikacji: Azure Storage, Azure Events Hub i Log Analytics. Skoncentrujemy się tutaj na usłudze Log Analytics, ponieważ jest to najbardziej powszechna usługa i jest zintegrowana z usługą Azure Spring Apps na potrzeby monitorowania metryk.

Ważne

Czas pozyskiwania danych dziennika w usłudze Azure Monitor może potrwać do 15 minut. Jeśli dane nie znajdują się w usłudze Log Analytics, pozyskiwanie danych dziennika usługi Azure Spring Apps może zająć trochę czasu.

  1. Otwórz witrynę Azure Portal.

  2. Wybierz pozycję Azure Spring Apps z listy usług platformy Azure.

  3. Wybierz wystąpienie usługi Azure Spring Apps.

  4. Następnie w sekcji Monitorowanie wybierz pozycję Dzienniki.

  5. W polu wyszukiwania Zapytanie:

    Zrzut ekranu przedstawiający zapytanie dotyczące dzienników usługi Azure Spring Apps.

    • Aby wyświetlić dzienniki, uruchom zapytanie, takie jak:

      AppPlatformLogsforSpring
      | limit 50
      
    • Aby wyświetlić metryki, wprowadź zapytanie, takie jak:

      AzureMetrics
      | limit 50
      
    • Dzienniki określonej aplikacji lub wystąpienia można przeszukiwać, ustawiając warunek filtru:

      AppPlatformLogsforSpring
      | where ServiceName == "YourServiceName" and AppName == "YourAppName" and InstanceName == "YourInstanceName"
      | limit 50
      

Analizowanie dzienników aplikacji

Dzienniki aplikacji udostępniają krytyczne informacje i pełne dzienniki dotyczące kondycji, wydajności i nie tylko aplikacji. W następnej sekcji udostępniamy zapytania ułatwiające zrozumienie bieżących i przeszłych stanów aplikacji.

Wyświetlanie dzienników aplikacji z usługi Azure Spring Apps

  1. Otwórz witrynę Azure Portal.

  2. Wybierz pozycję Azure Spring Apps z listy usług platformy Azure.

  3. Wybierz wystąpienie usługi Azure Spring Apps.

  4. Następnie w sekcji Monitorowanie wybierz pozycję Dzienniki.

  5. W polu wyszukiwania Zapytanie:

    • Aby przejrzeć listę dzienników aplikacji z usługi Azure Spring Apps, posortowana według czasu z wyświetlonymi ostatnio dziennikami, uruchom następujące zapytanie:

      AppPlatformLogsforSpring
      | project TimeGenerated , ServiceName , AppName , InstanceName , Log
      | sort by TimeGenerated desc
      
    • Aby przejrzeć niezasortowane wpisy dziennika, które zawierają błąd lub wyjątek, uruchom następujące zapytanie:

      AppPlatformLogsforSpring
      | project TimeGenerated , ServiceName , AppName , InstanceName , Log
      | where Log contains "error" or Log contains "exception"
      
    • Aby utworzyć wykres kołowy, który wyświetla liczbę błędów i wyjątków zarejestrowanych przez aplikację, uruchom następujące zapytanie:

      AppPlatformLogsforSpring
      | where TimeGenerated > ago(1h)
      | where Log contains "error" or Log contains "exception"
      | summarize count_per_app = count() by AppName
      | sort by count_per_app desc
      | render piechart
      

Monitorowanie bazy danych

Monitorowanie danych dotyczących serwerów ułatwia rozwiązywanie problemów i optymalizowanie pod kątem obciążenia. Usługa Azure Database for MySQL udostępnia różne metryki, które zapewniają wgląd w zachowanie serwera.

W usłudze Azure Database for MySQL dziennik wolnych zapytań jest dostępny dla użytkowników. Dostęp do dziennika transakcji nie jest obsługiwany. Dziennik wolnych zapytań służy do identyfikowania wąskich gardeł wydajności na potrzeby rozwiązywania problemów.

W naszej przykładowej aplikacji dzienniki wolnych zapytań są konfigurowane do potoku do dzienników usługi Azure Monitor za pomocą dzienników diagnostycznych i można przeprowadzić dalszą analizę wolnych zapytań. Poniżej przedstawiono przykładowe zapytania ułatwiające rozpoczęcie pracy/

Ważne

Czas pozyskiwania danych dziennika MySQL w usłudze Azure Monitor może potrwać do 30 minut. Jeśli nie znaleziono danych w usłudze Log Analytics, pozyskiwanie danych dziennika MySQL może zająć więcej czasu.

  1. Zaloguj się w witrynie Azure Portal.

  2. Wybierz serwer usługi Azure Database for MySQL używany dla usługi Azure Spring Apps.

  3. Następnie w sekcji Monitorowanie wybierz pozycję Dzienniki.

    Zrzut ekranu przedstawiający zapytanie dotyczące zapytań dłuższych niż jedna sekunda.

  4. W polu wyszukiwania Zapytanie:

    • Aby pobrać wszystkie zapytania dłuższe niż jedną sekundę, uruchom następujące zapytanie:

      AzureDiagnostics
      | where Category == 'MySqlSlowLogs'
      | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
      
    • Aby wyświetlić listę pięciu najdłuższych zapytań, uruchom następujące zapytanie:

      AzureDiagnostics
      | where Category == 'MySqlSlowLogs'
      | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
      | order by query_time_d desc
      | take 5
      
    • Aby podsumować wolne zapytania według minimalnej, maksymalnej, średniej i czasu zapytania odchylenia standardowego, uruchom następujące zapytanie:

      AzureDiagnostics
      | where Category == 'MySqlSlowLogs'
      | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
      | summarize count(), min(query_time_d), max(query_time_d), avg(query_time_d), stdev(query_time_d), percentile(query_time_d, 95) by LogicalServerName_s
      
    • Aby utworzyć graf dystrybucji wolnych zapytań na określonym serwerze, uruchom następujące zapytanie:

      AzureDiagnostics
      | where Category == 'MySqlSlowLogs'
      | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s 
      | summarize count() by LogicalServerName_s, bin(TimeGenerated, 5m)
      | render timechart
      
  5. Możesz również użyć dziennika inspekcji do śledzenia aktywności na poziomie bazy danych. Jest on często używany do zapewniania zgodności. Dzienniki inspekcji są zintegrowane z dziennikami diagnostycznymi usługi Azure Monitor. W tym przykładzie włączyliśmy dzienniki inspekcji na serwerze MySQL, dzięki czemu można przeprowadzić dalszą analizę zdarzeń inspekcji.

    • Oto przykładowe zapytanie, które pobiera ogólny dziennik MySQL:

      AzureDiagnostics
      | where Category == 'MySqlAuditLogs' and event_class_s == "general_log"
      | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s 
      | order by TimeGenerated desc
      

Monitorowanie interfejsu użytkownika

Jeśli dodasz usługę Application Insights do skryptu strony, uzyskasz chronometraż ładowania strony i wywołań AJAX, liczników i szczegółów wyjątków przeglądarki oraz błędów AJAX, a także liczby użytkowników i sesji. Wszystkie te metryki można podzielić na segmenty według strony, systemu operacyjnego klienta i wersji przeglądarki, lokalizacji geograficznej i innych wymiarów. Możesz ustawić alerty dotyczące liczby niepowodzeń lub powolne ładowanie strony, a także wstawić wywołania śledzenia w kodzie JavaScript, aby śledzić, jak są używane różne funkcje aplikacji strony internetowej.

Usługę Application Insights można używać z dowolną stroną internetową; wystarczy dodać krótki fragment kodu JavaScript. Jeśli twoja usługa internetowa jest językiem Java, możesz użyć zestawów SDK po stronie serwera z zestawem SDK języka JavaScript po stronie klienta, aby poznać wydajność aplikacji.

Uwaga

Aby uzyskać więcej informacji na temat monitorowania interfejsu użytkownika, zobacz podsumowanie lekcji na końcu tego szkolenia.