Megosztás a következőn keresztül:


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.CosmosClientTelemetryOptionstilthatja 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.11verzió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.

Képernyőkép egy Azure Cosmos DB keresztpartíciós lekérdezés elosztott nyomkövetéséről az Application Insights tranzakciókeresésében.

Következő lépések