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


Azure Monitor OpenTelemetry konfigurálása

Ez az útmutató az OpenTelemetria (OTel) Azure Monitor Application Insights Azure Monitor OpenTelemetria-disztribúcióval történő konfigurálását ismerteti. A megfelelő konfiguráció konzisztens telemetriai adatgyűjtést biztosít .NET, Java, Node.jsés Python alkalmazásokban, így megbízhatóbb monitorozást és diagnosztikát tesz lehetővé.

Feljegyzés

A Azure függvényalkalmazásokról lásd: Az OpenTelemetria használata Azure Functions.

Kapcsolati karakterlánc

Az Application Insightsban egy kapcsolati karakterlánc határozza meg a telemetriai adatok küldésének célhelyét.

Az alábbi három módszer egyikével konfigurálhatja a kapcsolati karakterlánc:

  • Adja hozzá a UseAzureMonitor() elemet a program.cs fájljához.

        var builder = WebApplication.CreateBuilder(args);
    
        // Add the OpenTelemetry telemetry service to the application.
        // This service will collect and send telemetry data to Azure Monitor.
        builder.Services.AddOpenTelemetry().UseAzureMonitor(options => {
            options.ConnectionString = "<YOUR-CONNECTION-STRING>";
        });
    
        var app = builder.Build();
    
        app.Run();
    
  • Környezeti változó beállítása.

    APPLICATIONINSIGHTS_CONNECTION_STRING=<YOUR-CONNECTION-STRING>
    
  • Adja hozzá a következő szakaszt a appsettings.json konfigurációs fájlhoz.

      {
        "AzureMonitor": {
            "ConnectionString": "<YOUR-CONNECTION-STRING>"
        }
      }
    

Feljegyzés

Ha a kapcsolati karakterláncot egynél több helyen állítja be, a következő sorrend vonatkozik ezekre:

  1. Kód
  2. Környezeti változó
  3. Konfigurációs fájl

A felhőbeli szerepkör nevének és a felhőbeli szerepkörpéldánynak a beállítása

A támogatott nyelvek esetében a Azure Monitor OpenTelemetry Distro automatikusan észleli az erőforrás-környezetet, és alapértelmezett értékeket biztosít a Cloud szerepkörnév és az összetevő felhőbeli szerepkörpéldány-tulajdonságaihoz. Előfordulhat azonban, hogy felül szeretné bírálni az alapértelmezett értékeket a csapat számára értelmes értékekkel. A felhőbeli szerepkörnév értéke az alkalmazástérképen a csomópont alatti névként jelenik meg.

Állítsa be a Cloud szerepkör nevét és a Cloud szerepkör példányát az erőforrás attribútumokon keresztül. A felhőszerepkör neve service.namespace és service.name attribútumokat használ, de service.name-t alkalmaz, ha service.namespace nincs beállítva. A felhőbeli szerepkör-példány az attribútumértéket service.instance.id használja. Az erőforrások szabványos attribútumairól az OpenTelemetry Szemantikai Konvenciók című témakörben olvashat bővebben.

// Setting role name and role instance

// Create a dictionary of resource attributes.
var resourceAttributes = new Dictionary<string, object> {
    { "service.name", "my-service" },
    { "service.namespace", "my-namespace" },
    { "service.instance.id", "my-instance" }};

// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);

// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry()
    .UseAzureMonitor()
    // Configure the ResourceBuilder to add the custom resource attributes to all signals.
    // Custom resource attributes should be added AFTER AzureMonitor to override the default ResourceDetectors.
    .ConfigureResource(resourceBuilder => resourceBuilder.AddAttributes(resourceAttributes));

// Build the ASP.NET Core web application.
var app = builder.Build();

// Start the ASP.NET Core web application.
app.Run();

Erőforrásattribútumok beállítása

Az automatikus instrumentáció és az Azure Monitor disztribúciók lehetővé teszik az erőforrás-észlelést azokban az Azure környezetekben, ahol támogatott. További információ: Automatikus adatgyűjtés és erőforrás-detektorok az Azure Monitor OpenTelemetry.

Manuális beállítások esetén állítsa be közvetlenül az erőforrásattribútumokat a standard OpenTelemetry-beállítások használatával:

# Applies to .NET (ASP.NET/ASP.NET Core), Java, Node.js, and Python
export OTEL_SERVICE_NAME="my-service"
export OTEL_RESOURCE_ATTRIBUTES="cloud.provider=azure,cloud.region=westus,cloud.resource_id=/subscriptions/<SUB>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<APP>"

Windows PowerShellen:

