Udostępnij za pośrednictwem


Usługa Application Insights dla usług w chmurze platformy Azure

Usługa Application Insights może monitorować aplikacje usługi w chmurze platformy Azure pod kątem dostępności, wydajności, awarii i użycia, łącząc dane z zestawów SDK usługi Application Insights z danymi Diagnostyka Azure z usług w chmurze. Dzięki uzyskiwanym opiniom dotyczącym wydajności i skuteczności aplikacji możesz dokonać opartych na informacjach wyborów dotyczących kierunku projektu w każdym cyklu życia.

Pulpit nawigacyjny Przegląd

Uwaga

31 marca 2025 r. zostanie zakończone świadczenie pomocy technicznej dla pozyskiwania klucza instrumentacji. Pozyskiwanie klucza instrumentacji będzie nadal działać, ale nie udostępnimy już aktualizacji ani obsługi funkcji. Przejście do parametry połączenia w celu skorzystania z nowych funkcji.

Wymagania wstępne

Przed rozpoczęciem potrzebne są następujące elementy:

  • Subskrypcja platformy Azure.

    Zaloguj się przy użyciu konta Microsoft dla systemu Windows, Xbox Live lub innych usług w chmurze firmy Microsoft.

  • Narzędzia platformy Microsoft Azure w wersji 2.9 lub nowszej.

  • Developer Analytics Tools 7.10 lub nowszy.

Szybkie rozpoczęcie efektywnej pracy

Najszybszym i najłatwiejszym sposobem monitorowania usługi w chmurze za pomocą usługi Application Insights jest wybranie tej opcji podczas publikowania usługi na platformie Azure.

Przykładowa strona ustawień diagnostycznych

Ta opcja instrumentuje aplikację w czasie wykonywania, zapewniając wszystkie dane telemetryczne potrzebne do monitorowania żądań, wyjątków i zależności w roli sieci Web. Monitoruje również liczniki wydajności z ról procesu roboczego. Wszystkie ślady diagnostyczne generowane przez aplikację są również wysyłane do usługi Application Insights.

Jeśli ta opcja jest potrzebna, wszystko jest gotowe.

Następne kroki to wyświetlanie metryk z aplikacji i wykonywanie zapytań dotyczących danych za pomocą usługi Analytics.

Aby monitorować wydajność w przeglądarce, możesz również skonfigurować testy dostępności i dodać kod do stron internetowych.

W następnych sekcjach omówiono następujące dodatkowe opcje:

  • Wysyłanie danych z różnych składników i konfiguracji kompilacji do oddzielnych zasobów.
  • Dodawanie niestandardowej telemetrii z aplikacji.

Przykładowa aplikacja instrumentowana za pomocą usługi Application Insights

W tej przykładowej aplikacji usługa Application Insights jest dodawana do usługi w chmurze z dwiema rolami procesów roboczych hostowanymi na platformie Azure.

W następnej sekcji dowiesz się, jak dostosować własny projekt usługi w chmurze w taki sam sposób.

Planowanie zasobów i grup zasobów

Dane telemetryczne z aplikacji są przechowywane, analizowane i wyświetlane w zasobie platformy Azure typu Application Insights.

Każdy zasób należy do grupy zasobów. Grupy zasobów służą do zarządzania kosztami, udzielania dostępu członkom zespołu i wdrażania aktualizacji w jednej skoordynowanej transakcji. Można na przykład napisać skrypt, aby wdrożyć usługę w chmurze platformy Azure i jej zasoby monitorowania usługi Application Insights w jednej operacji.

Zasoby dla składników

Zalecamy dodanie właściwości wymiaru do każdego elementu telemetrii identyfikującego jego rolę źródłową. W tym podejściu wykresy metryk, takie jak wyjątki, zwykle pokazują agregację liczb z różnych ról, ale w razie potrzeby można podzielić wykres według identyfikatora roli. Możesz również filtrować wyszukiwania według tego samego wymiaru. Ta alternatywa sprawia, że wyświetlanie wszystkich elementów w tym samym czasie jest nieco łatwiejsze, ale może również prowadzić do pewnego zamieszania między rolami.

Telemetria przeglądarki zwykle jest zawarta w tym samym zasobie, co jej rola sieci Web po stronie serwera.

Umieść zasoby usługi Application Insights dla różnych składników w jednej grupie zasobów. Takie podejście ułatwia zarządzanie nimi razem.

Oddzielanie programowania, testowania i produkcji

Jeśli opracowujesz zdarzenia niestandardowe dla następnej funkcji, gdy poprzednia wersja działa, wyślij telemetrię tworzenia do oddzielnych zasobów usługi Application Insights. W przeciwnym razie znalezienie danych telemetrycznych testowych we wszystkich ruchach z witryny na żywo może być trudne.

