A .NET/.NET Core és a Python nyomkövetési naplóinak felfedezése az Application Insightsban
Küldjön diagnosztikai nyomkövetési naplókat a ASP.NET/ASP.NET Core-alkalmazáshoz az ILoggerből, az NLog-ból, a log4Netből vagy a System.Diagnostics.Trace-ből a Azure-alkalmazás Insightsba. Python-alkalmazások esetén küldjön diagnosztikai nyomkövetési naplókat az AzureLogHandler használatával az Azure Monitorhoz készült OpenCensus Pythonban. Ezután felfedezheti és megkeresheti őket. Ezek a naplók egyesülnek az alkalmazás többi naplófájljával. Ezekkel azonosíthatja az egyes felhasználói kérésekhez társított nyomkövetéseket, és korrelálhatja őket más eseményekkel és kivételjelentésekkel.
Feljegyzés
Szüksége van a naplórögzítési modulra? Ez egy hasznos adapter külső naplózók számára. Ha azonban még nem használja az NLogot, a log4Netet vagy a System.Diagnostics.Trace szolgáltatást, fontolja meg az Application Insights TrackTrace() közvetlen meghívását.
Feljegyzés
2025. március 31-én megszűnik az eszközkulcsalapú betöltés támogatása. A rendszerállapot-kulcsok betöltése továbbra is működni fog, de a továbbiakban nem biztosítunk frissítéseket vagy támogatást a funkcióhoz. Váltás kapcsolati sztring az új képességek kihasználásához.
Naplózás telepítése az alkalmazásra
Telepítse a kiválasztott naplózási keretrendszert a projektben, amelynek az app.config vagy a web.config bejegyzést kell eredményeznie.
<configuration>
<system.diagnostics>
<trace>
<listeners>
<add name="myAppInsightsListener" type="Microsoft.ApplicationInsights.TraceListener.ApplicationInsightsTraceListener, Microsoft.ApplicationInsights.TraceListener" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
Az Application Insights konfigurálása naplók gyűjtésére
Ha még nem tette meg, adja hozzá az Application Insightst a projekthez , és lehetőség van a naplógyűjtő hozzáadására.
Vagy kattintson a jobb gombbal a projektre a Megoldáskezelő az Application Insights konfigurálásához. Válassza a Nyomkövetési gyűjtemény konfigurálása lehetőséget.
Feljegyzés
Nincs Application Insights menü vagy naplógyűjtő lehetőség? Próbálkozzon a hibaelhárítással.
Manuális telepítés
Ezt a módszert akkor használja, ha az Application Insights telepítője nem támogatja a projekttípust. Ha például windowsos asztali projektről van szó.
Ha a log4netet vagy az NLogot szeretné használni, telepítse a projektbe.
A Megoldáskezelő kattintson a jobb gombbal a projektre, és válassza a NuGet-csomagok kezelése lehetőséget.
Keresse meg az Application Insightst.
Válassza ki az alábbi csomagok egyikét:
- ILogger: Microsoft.Extensions.Logging.ApplicationInsights
- NLog: Microsoft.ApplicationInsights.NLogTarget
- log4net: Microsoft.ApplicationInsights.Log4NetAppender
- System.Diagnostics: Microsoft.ApplicationInsights.TraceListener
- Microsoft.ApplicationInsights.DiagnosticSourceListener
- Microsoft.ApplicationInsights.EtwCollector
- Microsoft.ApplicationInsights.EventSourceListener
- ILogger: Microsoft.Extensions.Logging.ApplicationInsights
A NuGet-csomag telepíti a szükséges szerelvényeket, és szükség esetén módosítja a web.config vagy az app.config konfigurációt.
ILogger
Az Application Insights ILogger-implementáció konzolalkalmazásokkal és ASP.NET Core-nal való használatára vonatkozó példákért lásd : ApplicationInsightsLoggerProvider for .NET Core ILogger logs.
Diagnosztikai naplóhívások beszúrása
A System.Diagnostics.Trace használata esetén egy tipikus hívás a következő:
System.Diagnostics.Trace.TraceWarning("Slow response - database01");
Ha a log4netet vagy az NLogot részesíti előnyben, használja a következőt:
logger.Warn("Slow response - database01");
EventSource-események használata
Konfigurálhatja a System.Diagnostics.Tracing.EventSource eseményeket úgy, hogy nyomkövetésként küldhetők el az Application Insightsnak. Először telepítse a Microsoft.ApplicationInsights.EventSourceListener
NuGet-csomagot. Ezután szerkessze az TelemetryModules
ApplicationInsights.config fájl szakaszát.
<Add Type="Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule, Microsoft.ApplicationInsights.EventSourceListener">
<Sources>
<Add Name="MyCompany" Level="Verbose" />
</Sources>
</Add>
Minden forráshoz a következő paramétereket állíthatja be:
- A név a gyűjtendő EventSource nevét adja meg.
- A Szint a gyűjtendő naplózási szintet adja meg: Kritikus, Hiba, Információ, LogAlways, Részletes vagy Figyelmeztetés.
- A kulcsszavak (nem kötelező) a használni kívánt kulcsszókombinációk egész számát adják meg.
DiagnosticSource-események használata
Konfigurálhatja a System.Diagnostics.DiagnosticSource-eseményeket úgy, hogy nyomkövetésként küldhetők el az Application Insightsnak. Először telepítse a Microsoft.ApplicationInsights.DiagnosticSourceListener
NuGet-csomagot. Ezután szerkessze az ApplicationInsights.config fájl "TelemetryModules" szakaszát.
<Add Type="Microsoft.ApplicationInsights.DiagnosticSourceListener.DiagnosticSourceTelemetryModule, Microsoft.ApplicationInsights.DiagnosticSourceListener">
<Sources>
<Add Name="MyDiagnosticSourceName" />
</Sources>
</Add>
Minden nyomon követni kívánt diagnosztikai forráshoz adjon hozzá egy bejegyzést, amelynek Name
attribútuma a diagnosztikai forrás nevéhez van állítva.
ETW-események használata
Konfigurálhatja az Event Tracing for Windows (ETW) eseményeit úgy, hogy nyomkövetésként küldhetők el az Application Insightsnak. Először telepítse a Microsoft.ApplicationInsights.EtwCollector
NuGet-csomagot. Ezután szerkessze az ApplicationInsights.config fájl "TelemetryModules" szakaszát.
Feljegyzés
Az ETW-események csak akkor gyűjthetők össze, ha az SDK-t üzemeltető folyamat olyan identitás alatt fut, amely tagja a teljesítménynapló felhasználóinak vagy rendszergazdáinak.
<Add Type="Microsoft.ApplicationInsights.EtwCollector.EtwCollectorTelemetryModule, Microsoft.ApplicationInsights.EtwCollector">
<Sources>
<Add ProviderName="MyCompanyEventSourceName" Level="Verbose" />
</Sources>
</Add>
Minden forráshoz a következő paramétereket állíthatja be:
- A ProviderName a gyűjtendő ETW-szolgáltató neve.
- A ProviderGuid a gyűjtendő ETW-szolgáltató GUID azonosítóját adja meg. Ez használható ahelyett
ProviderName
, hogy . - A szint beállítja a gyűjtendő naplózási szintet. Lehet kritikus, hiba, információs, LogAlways, Részletes vagy Figyelmeztetés.
- A kulcsszavak (nem kötelező) a használni kívánt kulcsszókombinációk egész számértékét állítják be.
A Trace API közvetlen használata
Közvetlenül meghívhatja az Application Insights nyomkövetési API-t. A naplózási adapterek ezt az API-t használják.
Példa:
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.TrackTrace("Slow response - database01");
Ennek az az előnye TrackTrace
, hogy viszonylag hosszú adatokat helyezhet el az üzenetben. Itt például a POST-adatokat kódolhatja.
Súlyossági szintet is hozzáadhat az üzenethez. A többi telemetriához hasonlóan tulajdonságértékeket is hozzáadhat a különböző nyomkövetési csoportok szűréséhez vagy kereséséhez. Példa:
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.TrackTrace("Slow database response",
SeverityLevel.Warning,
new Dictionary<string, string> { { "database", "db.ID" } });
Mostantól egyszerűen kiszűrheti a Transaction Searchben az adott súlyossági szint összes üzenetét, amely egy adott adatbázishoz kapcsolódik.
AzureLogHandler for OpenCensus Python
Az Azure Monitor naplókezelője lehetővé teszi Python-naplók exportálását az Azure Monitorba.
Az alkalmazást az Azure Monitorhoz készült OpenCensus Python SDK-val alakíthatja ki.
Ez a példa bemutatja, hogyan küldhet figyelmeztetési szintű naplót az Azure Monitornak.
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!')
A naplók felfedezése
Futtassa az alkalmazást hibakeresési módban, vagy telepítse élőben.
Az alkalmazás áttekintési paneljén az Application Insights portálon válassza a Tranzakciókeresés lehetőséget.
Például:
- Szűrjön naplónyomokra vagy adott tulajdonságokkal rendelkező elemekre.
- Egy adott elem részletes vizsgálata.
- Keressen más rendszernapló-adatokat, amelyek ugyanahhoz a felhasználói kéréshez kapcsolódnak (ugyanazzal a műveletazonosítóval rendelkezik).
- Mentse a lap konfigurációját kedvencként.
Feljegyzés
Ha az alkalmazás sok adatot küld, és az Application Insights SDK-t használja ASP.NET 2.0.0-béta3-es vagy újabb verziójához, az adaptív mintavételezési funkció a telemetria csak egy részét használhatja és küldheti el. További információ a mintavételezésről.
Hibaelhárítás
Válaszok a gyakori kérdésekre.
Mi okozza a késleltetett telemetriát, a túlterhelt hálózatot és a nem hatékony átvitelt?
A System.Diagnostics.Tracing autoflush funkcióval rendelkezik. Ez a funkció azt eredményezi, hogy az SDK minden telemetriai elemnél kipirul, ami nem kívánatos, és olyan naplózási adapterekkel kapcsolatos problémákat okozhat, mint a késleltetett telemetriai adatok, a túlterhelt hálózat és a nem hatékony átvitel.
Hogyan java nyelven?
Java kód nélküli rendszerezésben, amely ajánlott, a naplókat a rendszer a dobozból gyűjti össze. Java 3.0-ügynök használata.
Az Application Insights Java-ügynök naplókat gyűjt a Log4j, a Logback és a java.util.logging mezőből.
Miért nincs Application Insights-lehetőség a projekt helyi menüjében?
- Győződjön meg arról, hogy a Developer Analytics Tools telepítve van a fejlesztői gépen. A Visual Studióban nyissa meg az Eszközök>bővítményeket és frissítéseket, és keresse meg a Developer Analytics-eszközöket. Ha nem a Telepített lapon található, nyissa meg az Online lapot, és telepítse.
- Ez a projekttípus lehet olyan, amelyet a Developer Analytics Tools nem támogat. Manuális telepítés használata.
Miért nincs naplóadapter-beállítás a konfigurációs eszközben?
- Először telepítse a naplózási keretrendszert.
- Ha System.Diagnostics.Trace-t használ, győződjön meg arról, hogy a web.config-ban konfigurálta.
- Győződjön meg arról, hogy az Application Insights legújabb verziójával rendelkezik. A Visual Studióban nyissa meg az Eszközök>bővítmények és frissítések lapot, és nyissa meg a Frissítések lapot. Ha a Developer Analytics Tools elérhető, válassza ki a frissítéséhez.
Miért jelenik meg a "Instrumentation key nem lehet üres" hibaüzenet?
Valószínűleg az Application Insights telepítése nélkül telepítette a NuGet-naplózási adaptert. A Megoldáskezelő kattintson a jobb gombbal az ApplicationInsights.config elemre, és válassza az Application Insights frissítése lehetőséget. A rendszer kérni fogja, hogy jelentkezzen be az Azure-ba, és hozzon létre egy Application Insights-erőforrást, vagy használjon újra egy meglévőt. Meg kell oldania a problémát.
Miért látom a nyomkövetéseket, de más eseményeket nem a diagnosztikai keresésben?
Eltarthat egy ideig, amíg az összes esemény és kérés áthalad a folyamaton.
Mennyi adat van megőrzve?
A megtartott adatok mennyiségét számos tényező befolyásolja. További információt az ügyfélesemény-metrikák oldal Korlátok szakaszában talál.
Miért nem látom a várt naplóbejegyzéseket?
Előfordulhat, hogy az alkalmazás nagy mennyiségű adatot küld, és az Application Insights SDK-t használja ASP.NET 2.0.0-béta3-es vagy újabb verziójához. Ebben az esetben előfordulhat, hogy az adaptív mintavételezési funkció csak a telemetria egy részét használja és küldi el. További információ a mintavételezésről.