$Env:OTEL_SERVICE_NAME="my-service"
$Env:OTEL_RESOURCE_ATTRIBUTES="cloud.provider=azure,cloud.region=westus,cloud.resource_id=/subscriptions/<SUB>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<APP>"

Mintavételezés engedélyezése

A mintavételezés csökkenti a telemetriai betöltési mennyiséget és a költségeket. Azure Monitor OpenTelemetria disztribúciója két nyomkövetési mintavételi stratégiát támogat, és (opcionálisan) lehetővé teszi az alkalmazásnaplóknak a nyomkövetési mintavételezési döntésekhez való igazítását. A mintavevő az exportált tartományokhoz csatolja a kiválasztott mintavételezési arányt vagy arányt, hogy az Application Insights pontosan tudja módosítani a felhasználói élmények számát. Fogalmi áttekintésért tekintse meg a mintavételezéssel kapcsolatos további tudnivalókat.

Fontos

  • A mintavételezési döntések a nyomokra (hatókörökre) vonatkoznak.
  • A nem felügyelt nyomkövetésekhez tartozó naplók alapértelmezés szerint el lesznek dobva, de a naplók nyomkövetésalapú mintavételezését letilthatja.
  • A metrikák soha nem lesznek mintavételezettek.

Feljegyzés

Ha váratlan díjakat vagy magas költségeket lát az Application Insightsban, a gyakori okok közé tartozik a magas telemetriai mennyiség, az adatbetöltési csúcsok és a helytelenül konfigurált mintavételezés. A hibaelhárítás megkezdéséhez tekintse meg az Application Insights magas adatbetöltésének hibaelhárítását.

Mintavételezés konfigurálása környezeti változók használatával

A mintavevő kiválasztásához és argumentumának megadásához használjon standard OpenTelemetry környezeti változókat. Az OpenTelemetry-mintavevők típusairól további információt a OTEL_TRACES_SAMPLER talál.

  • OTEL_TRACES_SAMPLER â € " mintavevő típusa

    • microsoft.fixed_percentage — mintát veszünk a nyomok egy töredékéből.
    • microsoft.rate_limited – cap nyomok másodpercenként.
  • OTEL_TRACES_SAMPLER_ARG – szemlélő argumentum

    • Érték microsoft.fixed_percentage: tartomány 0.0–1.0 (például 0.1 = ~10%).
    • For microsoft.rate_limited: maximális nyomkövetés másodpercenként (például 1.5).

Az alábbi példák bemutatják, hogyan konfigurálhatja a mintavételezést környezeti változók használatával.

Feljegyzés

Az alábbi példák nem érvényesek Java. A megfelelő környezeti változókért tekintse meg az előző Java lapot.

Rögzített százalékos mintavételezés (~10%)

export OTEL_TRACES_SAMPLER="microsoft.fixed_percentage"
export OTEL_TRACES_SAMPLER_ARG=0.1

Sebességkorlátos mintavételezés (~1,5 nyomkövetés/mp)

export OTEL_TRACES_SAMPLER="microsoft.rate_limited"
export OTEL_TRACES_SAMPLER_ARG=1.5

Mintavételezés konfigurálása kódban

Feljegyzés

Ha a kódszintű beállítások és a környezeti változók is konfigurálva vannak, a környezeti változók elsőbbséget élveznek. Az alapértelmezett mintavevő viselkedése nyelv szerint eltérhet.

Rögzített százalékos mintavételezés

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenTelemetry().UseAzureMonitor(o =>
{
    o.SamplingRatio = 0.1F; // ~10%
});
var app = builder.Build();
app.Run();

Sebességkorlátos mintavételezés

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenTelemetry().UseAzureMonitor(o =>
{
    o.TracesPerSecond = 1.5; // ~1.5 traces/sec
});
var app = builder.Build();
app.Run();

Feljegyzés

Ha nem állít be mintavevőt kódban vagy környezeti változókon keresztül, Azure Monitor alapértelmezés szerint ApplicationInsightsSampler használ.

Tipp.

Ha rögzített százalékos mintavételezést használ, és nem biztos benne, hogy milyen értéket kell beállítania a mintavételezési sebességhez, kezdje 5% (0.05). A sebesség beállítása a hibák és a teljesítménypaneleken látható műveletek pontossága alapján. A mintavételezés csökkenti a pontosságot, ezért az OpenTelemetry-metrikákra vonatkozó riasztások nem érintik a mintavételezést.

Mintavételezés konfigurálása a konfigurációs fájlban

A ASP.NET Core nem támogatja a mintavételezés konfigurációs fájlban való konfigurálását. A mintavételezés konfigurálásához használjon inkább kód- vagy környezeti változókat.