Aby uniknąć takiej sytuacji, utwórz oddzielne zasoby dla każdej konfiguracji kompilacji lub "sygnatury" (programowanie, testowanie, produkcja itd.) systemu. Umieść zasoby dla każdej konfiguracji kompilacji w oddzielnej grupie zasobów.

Aby wysłać dane telemetryczne do odpowiednich zasobów, możesz skonfigurować zestaw SDK usługi Application Insights, aby pobierał inny klucz instrumentacji w zależności od konfiguracji kompilacji.

Dowiedz się, jak dynamicznie ustawiać klucz instrumentacji dla różnych etapów.

Tworzenie zasobu usługi Application Insights dla każdej roli

Jeśli zdecydujesz się utworzyć oddzielny zasób dla każdej roli, a może oddzielny zestaw dla każdej konfiguracji kompilacji, najłatwiej jest utworzyć je wszystkie w portalu usługi Application Insights. Jeśli tworzysz zasoby dużo, możesz zautomatyzować proces.

  1. W witrynie Azure Portal wybierz pozycję Nowe>usługi>deweloperskie Application Insights.

    Okienko usługi Application Insights

  2. Z listy rozwijanej Typ aplikacji wybierz pozycję ASP.NET aplikacji internetowej.

Każdy zasób jest identyfikowany przez klucz instrumentacji. Ten klucz może być potrzebny później, jeśli chcesz ręcznie skonfigurować lub zweryfikować konfigurację zestawu SDK.

Konfigurowanie diagnostyki platformy Azure dla każdej roli

Ustaw tę opcję, aby monitorować aplikację za pomocą usługi Application Insights. W przypadku ról internetowych ta opcja zapewnia monitorowanie wydajności, alerty, diagnostykę i analizę użycia. W przypadku innych ról można wyszukiwać i monitorować Diagnostyka Azure, takie jak ponowne uruchamianie, liczniki wydajności i wywołania do elementu System.Diagnostics.Trace.

  1. W programie Visual Studio Eksplorator rozwiązań w obszarze Role usługi YourCloud otwórz>>właściwości każdej roli.<

  2. W obszarze Konfiguracja zaznacz pole wyboru Wyślij dane diagnostyczne do usługi Application Insights , a następnie wybierz utworzony wcześniej zasób usługi Application Insights.

Jeśli zamierzasz używać osobnego zasobu usługi Application Insights dla każdej konfiguracji kompilacji, najpierw wybierz konfigurację.

Konfigurowanie usługi Application Insights

Ma to wpływ na wstawianie kluczy instrumentacji usługi Application Insights do plików o nazwie ServiceConfiguration.*.cscfg. Oto przykładowy kod.

Jeśli chcesz różnić poziom informacji diagnostycznych wysyłanych do usługi Application Insights, możesz to zrobić, edytując pliki cscfg bezpośrednio.

Zainstaluj zestaw SDK w każdym projekcie

Dzięki tej opcji możesz dodać niestandardowe dane telemetryczne biznesowe do dowolnej roli. Opcja zapewnia bliższą analizę sposobu, w jaki aplikacja jest używana i działa.

W programie Visual Studio skonfiguruj zestaw SDK usługi Application Insights dla każdego projektu aplikacji w chmurze.

  1. Aby skonfigurować role internetowe, kliknij prawym przyciskiem myszy projekt, a następnie wybierz pozycję Konfiguruj usługę Application Insights lub Dodaj > telemetrię usługi Application Insights.

  2. Aby skonfigurować role procesów roboczych:

    a. Kliknij prawym przyciskiem myszy projekt, a następnie wybierz pozycję Zarządzaj pakietami NuGet.

    b. Dodaj pozycję Usługa Application Insights dla serwerów systemu Windows.

  3. Aby skonfigurować zestaw SDK do wysyłania danych do zasobu usługi Application Insights:

    a. W odpowiedniej funkcji uruchamiania ustaw klucz instrumentacji z ustawienia konfiguracji w pliku cscfg :

        TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
        configuration.InstrumentationKey = RoleEnvironment.GetConfigurationSettingValue("APPINSIGHTS_INSTRUMENTATIONKEY");
        var telemetryClient = new TelemetryClient(configuration);
    

    b. Powtórz "krok a" dla każdej roli w aplikacji. Zobacz przykłady:

  4. Ustaw plik ApplicationInsights.config, który ma być zawsze kopiowany do katalogu wyjściowego.

    Komunikat w pliku config prosi o umieszczenie tam klucza instrumentacji. Jednak w przypadku aplikacji w chmurze lepiej ustawić ją z pliku cscfg . Takie podejście gwarantuje, że rola jest prawidłowo identyfikowana w portalu.

Konfigurowanie monitora stanu w celu zbierania pełnych zapytań SQL (opcjonalnie)

