Sdílet prostřednictvím


Prozkoumání protokolů trasování .NET/.NET Core a Pythonu v Application Insights

Odesílat diagnostické protokoly trasování pro vaši aplikaci ASP.NET/ASP.NET Core z ILoggeru, NLogu, log4Net nebo System.Diagnostics.Trace do Aplikace Azure lication Insights. V případě aplikací v Pythonu odesílejte protokoly diagnostického trasování pomocí AzureLogHandler v OpenCensus Pythonu pro Azure Monitor. Pak je můžete prozkoumat a vyhledat. Tyto protokoly se sloučí s ostatními soubory protokolu z vaší aplikace. Můžete je použít k identifikaci trasování, která jsou přidružená k jednotlivým žádostem uživatele, a korelovat je s jinými událostmi a sestavami výjimek.

Poznámka:

Potřebujete modul log-capture? Je to užitečný adaptér pro protokolovací nástroje třetích stran. Pokud ale ještě nepoužíváte NLog, log4Net nebo System.Diagnostics.Trace, zvažte přímé volání TrackTrace() Application Insights.

Poznámka:

Podpora příjmu dat založeného na instrumentačním klíči skončí 31. března 2025. Příjem klíčů instrumentace bude dál fungovat, ale už nebudeme poskytovat aktualizace ani podporu pro tuto funkci. Přechod na připojovací řetězec, abyste mohli využívat nové funkce.

Instalace protokolování do aplikace

Nainstalujte zvolenou architekturu protokolování do projektu, což by mělo mít za následek položku v souboru app.config nebo web.config.

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

Konfigurace Application Insights pro shromažďování protokolů

Pokud jste to ještě neudělali, přidejte do projektu Application Insights a existuje možnost zahrnout kolektor protokolů.

Nebo klikněte pravým tlačítkem na projekt v Průzkumník řešení a nakonfigurujte Application Insights. Vyberte možnost Konfigurovat kolekci trasování.

Poznámka:

Žádná nabídka Application Insights nebo možnost kolektoru protokolů? Zkuste řešit potíže.

Ruční instalace

Tuto metodu použijte, pokud instalační program Application Insights nepodporuje váš typ projektu. Pokud se jedná například o desktopový projekt Windows.

  1. Pokud plánujete použít log4net nebo NLog, nainstalujte ho do projektu.

  2. V Průzkumník řešení klikněte pravým tlačítkem na projekt a vyberte Spravovat balíčky NuGet.

  3. Vyhledejte Application Insights.

  4. Vyberte jeden z následujících balíčků:

Balíček NuGet nainstaluje potřebná sestavení a v případě potřeby upraví web.config nebo app.config.

ILogger

Příklady použití implementace ILogger Application Insights s konzolovými aplikacemi a ASP.NET Core najdete v tématu ApplicationInsightsLoggerProvider pro protokoly ILogger pro .NET Core.

Vložení volání diagnostického protokolu

Pokud používáte System.Diagnostics.Trace, typickým voláním by bylo:

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

Pokud dáváte přednost protokolu log4net nebo NLog, použijte:

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

Použití událostí EventSource

Události System.Diagnostics.Tracing.EventSource můžete nakonfigurovat tak, aby se odesílaly do Application Insights jako trasování. Nejprve nainstalujte Microsoft.ApplicationInsights.EventSourceListener balíček NuGet. Pak upravte TelemetryModules část souboru ApplicationInsights.config .

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

Pro každý zdroj můžete nastavit následující parametry:

  • Název určuje název EventSource, který se má shromáždit.
  • Úroveň určuje úroveň protokolování, která se má shromažďovat: kritické, chybové, informační, logalwaye, podrobné nebo upozornění.
  • Klíčová slova (volitelné) určují celočíselnou hodnotu kombinací klíčových slov, která se mají použít.

Použití událostí DiagnosticSource

Události System.Diagnostics.DiagnosticSource můžete nakonfigurovat tak, aby se odesílaly do Application Insights jako trasování. Nejprve nainstalujte Microsoft.ApplicationInsights.DiagnosticSourceListener balíček NuGet. Pak upravte část TelemetryModules souboru ApplicationInsights.config .

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

Pro každý zdroj diagnostiky, který chcete sledovat, přidejte položku s atributem Name nastaveným na název vašeho diagnostického zdroje.

Použití událostí Trasování událostí pro Windows

Trasování událostí pro Windows (ETW) můžete nakonfigurovat tak, aby se odesílaly do Application Insights jako trasování. Nejprve nainstalujte Microsoft.ApplicationInsights.EtwCollector balíček NuGet. Pak upravte část TelemetryModules souboru ApplicationInsights.config .

Poznámka:

Události Trasování událostí pro Windows je možné shromažďovat pouze v případě, že proces, který je hostitelem sady SDK, běží pod identitou, která je členem uživatelů protokolu výkonu nebo správců.

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

Pro každý zdroj můžete nastavit následující parametry:

  • ProviderName je název zprostředkovatele pro Windows, který se má shromáždit.
  • ProviderGuid určuje identifikátor GUID zprostředkovatele Trasování událostí pro Windows, který se má shromáždit. Lze jej použít místo ProviderName.
  • Úroveň nastaví úroveň protokolování, která se má shromažďovat. Může to být kritické, chybové, informační, logalwaye, podrobné nebo upozornění.
  • Klíčová slova (volitelné) nastavují celočíselnou hodnotu kombinací klíčových slov, která se mají použít.