Nyomkövetési alapú mintavételezés konfigurálása naplókhoz

Ha engedélyezi ezt a funkciót, a rendszer elveti a nem felügyelt nyomkövetésekhez tartozó naplórekordokat , hogy a naplók igazodjanak a nyomkövetési mintavételezéshez.

  • A naplórekordok akkor részei a nyomkövetésnek, ha érvényes SpanId.
  • Ha a társított nyomkövetés azt jelzi, hogy TraceFlagsnincs mintavétel, a szolgáltatás elveti a naplórekordot.
  • Az nyomkövetési környezet nélkülinaplórekordokat nem érinti.
  • A funkció alapértelmezés szerint engedélyezve van.

A nyomkövetési alapú naplómintavétel konfigurálásához használja az alábbi beállításokat:

builder.Services.AddOpenTelemetry().UseAzureMonitor(o =>
{
    o.EnableTraceBasedLogsSampler = true;
});

Élő metrikák

Az élő metrikák valós idejű elemzési irányítópultot biztosítanak az alkalmazástevékenység és a teljesítmény elemzéséhez.

Fontos

Az Supplemental Terms of Use for Microsoft Azure Previews című cikkben talál olyan jogi feltételeket, amelyek Azure bétaverziós, előzetes verziójú vagy egyébként általánosan még nem elérhető funkciókra vonatkoznak.

Alapértelmezetten ez a funkció engedélyezett.

A felhasználók letilthatják az élő metrikákat a disztribúció konfigurálásakor.

builder.Services.AddOpenTelemetry().UseAzureMonitor(options => {
	// Disable the Live Metrics feature.
    options.EnableLiveMetrics = false;
});

Microsoft Entra ID (korábban Azure AD) hitelesítés engedélyezése

Ha biztonságosabb kapcsolatot szeretne létrehozni Azure, engedélyezze Microsoft Entra hitelesítést. Ez a hitelesítési módszer megakadályozza a jogosulatlan telemetriai adatok betöltését az előfizetésbe.

További információkért tekintse meg az egyes támogatott nyelvekhez csatolt dedikált Microsoft Entra hitelesítési oldalt.

Az Entra ID-hitelesítés konfigurálásáról további információt a Microsoft Entra hitelesítés az Application Insights számára című dokumentumban talál.

Offline tárolás és automatikus újrapróbálás

Azure Monitor OpenTelemetry-alapú ajánlatok telemetriát gyorsítótáraznak, amikor egy alkalmazás kapcsolata megszűnik az Application Insights szolgáltatással, és megkísérli a küldést újra akár 48 órán keresztül. Az adatkezelési javaslatokért tekintse meg a személyes adatok exportálását és törlését. A nagy terhelésű alkalmazások esetenként két okból szüneteltethetik a telemetriaadatok küldését: ha túllépik a megengedett időkeretet, vagy ha meghaladják a maximális fájlméretet. Szükség esetén a termék rangsorolja a legutóbbi eseményeket a régiekkel szemben.

A disztribúciós csomag tartalmazza az AzureMonitorExportert, amely alapértelmezés szerint az alábbi helyek egyikét használja offline tároláshoz (sorrendben felsorolva):

  • Windows

    • %LOCALAPPDATA%\Microsoft\AzureMonitor
    • %TEMP%\Microsoft\AzureMonitor
  • Nem Windows

    • %TMPDIR%/Microsoft/AzureMonitor
    • /var/tmp/Microsoft/AzureMonitor
    • /tmp/Microsoft/AzureMonitor

Az alapértelmezett könyvtár felülbírálásához be kell állítania AzureMonitorOptions.StorageDirectory.

// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);

// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor(options =>
{
    // Set the Azure Monitor storage directory to "C:\\SomeDirectory".
    // This is the directory where the OpenTelemetry SDK will store any telemetry data that can't be sent to Azure Monitor immediately.
    options.StorageDirectory = "C:\\SomeDirectory";
});

// Build the ASP.NET Core web application.
var app = builder.Build();

// Start the ASP.NET Core web application.
app.Run();

A funkció letiltásához állítsa be a következőt AzureMonitorOptions.DisableOfflineStorage = true:

Az OTLP-exportőr engedélyezése

Előfordulhat, hogy engedélyezni szeretné az OpenTelemetry Protocol (OTLP) exportőrt az Azure Monitor Exportőr mellett, hogy a telemetriát két helyre küldje.

Feljegyzés