Ten krok jest wymagany tylko wtedy, gdy chcesz przechwycić pełne zapytania SQL w programie .NET Framework.

  1. W \*.csdef pliku Dodaj zadanie uruchamiania dla każdej roli podobnej do

    <Startup>
      <Task commandLine="AppInsightsAgent\InstallAgent.bat" executionContext="elevated" taskType="simple">
        <Environment>
          <Variable name="ApplicationInsightsAgent.DownloadLink" value="http://go.microsoft.com/fwlink/?LinkID=522371" />
          <Variable name="RoleEnvironment.IsEmulated">
            <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
          </Variable>
        </Environment>
      </Task>
    </Startup>
    
  2. Pobierz InstallAgent.bat i InstallAgent.ps1, umieść je w AppInsightsAgent folderze w każdym projekcie roli. Pamiętaj, aby skopiować je do katalogu wyjściowego za pomocą właściwości pliku programu Visual Studio lub skryptów kompilacji.

  3. Na wszystkich rolach procesu roboczego dodaj zmienne środowiskowe:

      <Environment>
        <Variable name="COR_ENABLE_PROFILING" value="1" />
        <Variable name="COR_PROFILER" value="{324F817A-7420-4E6D-B3C1-143FBED6D855}" />
        <Variable name="MicrosoftInstrumentationEngine_Host" value="{CA487940-57D2-10BF-11B2-A3AD5A13CBC0}" />
      </Environment>
    

Uruchom i opublikuj aplikację

  1. Uruchom aplikację i zaloguj się na platformie Azure.

  2. Otwórz utworzone zasoby usługi Application Insights.

    Poszczególne punkty danych są wyświetlane w obszarze Wyszukiwanie, a zagregowane dane są wyświetlane w Eksploratorze metryk.

  3. Dodaj więcej danych telemetrycznych (zobacz następne sekcje), a następnie opublikuj aplikację, aby uzyskać informacje diagnostyczne na żywo i opinie dotyczące użycia.

Jeśli nie ma żadnych danych, wykonaj następujące czynności:

  1. Aby wyświetlić poszczególne zdarzenia, otwórz kafelek Wyszukaj .
  2. W aplikacji otwórz różne strony, aby wygenerować dane telemetryczne.
  3. Zaczekaj kilka sekund, a następnie kliknij przycisk Odśwież.

Wyświetlanie zdarzeń Diagnostyka Azure

Informacje o Diagnostyka Azure można znaleźć w usłudze Application Insights w następujących lokalizacjach:

  • Liczniki wydajności są wyświetlane jako metryki niestandardowe.
  • Dzienniki zdarzeń systemu Windows są wyświetlane jako ślady i zdarzenia niestandardowe.
  • Dzienniki aplikacji, dzienniki śledzenia zdarzeń systemu Windows i wszelkie dzienniki infrastruktury diagnostycznej są wyświetlane jako ślady.

Aby wyświetlić liczniki wydajności i liczby zdarzeń, otwórz Eksploratora metryk i dodaj następujący wykres:

Diagnostyka Azure danych

Aby przeszukać różne dzienniki śledzenia wysyłane przez Diagnostyka Azure, użyj zapytania Wyszukaj lub Analiza. Załóżmy na przykład, że masz nieobsługiwany wyjątek, który spowodował awarię i odtwarzanie roli. Te informacje będą wyświetlane w kanale aplikacji dziennika zdarzeń systemu Windows. Możesz użyć funkcji Wyszukiwania, aby wyświetlić błąd dziennika zdarzeń systemu Windows i uzyskać pełny ślad stosu dla wyjątku. Dzięki temu można znaleźć główną przyczynę problemu.

wyszukiwanie Diagnostyka Azure

Dalsze funkcje telemetrii

W następnych sekcjach omówiono sposób uzyskiwania dodatkowych danych telemetrycznych z różnych aspektów aplikacji.

Śledzenie żądań z ról procesów roboczych

W rolach sieci Web moduł żądań automatycznie zbiera dane o żądaniach HTTP. Przykłady sposobu zastępowania domyślnego zachowania kolekcji można znaleźć w przykładzie MVCWebRole.

Możesz przechwycić wydajności wywołań do ról procesów roboczych, śledząc je w taki sam sposób, jak żądania HTTP. W usłudze Application Insights żądanie typu telemetrii mierzy jednostkę po stronie nazwanego serwera, które może być synchronizowane i może niezależnie zakończyć się sukcesem lub niepowodzeniem. Mimo że żądania HTTP są przechwytywane automatycznie przez zestaw SDK, możesz wstawić własny kod w celu śledzenia żądań do ról procesów roboczych.

Zobacz dwie przykładowe role procesów roboczych instrumentowane w celu zgłaszania żądań:

