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


Az Azure Monitor OpenTelemetria konfigurálása

Ez az útmutató bemutatja, hogyan konfigurálhatja az OpenTelemetryt (OTel) az Azure Monitor Application Insightsban az Azure Monitor OpenTelemetry disztribúcióval. 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

Az Azure Functions Apps esetében lásd: OpenTelemetria használata az Azure Functions használatával.

Kapcsolati karakterlánc

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:

  • Adja hozzá a UseAzureMonitor() elemet 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 sztringet 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ő szerepkör neve használja a service.namespace és service.name attribútumokat, bár a service.name-t használja helyette, ha a 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();

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ánnyal tölti fel az eseményeket, amelyet az Application Insights átalakít ItemCount. A rögzített arányú 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. Ha váratlan díjakat vagy magas költségeket lát az Application Insightsban, ez az útmutató segíthet. Olyan gyakori okokra terjed ki, mint a magas telemetriai mennyiség, az adatbetöltési csúcsok és a helytelenül konfigurált mintavételezés. Különösen hasznos, ha a költségnövekedéssel, a telemetriai forgalommal, a nem működő mintavételezéssel, az adatkorlátokkal, a magas adatbevitelnél vagy a váratlan számlázással kapcsolatos problémákat hárítja el. Első lépésként tekintse meg az Application Insights magas adatbetöltésének hibaelhárításával foglalkozó témakört.

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, hogy mi legyen a mintavételezési sebesség beállítása, kezdje 5%-kal. (0,05 mintavételezési arány) A sebesség beállítása 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 Microsoft Azure Previews kiegészítő használati feltételeiben talál olyan jogi feltételeket, amelyek a bétaverzióban, előzetes verzióban vagy más módon még nem általánosan elérhető Azure-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;
});

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.

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ával kapcsolatos információkért lásd: Microsoft Entra-hitelesítés az Application Insightshoz

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

Az Azure Monitor OpenTelemetry-alapú ajánlatai tárolják a telemetriai adatokat, amikor egy alkalmazás megszakítja a kapcsolatot az Application Insightsszal, és akár 48 órán keresztül újra próbálja elküldeni azokat. 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 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ának kapcsolati karakterláncát.
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.nameOTEL_RESOURCE_ATTRIBUTES is meg van adva, 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. Ezt a beállítást akkor javasoljuk, ha SAS-jogkivonattal hívja meg az Azure Storage-t.

Az Azure.Monitor.OpenTelemetry.AspNetCore disztribúciós csomag használatakor a ASP.NET Core - és HttpClient Instrumentation-kódtárak is elérhetők. A disztribúciós csomag alapértelmezés szerint kikapcsolja a lekérdezési sztring újraműveltségét.

A viselkedés módosításához be kell állítania egy környezeti változót a következőre: vagy truefalse.

  • ASP.NET Core Instrumentation: OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION A lekérdezési sztring kitakarása alapértelmezés szerint ki van kapcsolva. 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 Metrics és az Azure Monitor Workspace rögzített 60 másodperces időközzel betölti az egyéni metrikákat. A gyakrabban küldött metrikák pufferelése és feldolgozása 60 másodpercenként történik. A Log Analytics az elküldött időközön rögzíti a metrikákat, ami rövidebb időközönként növelheti a költségeket, és késleltetheti a hosszabbaknál a láthatóságot.

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