Az OTLP-exportőr csak kényelmi okokból jelenik meg. Microsoft hivatalosan nem támogatja az OTLP-exportőrt, sem az azt követő összetevőket vagy harmadik féltől származó tapasztalatokat.

  1. Telepítse az OpenTelemetry.Exporter.OpenTelemetryProtocol csomagot a projektbe.

    dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol
    
  2. Adja hozzá a következő kódrészletet. Ez a példa feltételezi, hogy rendelkezik egy OpenTelemetria-gyűjtővel, amelyen egy OTLP-fogadó fut. További részletekért lásd a példát a GitHub-on.

    // Create a new ASP.NET Core web application builder.
    var builder = WebApplication.CreateBuilder(args);
    
    // Add the OpenTelemetry telemetry service to the application.
    // This service will collect and send telemetry data to Azure Monitor.
    builder.Services.AddOpenTelemetry().UseAzureMonitor();
    
    // Add the OpenTelemetry OTLP exporter to the application.
    // This exporter will send telemetry data to an OTLP receiver, such as Prometheus
    builder.Services.AddOpenTelemetry().WithTracing(builder => builder.AddOtlpExporter());
    builder.Services.AddOpenTelemetry().WithMetrics(builder => builder.AddOtlpExporter());
    
    // Build the ASP.NET Core web application.
    var app = builder.Build();
    
    // Start the ASP.NET Core web application.
    app.Run();
    

OpenTelemetria-konfigurációk

Az alábbi OpenTelemetria-konfigurációkat környezeti változókon keresztül érheti el az Azure Monitor OpenTelemetria-disztribúciók használatakor.

Környezeti változó Leírás
APPLICATIONINSIGHTS_CONNECTION_STRING Állítsa be ezt a változót az Application Insights erőforráshoz tartozó kapcsolati karakterlánccal.
APPLICATIONINSIGHTS_STATSBEAT_DISABLED Állítsa be ezt a változót úgy, hogy true kikapcsolja a belső metrikák gyűjteményét.
OTEL_RESOURCE_ATTRIBUTES Erőforrásattribútumként használandó kulcs-érték párok. Az erőforrásattribútumokról további információt az Erőforrás SDK specifikációjában talál.
OTEL_SERVICE_NAME Beállítja service.name az erőforrásattribútum értékét. Ha service.name is meg van adva OTEL_RESOURCE_ATTRIBUTES-ben, akkor OTEL_SERVICE_NAME elsőbbséget élvez.

URL-lekérdezési sztringek újbóli létrehozása

Az URL-lekérdezési sztringek eltávolításához kapcsolja ki a lekérdezési sztringgyűjtést. Ez a beállítás akkor ajánlott, ha SAS-jogkivonattal hívja meg Azure tárterületet.

Amikor használja az Azure.Monitor.OpenTelemetry.AspNetCore distro csomagot, az tartalmazza az ASP.NET Core és HttpClient Instrumentation könyvtárakat. A disztribúciós csomag alapértelmezés szerint kikapcsolja a lekérdezési sztring kitakarását.

A viselkedés módosításához állítson be egy környezeti változót vagy true, vagy false.

  • ASP.NET Core Instrumentation: OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION A lekérdezési sztring kitakarás alapértelmezésben nincs engedélyezve. Az engedélyezéshez állítsa ezt a környezeti változót a következőre false: .

  • Http-ügyfélrendszerezés: OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION A lekérdezési sztring újrahívása alapértelmezés szerint le van tiltva. Az engedélyezéshez állítsa ezt a környezeti változót a következőre false: .

Metrika exportálási időköz

A metrika exportálási időközét a OTEL_METRIC_EXPORT_INTERVAL környezeti változóval konfigurálhatja.

OTEL_METRIC_EXPORT_INTERVAL=60000

Az alapértelmezett érték ezredmásodperc 60000 (60 másodperc). Ez a beállítás szabályozza, hogy az OpenTelemetry SDK milyen gyakran exportálja a metrikákat.

Tipp.

Az Azure Monitor metrikái és az Azure Monitor munkaterület 60 másodperces rögzített időközönként dolgozza fel az egyéni metrikákat. A gyakrabban küldött metrikák pufferelése és feldolgozása 60 másodpercenként történik. Log Analytics a metrikákat az elküldött időközönként rögzíti, ami növelheti a költségeket rövidebb időközönként, és késleltetheti a láthatóságot a hosszabbaknál.

További információt a következő OpenTelemetry-specifikációkban talál:

Hibaelhárítás, visszajelzés és támogatás

Tipp.

A következő szakaszok az OpenTelemetry Distro összes cikkében elérhetők.

Hibaelhárítás

OpenTelemetry visszajelzés

Visszajelzés küldése:

Támogatás

Válasszon egy lapot a választott nyelvhez a támogatási lehetőségek felderítéséhez.

Következő lépések