Az Azure Cosmos DB SDK megfigyelhetősége
A KÖVETKEZŐRE VONATKOZIK: NoSQL
Az Azure Cosmos DB .NET és Java SDK-k támogatják az elosztott nyomkövetést az alkalmazások figyeléséhez. A kérések folyamatának nyomon követése hasznos a hibakeresésben, a késés és a teljesítmény elemzésében, valamint a diagnosztikák gyűjtésében. Eszközkövetés az alkalmazásokhoz az OpenTelemetria használatával, amely szállítósemleges, és szemantikai konvenciók készletével biztosítja a szabványosított adatformátumot a választott exportőrtől függetlenül, vagy az Application Insights SDK vagy az Azure Monitor OpenTelemetry Distro használatával.
Első lépések
Az elosztott nyomkövetés a következő SDK-kban érhető el:
SDK | Támogatott verzió | Jegyzetek |
---|---|---|
.NET v3 SDK | >= 3.36.0 |
Ez a funkció előzetes verzióban és nem előzetes verzióban is elérhető. Nem előzetes verzió esetén alapértelmezés szerint ki van kapcsolva. A nyomkövetést a következő beállítással DisableDistributedTracing = false engedélyezheti: CosmosClientOptions.CosmosClientTelemetryOptions . |
.NET v3 SDK előzetes verzió | >= 3.33.0-preview |
Ez a funkció előzetes verzióban és nem előzetes verzióban is elérhető. Az előzetes verziók esetében alapértelmezés szerint be van kapcsolva. A nyomkövetést a következő beállítással DisableDistributedTracing = true CosmosClientOptions.CosmosClientTelemetryOptions tilthatja le: . |
Java v4 SDK | >= 4.43.0 |
Nyomkövetési attribútumok
Az Azure Cosmos DB-nyomkövetések az OpenTelemetry-adatbázis specifikációját követik, és számos egyéni attribútumot is biztosítanak. A kérés működésétől függően különböző attribútumokat láthat, és ezek az attribútumok az összes kérés alapvető attribútumai.
Attribútum | Típus | Leírás |
---|---|---|
net.peer.name |
húr | Azure Cosmos DB-gazdagép neve. |
db.name |
húr | Azure Cosmos DB-adatbázis neve. |
db.system |
húr | Az adatbázis-szolgáltatás azonosítója. Minden cosmosdb kéréshez tartozik. |
db.operation |
húr | Művelet neve, pl. CreateItemAsync . |
db.cosmosdb.container |
húr | Azure Cosmos DB-tároló neve. |
db.cosmosdb.client_id |
húr | Egyedi ügyfélpéldányt képviselő azonosító. |
db.cosmosdb.operation_type |
húr | Művelet típusa, pl. Create . |
db.cosmosdb.connection_mode |
húr | Ügyfélkapcsolati mód. Vagy direct vagy gateway . |
db.cosmosdb.status_code |
egész | A kérés állapotkódja. |
db.cosmosdb.sub_status_code |
egész | A kérés alállapotkódja. |
db.cosmosdb.request_charge |
double | A művelethez felhasznált kérelemegységek. |
db.cosmosdb.regions_contacted |
húr | Az Azure Cosmos DB-fiókban kapcsolatba lépett régiók listája. |
user_agent.original |
húr | Az Azure Cosmos DB SDK által létrehozott teljes felhasználói ügynök sztring. |
Diagnosztikák gyűjtése
Ha naplókat konfigurált a nyomkövetési szolgáltatóban, automatikusan lekérheti a sikertelen vagy nagy késésű Azure Cosmos DB-kérelmek diagnosztikáit . Ezek a naplók segítenek diagnosztizálni a sikertelen és lassú kérelmeket anélkül, hogy egyéni kódokat kellene rögzíteniük.
A sikertelen kérelmek diagnosztikai naplóinak lekérése mellett különböző késési küszöbértékeket is konfigurálhat arra vonatkozóan, hogy mikor kell diagnosztikát gyűjteni a sikeres kérelmekből. Az alapértelmezett értékek a pontműveletek esetében 100 ms, a nem pontműveletek esetében pedig 500 ms. Ezek a küszöbértékek az ügyfél beállításaival módosíthatók.
CosmosClientOptions options = new CosmosClientOptions()
{
CosmosClientTelemetryOptions = new CosmosClientTelemetryOptions()
{
DisableDistributedTracing = false,
CosmosThresholdOptions = new CosmosThresholdOptions()
{
PointOperationLatencyThreshold = TimeSpan.FromMilliseconds(100),
NonPointOperationLatencyThreshold = TimeSpan.FromMilliseconds(500)
}
},
};
A naplószint konfigurálható annak szabályozására, hogy mely diagnosztikai naplókat kapja.
Naplószint | Leírás |
---|---|
Hiba | Csak a hibák naplói. |
Figyelmeztetés | A hibák és a nagy késésű kérelmek naplói a konfigurált küszöbértékek alapján. |
Tájékoztatás | Nincsenek konkrét információszintű naplók. Az ilyen szintű naplók megegyeznek a Figyelmeztetés funkcióval. |
Az alkalmazáskörnyezettől függően különböző módokon konfigurálható a naplószint. Íme egy mintakonfiguráció a következőben appSettings.json
:
{
"Logging": {
"LogLevel": {
"Azure-Cosmos-Operation-Request-Diagnostics": "Information"
}
}
}
OpenTelemetria konfigurálása
Az OpenTelemetria Azure Cosmos DB SDK-kkal való használatához adja hozzá a forrást a Azure.Cosmos.Operation
nyomkövetési szolgáltatóhoz. Az OpenTelemetria számos olyan exportőrrel kompatibilis, amelyek betölthetik az adatokat. Az alábbi minta a Azure Monitor OpenTelemetry Exporter
, de ön dönthet úgy, hogy konfigurálja a kívánt exportőrt. A választott exportőrtől függően előfordulhat, hogy az adatok betöltése akár néhány percig is eltarthat.
Tipp.
Ha a Azure.Monitor.OpenTelemetry.Exporter
csomagot használja, győződjön meg arról, hogy a verzió >= 1.0.0-beta.11
verziót használja.
Ha ASP.NET Core-t és Azure Monitort használ, javasoljuk, hogy inkább az Azure Monitor OpenTelemetry Disztribúciót használja.
Ez a minta bemutatja, hogyan konfigurálhatja az OpenTelemetryt egy .NET-konzolalkalmazáshoz. Tekintse meg a teljes mintát a GitHubon.
ResourceBuilder resource = ResourceBuilder.CreateDefault().AddService(
serviceName: serviceName,
serviceVersion: "1.0.0");
// Set up logging to forward logs to chosen exporter
using ILoggerFactory loggerFactory
= LoggerFactory.Create(builder => builder
.AddConfiguration(configuration.GetSection("Logging"))
.AddOpenTelemetry(options =>
{
options.IncludeFormattedMessage = true;
options.SetResourceBuilder(resource);
options.AddAzureMonitorLogExporter(o => o.ConnectionString = aiConnectionString); // Set up exporter of your choice
}));
/*.AddFilter(level => level == LogLevel.Error) // Filter is irrespective of event type or event name*/
AzureEventSourceLogForwarder logforwader = new AzureEventSourceLogForwarder(loggerFactory);
logforwader.Start();
// Configure OpenTelemetry trace provider
AppContext.SetSwitch("Azure.Experimental.EnableActivitySource", true);
_traceProvider = Sdk.CreateTracerProviderBuilder()
.AddSource("Azure.Cosmos.Operation", // Cosmos DB source for operation level telemetry
"Sample.Application")
.AddAzureMonitorTraceExporter(o => o.ConnectionString = aiConnectionString) // Set up exporter of your choice
.AddHttpClientInstrumentation() // Added to capture HTTP telemetry
.SetResourceBuilder(resource)
.Build();
Az Application Insights SDK konfigurálása
Az Application Insights számos különböző módon konfigurálható attól függően, hogy az alkalmazás milyen nyelven van megírva, valamint a számítási környezettől függően. További információkért tekintse meg az Application Insights dokumentációját. Az adatok Application Insightsba való betöltése akár néhány percet is igénybe vehet.
Feljegyzés
Használja az Application Insights-csomag verzióját >2.22.0-beta2
a cél .NET-környezethez.
Az alábbi minta bemutatja, hogyan konfigurálhatja az Application Insightst egy .NET-konzolalkalmazáshoz. Tekintse meg a teljes mintát a GitHubon.
IServiceCollection services = new ServiceCollection();
services.AddApplicationInsightsTelemetryWorkerService((ApplicationInsightsServiceOptions options) => options.ConnectionString = aiConnectionString);
IServiceProvider serviceProvider = services.BuildServiceProvider();
telemetryClient = serviceProvider.GetRequiredService<TelemetryClient>();
Miután a nyomkövetési adatokat betölti az Application Insightsba, vizualizálhatja őket az Azure Portalon, hogy megértse az alkalmazás kérési folyamatát. Íme egy példa egy partícióközi lekérdezésből származó nyomkövetési adatokra az Azure Portal bal oldali navigációs sávjának tranzakciókeresésében.