Přímé použití rozhraní API trasování

Rozhraní API trasování Application Insights můžete volat přímo. Adaptéry protokolování používají toto rozhraní API.

Příklad:

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

Výhodou TrackTrace je, že do zprávy můžete vložit relativně dlouhá data. Můžete tam například zakódovat data POST.

Ke zprávě můžete také přidat úroveň závažnosti. A stejně jako jiné telemetrie můžete přidat hodnoty vlastností, které pomáhají filtrovat nebo vyhledávat různé sady trasování. Příklad:

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

Nyní můžete snadno vyfiltrovat ve službě Transaction Search všechny zprávy konkrétní úrovně závažnosti, které souvisejí s konkrétní databází.

AzureLogHandler pro OpenCensus Python

Obslužná rutina protokolu služby Azure Monitor umožňuje exportovat protokoly Pythonu do služby Azure Monitor.

Instrumentace aplikace pomocí sady OpenCensus Python SDK pro Azure Monitor

Tento příklad ukazuje, jak odeslat protokol na úrovni upozornění do služby 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!')

Prozkoumání protokolů

Spusťte aplikaci v režimu ladění nebo ji nasaďte živě.

V podokně přehledu vaší aplikace na portálu Application Insights vyberte Vyhledávání transakcí.

Můžete například:

  • Filtrování trasování protokolu nebo položek s konkrétními vlastnostmi
  • Podrobně zkontrolujte konkrétní položku.
  • Vyhledejte další data systémového protokolu, která se vztahují ke stejnému požadavku uživatele (má stejné ID operace).
  • Uložte konfiguraci stránky jako oblíbené položky.

Poznámka:

Pokud vaše aplikace odesílá velké množství dat a používáte sadu Application Insights SDK pro ASP.NET verze 2.0.0-beta3 nebo novější, může funkce adaptivního vzorkování fungovat a odesílat jenom část telemetrie. Přečtěte si další informace o vzorkování.

Řešení problému

Najděte odpovědi na běžné dotazy.

Co způsobuje zpožděnou telemetrii, přetíženou síť a neefektivní přenos?

System.Diagnostics.Tracing má funkci Autoflush. Tato funkce způsobí, že sada SDK vyprázdní všechny položky telemetrie, což je nežádoucí a může způsobit problémy s adaptérem protokolování, jako jsou zpožděná telemetrie, přetížená síť a neefektivní přenos.

Návody to udělat pro Javu?

V instrumentaci bez kódu v Javě, která se doporučuje, se protokoly shromažďují předem. Použijte agenta Java 3.0.

Agent Java Application Insights shromažďuje protokoly z Log4j, Logback a java.util.logging out of the box.

Proč v místní nabídce projektu neexistuje žádná možnost Application Insights?

  • Ujistěte se, že jsou na vývojovém počítači nainstalované nástroje Developer Analytics Tools. V sadě Visual Studio přejděte na Rozšíření a aktualizace nástrojů>a vyhledejte nástroje Developer Analytics Tools. Pokud není na kartě Nainstalované , otevřete kartu Online a nainstalujte ji.
  • Tento typ projektu může být takový, který developer Analytics Tools nepodporuje. Použijte ruční instalaci.

Proč v nástroji pro konfiguraci není k dispozici žádná možnost adaptéru protokolu?

  • Nejprve nainstalujte protokolovací architekturu.
  • Pokud používáte System.Diagnostics.Trace, ujistěte se, že jste ho nakonfigurovali ve web.config.
  • Ujistěte se, že máte nejnovější verzi Application Insights. V sadě Visual Studio přejděte na Rozšíření a aktualizace nástrojů>a otevřete kartu Aktualizace. Pokud tam jsou nástroje Developer Analytics Tools, vyberte ho a aktualizujte ho.

Proč se zobrazí chybová zpráva Instrumentační klíč nemůže být prázdný?

Pravděpodobně jste nainstalovali balíček NuGet adaptéru protokolování bez instalace Application Insights. V Průzkumník řešení klikněte pravým tlačítkem na ApplicationInsights.config a vyberte Aktualizovat Application Insights. Zobrazí se výzva, abyste se přihlásili k Azure a vytvořili prostředek Application Insights nebo znovu použili existující prostředek. Měl by problém vyřešit.

Než se všechny události a požadavky dostanou přes kanál, může to chvíli trvat.

Kolik dat se uchovává?

Množství uchovávaných dat ovlivňuje několik faktorů. Další informace najdete v části Omezení na stránce metrik událostí zákazníka.

Proč nevidím některé položky protokolu, které jsem očekával?

Vaše aplikace možná odesílá objemné objemy dat a používáte sadu Application Insights SDK pro ASP.NET verze 2.0.0-beta3 nebo novější. V takovém případě může funkce adaptivního vzorkování fungovat a odesílat jenom část vaší telemetrie. Přečtěte si další informace o vzorkování.

Další kroky