Udostępnij za pośrednictwem


Eksplorowanie dzienników śledzenia platformy .NET/.NET Core i języka Python w usłudze Application Insights

Wyślij dzienniki śledzenia diagnostycznego dla aplikacji ASP.NET/ASP.NET Core z katalogu ILogger, NLog, log4Net lub System.Diagnostics.Trace, aby aplikacja systemu Azure Insights. W przypadku aplikacji języka Python wyślij dzienniki śledzenia diagnostycznego przy użyciu programu AzureLogHandler w środowisku OpenCensus Python dla usługi Azure Monitor. Następnie możesz je eksplorować i wyszukiwać. Te dzienniki są scalane z innymi plikami dziennika z aplikacji. Można ich używać do identyfikowania śladów skojarzonych z każdym żądaniem użytkownika i korelowania ich z innymi zdarzeniami i raportami wyjątków.

Uwaga

Czy potrzebujesz modułu przechwytywania dzienników? Jest to przydatna karta dla rejestratorów innych firm. Jeśli jednak nie używasz jeszcze protokołu NLog, log4Net lub System.Diagnostics.Trace, rozważ bezpośrednie wywołanie metody TrackTrace() usługi Application Insights.

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.

Instalowanie rejestrowania w aplikacji

Zainstaluj wybraną strukturę rejestrowania w projekcie, co powinno spowodować wpis w pliku app.config lub web.config.

 <configuration>
  <system.diagnostics>
    <trace>
      <listeners>
        <add name="myAppInsightsListener" type="Microsoft.ApplicationInsights.TraceListener.ApplicationInsightsTraceListener, Microsoft.ApplicationInsights.TraceListener" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

Konfigurowanie usługi Application Insights w celu zbierania dzienników

Dodaj usługę Application Insights do projektu , jeśli jeszcze tego nie zrobiono i istnieje opcja dołączenia modułu zbierającego dzienniki.

Możesz też kliknąć prawym przyciskiem myszy projekt w Eksplorator rozwiązań, aby skonfigurować usługę Application Insights. Wybierz opcję Konfiguruj zbieranie śledzenia.

Uwaga

Brak opcji menu usługi Application Insights lub modułu zbierającego dzienniki? Spróbuj rozwiązać problemy.

Instalacja ręczna

Użyj tej metody, jeśli typ projektu nie jest obsługiwany przez instalatora usługi Application Insights. Jeśli na przykład jest to projekt klasyczny systemu Windows.

  1. Jeśli planujesz używać usługi log4net lub NLog, zainstaluj ją w projekcie.

  2. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz pozycję Zarządzaj pakietami NuGet.

  3. Wyszukaj usługę Application Insights.

  4. Wybierz jeden z następujących pakietów:

Pakiet NuGet instaluje niezbędne zestawy i modyfikuje plik web.config lub app.config, jeśli ma to zastosowanie.

ILogger

Przykłady użycia implementacji protokołu ILogger usługi Application Insights z aplikacjami konsoli i ASP.NET Core można znaleźć w temacie ApplicationInsightsLoggerProvider for .NET Core ILogger logs (Usługa ApplicationInsightsLoggerProvider dla dzienników ILogger platformy .NET Core).

Wstawianie wywołań dziennika diagnostycznego

W przypadku korzystania z elementu System.Diagnostics.Trace typowe wywołanie to:

System.Diagnostics.Trace.TraceWarning("Slow response - database01");

Jeśli wolisz log4net lub NLog, użyj:

    logger.Warn("Slow response - database01");

Używanie zdarzeń EventSource

Zdarzenia System.Diagnostics.Tracing.EventSource można skonfigurować do wysyłania do usługi Application Insights jako śladów. Najpierw zainstaluj Microsoft.ApplicationInsights.EventSourceListener pakiet NuGet. Następnie zmodyfikuj sekcję TelemetryModules pliku ApplicationInsights.config .

    <Add Type="Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule, Microsoft.ApplicationInsights.EventSourceListener">
      <Sources>
        <Add Name="MyCompany" Level="Verbose" />
      </Sources>
    </Add>

