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 Alkalmazás Elemzések egy kapcsolati sztring határozza meg a telemetriai adatok küldésének célhelyét, biztosítva, hogy az elérje a megfelelő erőforrást a figyeléshez és elemzéshez.

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

  • Adja hozzá UseAzureMonitor() az alkalmazás indításához az program.cs osztályban.

    // 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 => {
        options.ConnectionString = "<Your Connection String>";
    });
    
    // Build the ASP.NET Core web application.
    var app = builder.Build();
    
    // Start the ASP.NET Core web application.    
    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 OpenTelemetry tracer provider to add the resource attributes to all traces.
builder.Services.ConfigureOpenTelemetryTracerProvider((sp, builder) => 
    builder.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ánysal tölti fel az eseményeket, amelyet az alkalmazás Elemzések átalakítaniItemCount. A rögzített díjas mintavevő pontos élményeket és eseményszámokat biztosít. A mintavevő úgy lett kialakítva, hogy megőrizze a nyomkövetéseket a szolgáltatások között, és együttműködik a régebbi alkalmazás-Elemzések 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(o =>
{
    // Set the sampling ratio to 10%. This means that 10% of all traces will be sampled and sent to Azure Monitor.
    o.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ény paneleken 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.

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 alkalmazás Elemzések. 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 alkalmazás Elemzések 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.

Gyakori kérdések

Ez a szakasz választ ad a gyakori kérdésekre.

Mi az OpenTelemetria?

Ez egy új nyílt forráskódú szabvány a megfigyelhetőséghez. További információ az OpenTelemetryről.

Miért fektet be a Microsoft Azure Monitor az OpenTelemetrybe?

A Microsoft az OpenTelemetria legnagyobb közreműködői közé tartozik.

Az OpenTelemetria fő értékajánlata, hogy szállítósemleges, és egységes API-kat/SDK-kat biztosít a nyelvek között.

Úgy gondoljuk, hogy az OpenTelemetry idővel lehetővé teszi az Azure Monitor-ügyfelek számára, hogy a támogatott nyelveken kívül más nyelveken írt alkalmazásokat figyeljenek meg. Emellett a rendszerállapot-kódtárak széles halmazán keresztül összegyűjthető adattípusokat is kibővíti. Emellett az OpenTelemetry SDK-k általában nagyobb teljesítményűek, mint elődjeik, az alkalmazás Elemzések SDK-k.

Végül az OpenTelemetry igazodik a Microsoft stratégiájához, amely nyílt forráskód.

Mi az OpenTelemetria állapota?

Lásd: OpenTelemetry Status.

Mi az "Azure Monitor OpenTelemetry Distro"?

Úgy tekinthet rá, mint egy vékony burkolóra, amely összecsomagol minden OpenTelemetry-összetevőt egy első osztályú Azure-élmény érdekében. Ezt a burkolót az OpenTelemetryben disztribúciónak is nevezik.

Miért érdemes az "Azure Monitor OpenTelemetry Distro"-t használni?

Az Azure Monitor OpenTelemetry Distro használatának számos előnye van a közösség natív OpenTelemetry-ével szemben:

Az OpenTelemetria szellemében úgy terveztük meg a disztribúciót, hogy nyitott és bővíthető legyen. Hozzáadhatja például a következőt:

  • OpenTelemetry Protocol (OTLP) exportőr, és küldd el egy második cél egyidejűleg
  • A disztribúcióban nem szereplő egyéb eszközkódtárak

Mivel a Disztribúció OpenTelemetria-disztribúciót biztosít, a Disztribúció az OpenTelemetria által támogatott bármit támogat. Hozzáadhat például több telemetriai processzort, exportőrt vagy rendszerállapot-kódtárat, ha az OpenTelemetria támogatja őket.

Feljegyzés

A Disztribúció egyéni, rögzített díjas mintavevőre állítja a mintavevőt az Application Elemzések számára. Ezt módosíthatja egy másik mintavevőre, de ezzel letilthatja a Disztribúció egyes funkcióit. A támogatott mintavevőről az Azure Monitor OpenTelemetria konfigurálásának mintavételezés engedélyezése című szakaszában talál további információt.

A támogatott önálló OpenTelemetry-exportőr nélküli nyelvek esetében az Azure Monitor OpenTelemetry Distro az egyetlen jelenleg támogatott módszer az OpenTelemetry és az Azure Monitor használatára. A támogatott önálló OpenTelemetry-exportőrrel rendelkező nyelvek esetében lehetősége van az Azure Monitor OpenTelemetry Distro vagy a megfelelő önálló OpenTelemetry-exportőr használatára a telemetriai forgatókönyvtől függően. További információ: Mikor érdemes használni az Azure Monitor OpenTelemetry-exportőrt?.

Hogyan tesztelhetem az Azure Monitor OpenTelemetry disztribúciót?

Tekintse meg a .NET, a Java, a JavaScript (Node.js) és a Python engedélyezési dokumentációját.

Használjam az OpenTelemetria vagy az alkalmazás Elemzések SDK-t?

Azt javasoljuk, hogy használja az OpenTelemetria-disztribúciót, hacsak nem igényel olyan funkciót, amely csak formális támogatással érhető el az Alkalmazás Elemzések SDK-ban.

Az OpenTelemetria bevezetése megakadályozza, hogy később migráljon.

Mikor érdemes használni az Azure Monitor OpenTelemetry-exportőrt?

ASP.NET Core, Java, Node.js és Python esetén az Azure Monitor OpenTelemetry Distro használatát javasoljuk. Ez egy kódsor az első lépésekhez.

Minden más .NET-forgatókönyv esetében, beleértve a klasszikus ASP.NET, a konzolalkalmazásokat stb., javasoljuk a .NET Azure Monitor OpenTelemetry-exportőr használatát: Azure.Monitor.OpenTelemetry.Exporter.

Összetettebb, speciális konfigurációt igénylő Python-telemetriai forgatókönyvek esetén javasoljuk a Python Azure Monitor OpenTelemetry-exportőr használatát.

Mi az Azure Monitor OpenTelemetry Distro funkcióinak aktuális kiadási állapota?

Az alábbi diagram az Egyes nyelvek OpenTelemetry funkciójának támogatását mutatja be.

Szolgáltatás .NET Node.js Python Java
Elosztott nyomkövetés
Egyéni metrikák
Standard metrikák (a mintavételezés által jelenleg érintett pontosság)
Rögzített gyakoriságú mintavételezés
Offline tárolás és automatikus újrapróbálkozás
Kivételjelentés
Naplók gyűjteménye ⚠️
Egyéni események ⚠️ ⚠️ ⚠️
Microsoft Entra hitelesítés
Élő metrikák
Erőforrás-környezet észlelése virtuális géphez/VMSS-hez és App Service-hez
Az AKS és függvények erőforrás-környezetének észlelése
Rendelkezésre állási tesztelési span szűrés
A felhasználói azonosító, a hitelesített felhasználói azonosító és a felhasználói IP-cím automatikus feltöltése
Műveletnév, felhasználói azonosító vagy hitelesített felhasználói azonosító manuális felülbírálása/beállítása
Adaptív mintavételezés
Profilkészítő ⚠️
Pillanatkép-hibakereső

Kulcs

  • ✅ Ez a funkció minden hivatalos támogatással rendelkező ügyfél számára elérhető.
  • ⚠️ Ez a funkció nyilvános előzetes verzióként érhető el. Lásd a Microsoft Azure előzetes verziójának használati feltételeit.
  • ❌ Ez a funkció nem érhető el, vagy nem alkalmazható.

Használható az OpenTelemetria webböngészőkhöz?

Igen, de nem javasoljuk, és az Azure nem támogatja. Az OpenTelemetry JavaScript nagymértékben optimalizálva van Node.js. Ehelyett azt javasoljuk, hogy az alkalmazás Elemzések JavaScript SDK-t használja.

Mikor várható, hogy az OpenTelemetry SDK elérhető lesz a webböngészőkben?

Az OpenTelemetry webes SDK nem rendelkezik meghatározott rendelkezésre állási ütemtervvel. Valószínűleg több évnyire vagyunk a böngésző SDK-tól, amely életképes alternatívája az alkalmazásnak Elemzések JavaScript SDK-nak.

Tesztelhetem az OpenTelemetryt egy webböngészőben?

Az OpenTelemetry webes tesztkörnyezete egy elágazás, amely arra szolgál, hogy az OpenTelemetria működjön egy böngészőben. Még nem lehet telemetriát küldeni az Alkalmazás Elemzések. Az SDK nem definiál általános ügyféleseményeket.

Támogatott az Alkalmazás Elemzések futtatása olyan versenytárs ügynökök mellett, mint az AppDynamics, a DataDog és a NewRelic?

Szám Ezt a gyakorlatot nem tervezzük tesztelni vagy támogatni, bár distribúcióink lehetővé teszik, hogy egyszerre exportáljon egy OTLP-végpontra az Azure Monitor mellett.

Használhatok előzetes verziójú funkciókat éles környezetekben?

Nem javasoljuk. Lásd a Microsoft Azure előzetes verziójának használati feltételeit.

Mi a különbség a manuális és az automatikus rendszerállapot között?

Tekintse meg az OpenTelemetry áttekintését.

Használhatom az OpenTelemetry Collectort?

Egyes ügyfelek az OpenTelemetry Collectort használják ügynök alternatívaként, annak ellenére, hogy a Microsoft hivatalosan még nem támogatja az alkalmazásfigyelés ügynökalapú megközelítését. Addig is a nyílt forráskódú közösség hozzájárult egy OpenTelemetry Collector Azure Monitor-exportőrhöz, amellyel egyes ügyfelek adatokat küldenek az Azure Monitor-alkalmazásnak Elemzések. Ezt a Microsoft nem támogatja.

Mi a különbség az OpenCensus és az OpenTelemetria között?

Az OpenCensus az OpenTelemetria előfutára. A Microsoft segített összehozni az OpenTracinget és az OpenCensust az OpenTelemetria létrehozásához, amely a világ egyetlen megfigyelhetőségi szabványa. Az Azure Monitorhoz készült, jelenleg éles környezetben ajánlott Python SDK az OpenCensuson alapul. A Microsoft elkötelezett az Azure Monitor OpenTelemetria-alapúvá tétele mellett.

Hibaelhárítás

Nem működik? Tekintse meg a ASP.NET Core hibaelhárítási oldalát.

Támogatás

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

OpenTelemetry-visszajelzés

Visszajelzés küldése: