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


Az Azure Monitor OpenTelemetria konfigurálása

Ez a cikk az Azure Monitor OpenTelemetry disztribúció konfigurációs beállításait ismerteti.

Kapcsolati sztring

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

A kapcsolati sztring konfigurálásához használja az alábbi három módszer egyikét:

  • Hozzáadás UseAzureMonitor() a program.cs fájlhoz:

    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 sztring egynél több helyen állítja be, a következő sorrendet tartjuk be:

  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

Támogatott nyelvek esetén az Azure Monitor OpenTelemetry Disztribúció automatikusan észleli az erőforrás-környezetet, és alapértelmezett értékeket biztosít az összetevő felhőszerepkör-neve és felhőbeli szerepkörpéldány-tulajdonságai számára. 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 felhőbeli szerepkör nevét és a felhőbeli szerepkörpéldányt erőforrásattribútumokon keresztül. A felhőbeli szerepkör neve használ service.namespace és service.name attribútumokat, bár visszaesik service.name , 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(_testResourceAttributes));

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

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

Mintavételezés engedélyezése

Érdemes lehet engedélyezni a mintavételezést az adatbetöltés mennyiségének csökkentése érdekében, ami csökkenti a költségeket. Az Azure Monitor egy egyéni rögzített sebességű mintavevőt biztosít, amely mintavételezési aránysal tölti fel az eseményeket, amelyet az Application Insights átalakít ItemCount. A rögzített díjas mintavevő pontos élményeket és eseményszámokat biztosít. A mintavevőt úgy tervezték, hogy megőrizze a nyomkövetéseket a szolgáltatások között, és együttműködik a régebbi Application Insights szoftverfejlesztői készletekkel (SDK-kkal). További információ: További információ a mintavételezésről.

Feljegyzés

A metrikákat és naplókat a mintavételezés nem érinti.

A mintavevő 0 és 1 közötti mintaarányt vár. A 0,1 arány azt jelenti, hogy a nyomok körülbelül 10%-át küldi el a rendszer.

// 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 sampling ratio to 10%. This means that 10% of all traces will be sampled and sent to Azure Monitor.
    options.SamplingRatio = 0.1F;
});

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

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

Tipp.

Ha rögzített/százalékos mintavételezést használ, és nem tudja biztosan, hogy mi legyen a mintavételezési sebesség beállítása, kezdje 5%-kal (azaz 0,05 mintavételezési arány) és állítsa be a sebességet a hibák és a teljesítménypaneleken látható műveletek pontossága alapján. A magasabb sebesség általában nagyobb pontosságot eredményez. A mintavételezés azonban befolyásolja a pontosságot, ezért azt javasoljuk, hogy riasztást küldjön az OpenTelemetry-metrikákra, amelyeket a mintavételezés nem érint.

É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

A bétaverziójú, előzetes verziójú vagy másként még általánosan nem elérhető Azure-szolgáltatások jogi feltételeit lásd: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.

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;
});

A Microsoft Entra ID (korábbi nevén Azure AD) hitelesítésének engedélyezése

Érdemes lehet engedélyezni a Microsoft Entra-hitelesítést az Azure-hoz való biztonságosabb kapcsolat érdekében, amely megakadályozza a jogosulatlan telemetriai adatok betöltését az előfizetésbe.

Támogatjuk az Azure Identity által biztosított hitelesítő osztályokat.

  • Helyi fejlesztéshez ajánljuk DefaultAzureCredential .
  • Rendszer által hozzárendelt és felhasználó által hozzárendelt felügyelt identitásokhoz javasoljuk ManagedIdentityCredential .
    • A rendszer által hozzárendelt alapértelmezett konstruktort használja paraméterek nélkül.
    • Felhasználó által hozzárendelt esetben adja meg az ügyfél-azonosítót a konstruktornak.
  • A szolgáltatásnevek használatát javasoljuk ClientSecretCredential .
    • Adja meg a bérlőazonosítót, az ügyfélazonosítót és az ügyfél titkos kódját a konstruktornak.
  1. Telepítse a legújabb Azure.Identity-csomagot :

    dotnet add package Azure.Identity
    
  2. Adja meg a kívánt hitelesítőadat-osztályt:

    // 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 credential to the DefaultAzureCredential.
        // This credential will use the Azure identity of the current user or
        // the service principal that the application is running as to authenticate
        // to Azure Monitor.
        options.Credential = new DefaultAzureCredential();
    });
    
    // Build the ASP.NET Core web application.
    var app = builder.Build();
    
    // Start the ASP.NET Core web application.
    app.Run();
    

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

A megbízhatóság és a rugalmasság javítása érdekében az Azure Monitor OpenTelemetry-alapú ajánlatai alapértelmezés szerint offline/helyi tárolóba írnak, ha egy alkalmazás elveszíti a kapcsolatot az Application Insightsszal. Menti az alkalmazás telemetriáját a lemezre, és rendszeresen megpróbálja újra elküldeni akár 48 órán keresztül. A nagy terhelésű alkalmazásokban a telemetriát időnként elvetik két okból. Először is, ha túllépi a megengedett időt, másodszor pedig a maximális fájlméret túllépésekor, vagy ha az SDK-nak nincs lehetősége a fájl törlésére. Ha választanunk kell, a termék a régiek fölé menti a legutóbbi eseményeket. További információ

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 cannot 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 be kell állítania a beállítást AzureMonitorOptions.DisableOfflineStorage = true.

Az OTLP-exportőr engedélyezése

Érdemes engedélyeznie 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. Hivatalosan nem támogatjuk az OTLP-exportőrt, illetve annak bármely összetevőjét vagy harmadik féltől származó tapasztalatait.

  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 tekintse meg a GitHubon található példát.

    // 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ók környezeti változókon keresztül érhetők el az Azure Monitor OpenTelemetry Distros használata közben.

Környezeti változó Leírás
APPLICATIONINSIGHTS_CONNECTION_STRING Állítsa be az Application Insights-erőforrás kapcsolati sztring.
APPLICATIONINSIGHTS_STATSBEAT_DISABLED Állítsa be ú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 ez is meg van adva OTEL_RESOURCE_ATTRIBUTES, akkor OTEL_SERVICE_NAME elsőbbséget élvez.