Dla każdego źródła można ustawić następujące parametry:

  • Nazwa określa nazwę źródła zdarzeń do zebrania.
  • Poziom określa poziom rejestrowania do zbierania: Krytyczne, Błąd, Informacje, LogAlways, Verbose lub Warning.
  • Słowa kluczowe (opcjonalnie) określają wartość całkowitą kombinacji słów kluczowych do użycia.

Używanie zdarzeń DiagnosticSource

Zdarzenia System.Diagnostics.DiagnosticSource można skonfigurować do wysyłania do usługi Application Insights jako śladów. Najpierw zainstaluj Microsoft.ApplicationInsights.DiagnosticSourceListener pakiet NuGet. Następnie zmodyfikuj sekcję "TelemetryModules" pliku ApplicationInsights.config .

    <Add Type="Microsoft.ApplicationInsights.DiagnosticSourceListener.DiagnosticSourceTelemetryModule, Microsoft.ApplicationInsights.DiagnosticSourceListener">
      <Sources>
        <Add Name="MyDiagnosticSourceName" />
      </Sources>
    </Add>

Dla każdego źródła diagnostycznego, które chcesz śledzić, dodaj wpis z atrybutem Name ustawionym na nazwę źródła diagnostycznego.

Używanie zdarzeń ETW

Śledzenie zdarzeń systemu Windows (ETW) można skonfigurować tak, aby było wysyłane do usługi Application Insights jako ślady. Najpierw zainstaluj Microsoft.ApplicationInsights.EtwCollector pakiet NuGet. Następnie zmodyfikuj sekcję "TelemetryModules" pliku ApplicationInsights.config .

Uwaga

Zdarzenia ETW można zbierać tylko wtedy, gdy proces hostujący zestaw SDK działa w ramach tożsamości, która jest członkiem użytkowników lub administratorów dziennika wydajności.

    <Add Type="Microsoft.ApplicationInsights.EtwCollector.EtwCollectorTelemetryModule, Microsoft.ApplicationInsights.EtwCollector">
      <Sources>
        <Add ProviderName="MyCompanyEventSourceName" Level="Verbose" />
      </Sources>
    </Add>

Dla każdego źródła można ustawić następujące parametry:

  • ProviderName to nazwa dostawcy ETW do zbierania.
  • ProviderGuid określa identyfikator GUID dostawcy ETW do zbierania. Można go użyć zamiast ProviderName.
  • Poziom ustawia poziom rejestrowania do zbierania. Może to być krytyczne, błędy, informacyjne, logalways, pełne lub ostrzeżenie.
  • Słowa kluczowe (opcjonalnie) ustawiają wartość całkowitą kombinacji słów kluczowych do użycia.

Bezpośrednie używanie interfejsu API śledzenia

Interfejs API śledzenia usługi Application Insights można wywołać bezpośrednio. Karty rejestrowania używają tego interfejsu API.

Na przykład:

TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.TrackTrace("Slow response - database01");

Zaletą TrackTrace jest to, że można umieścić stosunkowo długie dane w komunikacie. Możesz na przykład zakodować tam dane POST.

Możesz również dodać poziom ważności do wiadomości. Podobnie jak inne dane telemetryczne, można dodać wartości właściwości, aby ułatwić filtrowanie lub wyszukiwanie różnych zestawów śladów. Na przykład:

TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.TrackTrace("Slow database response",
                            SeverityLevel.Warning,
                            new Dictionary<string, string> { { "database", "db.ID" } });

Teraz możesz łatwo odfiltrować w obszarze Wyszukiwanie transakcji wszystkie komunikaty określonego poziomu ważności, które odnoszą się do określonej bazy danych.

AzureLogHandler for OpenCensus Python

Program obsługi dzienników usługi Azure Monitor umożliwia eksportowanie dzienników języka Python do usługi Azure Monitor.

Instrumentacja aplikacji za pomocą zestawu OpenCensus Python SDK dla usługi Azure Monitor.

W tym przykładzie pokazano, jak wysłać dziennik poziomu ostrzeżenia do usługi Azure Monitor.

import logging

from opencensus.ext.azure.log_exporter import AzureLogHandler

logger = logging.getLogger(__name__)
logger.addHandler(AzureLogHandler(connection_string='InstrumentationKey=<your-instrumentation_key-here>'))
logger.warning('Hello, World!')

Eksplorowanie dzienników

Uruchom aplikację w trybie debugowania lub wdróż ją na żywo.

W okienku przeglądu aplikacji w portalu usługi Application Insights wybierz pozycję Wyszukiwanie transakcji.

Możesz na przykład:

  • Filtruj ślady dziennika lub elementy o określonych właściwościach.
  • Szczegółowe sprawdzanie określonego elementu.
  • Znajdź inne dane dziennika systemu, które odnoszą się do tego samego żądania użytkownika (ma ten sam identyfikator operacji).
  • Zapisz konfigurację strony jako ulubionej.

Uwaga

Jeśli aplikacja wysyła dużo danych i używasz zestawu SDK usługi Application Insights dla ASP.NET w wersji 2.0.0-beta3 lub nowszej, funkcja próbkowania adaptacyjnego może działać i wysyłać tylko część danych telemetrycznych. Dowiedz się więcej o próbkowaniu.

Rozwiązywanie problemów

Znajdź odpowiedzi na często zadawane pytania.

Co powoduje opóźnione dane telemetryczne, przeciążone sieci i nieefektywną transmisję?

System.Diagnostics.Tracing ma funkcję automatycznego napływu. Ta funkcja powoduje opróżnienie zestawu SDK z każdym elementem telemetrii, co jest niepożądane i może powodować problemy z kartą rejestrowania, takie jak opóźnione dane telemetryczne, przeciążona sieć i nieefektywna transmisja.

Jak mogę to zrobić dla języka Java?

W instrumentacji bez kodu w języku Java, co jest zalecane, dzienniki są zbierane z pudełka. Użyj agenta java 3.0.

Agent języka Java usługi Application Insights zbiera dzienniki z usługi Log4j, Logback i java.util.logging z tego pola.

Dlaczego w menu kontekstowym projektu nie ma opcji usługi Application Insights?

  • Upewnij się, że na maszynie deweloperów zainstalowano narzędzia Developer Analytics Tools. W programie Visual Studio przejdź do pozycji Rozszerzenia i aktualizacje narzędzi>i poszukaj narzędzi do analizy deweloperów. Jeśli nie znajduje się na karcie Zainstalowane , otwórz kartę Online i zainstaluj ją.
  • Ten typ projektu może być taki, który nie obsługuje narzędzi Developer Analytics Tools. Użyj instalacji ręcznej.

Dlaczego w narzędziu konfiguracji nie ma opcji adaptera dziennika?

  • Najpierw zainstaluj platformę rejestrowania.
  • Jeśli używasz pliku System.Diagnostics.Trace, upewnij się, że skonfigurowano go w pliku web.config.
  • Upewnij się, że masz najnowszą wersję usługi Application Insights. W programie Visual Studio przejdź do pozycji Narzędzia>Rozszerzenia i aktualizacje , a następnie otwórz kartę Aktualizacje. Jeśli istnieją narzędzia Developer Analytics Tools , wybierz je, aby je zaktualizować.

Dlaczego otrzymuję komunikat o błędzie "Klucz instrumentacji nie może być pusty"?

Prawdopodobnie zainstalowano pakiet NuGet karty rejestrowania bez instalowania usługi Application Insights. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję ApplicationInsights.config, a następnie wybierz pozycję Aktualizuj usługę Application Insights. Zostanie wyświetlony monit o zalogowanie się na platformie Azure i utworzenie zasobu usługi Application Insights lub ponowne użycie istniejącego zasobu. Powinien rozwiązać ten problem.

Może upłynąć trochę czasu, gdy wszystkie zdarzenia i żądania przejdą przez potok.

Ile danych jest przechowywanych?

Kilka czynników wpływa na ilość przechowywanych danych. Aby uzyskać więcej informacji, zobacz sekcję Limity na stronie metryk zdarzeń klienta.

Dlaczego nie widzę niektórych wpisów dziennika, których się spodziewałem?

Być może aplikacja wysyła obszerne ilości danych i używasz zestawu SDK usługi Application Insights dla ASP.NET w wersji 2.0.0-beta3 lub nowszej. W takim przypadku funkcja adaptacyjnego próbkowania może działać i wysyłać tylko część danych telemetrycznych. Dowiedz się więcej o próbkowaniu.

Następne kroki