Wyjątki

Aby uzyskać informacje na temat zbierania nieobsługiwanych wyjątków z różnych typów aplikacji internetowych, zobacz Monitorowanie wyjątków w usłudze Application Insights.

Przykładowa rola sieci Web ma kontrolery MVC5 i Web API 2. Nieobsługiwane wyjątki od tych dwóch są przechwytywane za pomocą następujących programów obsługi:

W przypadku ról procesów roboczych można śledzić wyjątki na dwa sposoby:

  • Użyj funkcji TrackException(np.
  • Jeśli dodano pakiet NuGet odbiornika śledzenia usługi Application Insights, możesz użyć elementu System.Diagnostics.Trace, aby rejestrować wyjątki , jak pokazano w tym przykładzie.

Liczniki wydajności

Domyślnie są zbierane następujące liczniki:

  • \Process(?? APP_WIN32_PROC?) % czasu procesora
  • \Memory\Available Bytes
  • Wyjątki środowiska .NET CLR(?? APP_CLR_PROC?) Liczba wyrzuconych exceps na sekundę
  • \Process(??APP_WIN32_PROC??)\Private Bytes
  • \Process(??APP_WIN32_PROC??)\IO Data Bytes/sec
  • \Processor(_Total)% czasu procesora

Następujące liczniki są również zbierane dla ról sieci Web:

  • \ASP.NET Applications(??APP_W3SVC_PROC??)\Requests/Sec
  • \ASP.NET Applications(??APP_W3SVC_PROC??)\Request Execution Time
  • \ASP.NET Applications(??APP_W3SVC_PROC??)\Requests In Application Queue

Dodatkowe niestandardowe lub inne liczniki wydajności systemu Windows można określić, edytując plik ApplicationInsights.config, jak pokazano w tym przykładzie.

Liczniki wydajności

Skorelowane dane telemetryczne dla ról procesów roboczych

W przypadku zaawansowanego środowiska diagnostycznego możesz wyświetlić, co doprowadziło do niepowodzenia lub dużego opóźnienia żądania. W przypadku ról internetowych zestaw SDK automatycznie konfiguruje korelację między powiązanymi telemetriami.

Aby uzyskać ten widok dla ról procesu roboczego, możesz użyć inicjatora niestandardowej telemetrii, aby ustawić wspólny atrybut kontekstu Operation.Id dla wszystkich telemetrii. Dzięki temu możesz na pierwszy rzut oka sprawdzić, czy problem z opóźnieniem lub niepowodzeniem został spowodowany przez zależność, czy kod.

Oto, jak to zrobić:

  • Ustaw identyfikator correlationId na obiekt CallContext , jak pokazano w tym przykładzie. W tym przypadku używamy identyfikatora żądania jako identyfikatora correlationId.
  • Dodaj niestandardową implementację telemetriiInitializer, aby ustawić Operation.Id na identyfikator correlationId, który został wcześniej ustawiony. Aby zapoznać się z przykładem, zobacz ItemCorrelationTelemetryInitializer.
  • Dodaj inicjator niestandardowej telemetrii. Można to zrobić w pliku ApplicationInsights.config lub w kodzie, jak pokazano w tym przykładzie.

Telemetria klienta

Aby uzyskać dane telemetryczne oparte na przeglądarce, takie jak liczba wyświetleń stron, czasy ładowania stron lub wyjątki skryptu, a także napisać niestandardowe dane telemetryczne w skryptach stron, zobacz Dodawanie zestawu SDK języka JavaScript do stron internetowych.

Testy dostępności

Aby upewnić się, że aplikacja pozostaje aktywna i odpowiada, skonfiguruj testy internetowe.

Wyświetlanie wszystkich elementów razem

Ogólny obraz systemu umożliwia wyświetlenie kluczowych wykresów monitorowania na jednym pulpicie nawigacyjnym. Na przykład możesz przypiąć liczbę żądań i awarii poszczególnych ról.

Jeśli system korzysta z innych usług platformy Azure, takich jak Stream Analytics, dołącz również ich wykresy monitorowania.

Jeśli masz klienta aplikacji mobilnej, użyj pakietu App Center. Utwórz zapytania w pozycji Analiza, aby wyświetlić liczby zdarzeń i przypiąć je do pulpitu nawigacyjnego.

Przykład

Przykład monitoruje usługę mającą rolę sieci Web i dwie role procesów roboczych.

Wyjątek "nie znaleziono metody" podczas uruchamiania w usługach w chmurze platformy Azure

Czy utworzono kompilację dla platformy .NET LTS? Wcześniejsze wersje nie są automatycznie obsługiwane w rolach usług w chmurze platformy Azure. Zainstaluj platformę .NET LTS na każdej roli przed uruchomieniem aplikacji.

Następne kroki