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

Odešlete diagnostické trasovací protokoly pro vaši aplikaci ASP.NET/ASP.NET Core z ILoggeru, NLogu, log4Netu nebo System.Diagnostics.Trace do Aplikace Azure Insights. V případě aplikací v Pythonu odešlete diagnostické trasovací protokoly pomocí AzureLogHandler v OpenCensus Pythonu pro Azure Monitor. Pak je můžete prozkoumat a vyhledat. Tyto protokoly se sloučí s ostatními soubory protokolů z vaší aplikace. Můžete je použít k identifikaci trasování přidružených k jednotlivým žádostem uživatele a jejich korelaci 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í Application Insights TrackTrace().

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 této funkce. Přechod na připojovací řetězce , abyste mohli využívat nové funkce.

Instalace protokolování do aplikace

Nainstalujte vybranou architekturu protokolování do projektu, což by mělo vést k zadání 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. Zobrazí se možnost zahrnutí kolektoru 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 váš typ projektu není podporován instalačním programem Application Insights. Pokud je to například desktopový projekt Windows.

  1. Pokud plánujete používat protokol4net 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 upraví web.config nebo app.config, pokud je to možné.

ILogger

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

Vložení volání diagnostických protokolů

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.Trace.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 oddíl 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á shromažďovat.
  • Úroveň určuje úroveň protokolování, která se má shromažďovat: Kritické, Chyba, Informace, LogAlways, 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í etW

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 etW lze 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 etW, který se má shromažďovat.
  • ProviderGuid určuje identifikátor GUID zprostředkovatele etW, který se má shromažďovat. Lze jej použít místo ProviderName.
  • Úroveň nastaví úroveň protokolování, která se má shromažďovat. Může to být kritické, chyba, informace, logalwaye, podrobné nebo upozornění.
  • Klíčová slova (volitelné) nastavují celočíselnou hodnotu kombinací klíčových slov, která se mají použít.

Použití rozhraní API trasování přímo

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 umístit relativně dlouhá data. Můžete tam například zakódovat data POST.

Do zprávy můžete také přidat úroveň závažnosti. 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" } });

Teď můžete snadno vyfiltrovat 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 aplikace na portálu Application Insights vyberte Hledat.

Můžete například:

  • Filtrování trasování protokolů 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é.

Poznámka

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

Řešení potíží

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í každou položku 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í mimo pole. Použijte agenta Java 3.0.

Agent Application Insights Java 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 je na vývojovém počítači nainstalovaný Developer Analytics Tools. V sadě Visual Studio přejděte na Rozšíření nástrojů>a Aktualizace a vyhledejte 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 konfiguračním nástroji neexistuje žádná možnost adaptéru protokolu?

  • Nejprve nainstalujte rozhraní protokolování.
  • Pokud používáte System.Diagnostics.Trace, ujistěte se, že jste ho nakonfigurovali v web.config.
  • Ujistěte se, že máte nejnovější verzi Application Insights. V sadě Visual Studio přejděte na Rozšíření nástrojů>a Aktualizace a otevřete kartu Aktualizace. Pokud tam 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.configa vyberte Aktualizovat Application Insights. Zobrazí se výzva k přihlášení k Azure a vytvoření prostředku Application Insights nebo opětovnému použití existujícího prostředku. To by mělo 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á?

Několik faktorů ovlivňuje množství uložených dat. Další informace najdete v části Limity na stránce metrik událostí zákazníka.

Proč nevidím nějaké 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 telemetrie. Přečtěte si další informace o vzorkování.

Další kroky