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();
Ha a kapcsolati sztring egynél több helyen állítja be, a következő sorrendet tartjuk be:
Kód
Környezeti változó
Konfigurációs fájl
A kapcsolati sztring az alábbi két módon konfigurálható:
Adja hozzá az Azure Monitor-exportőrt minden OpenTelemetria-jelhez az alkalmazás indításakor.
// Create a new OpenTelemetry tracer provider.
// It is important to keep the TracerProvider instance active throughout the process lifetime.
var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAzureMonitorTraceExporter(options =>
{
options.ConnectionString = "<Your Connection String>";
});
// Create a new OpenTelemetry meter provider.
// It is important to keep the MetricsProvider instance active throughout the process lifetime.
var metricsProvider = Sdk.CreateMeterProviderBuilder()
.AddAzureMonitorMetricExporter(options =>
{
options.ConnectionString = "<Your Connection String>";
});
// Create a new logger factory.
// It is important to keep the LoggerFactory instance active throughout the process lifetime.
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(options =>
{
options.AddAzureMonitorLogExporter(options =>
{
options.ConnectionString = "<Your Connection String>";
});
});
});
// Import the useAzureMonitor function and the AzureMonitorOpenTelemetryOptions class from the @azure/monitor-opentelemetry package.
const { useAzureMonitor, AzureMonitorOpenTelemetryOptions } = require("@azure/monitor-opentelemetry");
// Create a new AzureMonitorOpenTelemetryOptions object.
const options: AzureMonitorOpenTelemetryOptions = {
azureMonitorExporterOptions: {
connectionString: "<your connection string>"
}
};
// Enable Azure Monitor integration using the useAzureMonitor function and the AzureMonitorOpenTelemetryOptions object.
useAzureMonitor(options);
A kapcsolati sztring az alábbi két módon konfigurálható:
# Import the `configure_azure_monitor()` function from the `azure.monitor.opentelemetry` package.
from azure.monitor.opentelemetry import configure_azure_monitor
# Configure OpenTelemetry to use Azure Monitor with the specified connection string.
# Replace `<your-connection-string>` with the connection string of your Azure Monitor Application Insights resource.
configure_azure_monitor(
connection_string="<your-connection-string>",
)
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();
Á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 resource builder.
var resourceBuilder = ResourceBuilder.CreateDefault().AddAttributes(resourceAttributes);
// Create a new OpenTelemetry tracer provider and set the resource builder.
// It is important to keep the TracerProvider instance active throughout the process lifetime.
var tracerProvider = Sdk.CreateTracerProviderBuilder()
// Set ResourceBuilder on the TracerProvider.
.SetResourceBuilder(resourceBuilder)
.AddAzureMonitorTraceExporter();
// Create a new OpenTelemetry meter provider and set the resource builder.
// It is important to keep the MetricsProvider instance active throughout the process lifetime.
var metricsProvider = Sdk.CreateMeterProviderBuilder()
// Set ResourceBuilder on the MeterProvider.
.SetResourceBuilder(resourceBuilder)
.AddAzureMonitorMetricExporter();
// Create a new logger factory and add the OpenTelemetry logger provider with the resource builder.
// It is important to keep the LoggerFactory instance active throughout the process lifetime.
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(options =>
{
// Set ResourceBuilder on the Logging config.
options.SetResourceBuilder(resourceBuilder);
options.AddAzureMonitorLogExporter();
});
});
Á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.
// Import the useAzureMonitor function, the AzureMonitorOpenTelemetryOptions class, the Resource class, and the SemanticResourceAttributes class from the @azure/monitor-opentelemetry, @opentelemetry/resources, and @opentelemetry/semantic-conventions packages, respectively.
const { useAzureMonitor, AzureMonitorOpenTelemetryOptions } = require("@azure/monitor-opentelemetry");
const { Resource } = require("@opentelemetry/resources");
const { SemanticResourceAttributes } = require("@opentelemetry/semantic-conventions");
// Create a new Resource object with the following custom resource attributes:
//
// * service_name: my-service
// * service_namespace: my-namespace
// * service_instance_id: my-instance
const customResource = new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: "my-service",
[SemanticResourceAttributes.SERVICE_NAMESPACE]: "my-namespace",
[SemanticResourceAttributes.SERVICE_INSTANCE_ID]: "my-instance",
});
// Create a new AzureMonitorOpenTelemetryOptions object and set the resource property to the customResource object.
const options: AzureMonitorOpenTelemetryOptions = {
resource: customResource
};
// Enable Azure Monitor integration using the useAzureMonitor function and the AzureMonitorOpenTelemetryOptions object.
useAzureMonitor(options);
Á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.
Állítsa be az erőforrásattribútumokat a és/vagy OTEL_SERVICE_NAME a OTEL_RESOURCE_ATTRIBUTES környezeti változók használatával. OTEL_RESOURCE_ATTRIBUTES vesszővel elválasztott kulcs-érték párok sorozatát veszi fel. Ha például a felhőszerepkör nevét a felhőbeli szerepkörpéldányra my-namespace.my-helloworld-servicemy-instanceszeretné állítani, beállíthatja OTEL_RESOURCE_ATTRIBUTES a OTEL_SERVICE_NAME következőt:
Ha nem állítja be az service.namespace Erőforrás attribútumot, a felhőalapú szerepkör nevét is beállíthatja csak a OTEL_Standard kiadás RVICE_NAME környezeti változóval vagy az service.name Erőforrás attribútummal. Ha például a felhőszerepkör nevét a felhőbeli szerepkörpéldányra my-helloworld-servicemy-instanceszeretné állítani, beállíthatja OTEL_RESOURCE_ATTRIBUTES a OTEL_SERVICE_NAME következőt:
É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();
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 OpenTelemetry tracer provider.
// It is important to keep the TracerProvider instance active throughout the process lifetime.
var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAzureMonitorTraceExporter(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;
});
A 3.4.0-tól kezdődően a sebességkorlátos mintavételezés jelenleg az alapértelmezett. További információ a mintavételezésről: Java-mintavételezés.
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.
// Import the useAzureMonitor function and the AzureMonitorOpenTelemetryOptions class from the @azure/monitor-opentelemetry package.
const { useAzureMonitor, AzureMonitorOpenTelemetryOptions } = require("@azure/monitor-opentelemetry");
// Create a new AzureMonitorOpenTelemetryOptions object and set the samplingRatio property to 0.1.
const options: AzureMonitorOpenTelemetryOptions = {
samplingRatio: 0.1
};
// Enable Azure Monitor integration using the useAzureMonitor function and the AzureMonitorOpenTelemetryOptions object.
useAzureMonitor(options);
A configure_azure_monitor() függvény automatikusan az Application Elemzések Samplert használja az alkalmazás Elemzések SDK-k kompatibilitásához és a telemetriai adatok mintavételéhez. A OTEL_TRACES_SAMPLER_ARG környezeti változóval megadhatja a mintavételezési gyakoriságot, amelynek érvényes tartománya 0 és 1 között van, ahol 0% és 1 100%.
A 0,1 érték például azt jelenti, hogy a rendszer a nyomkövetések 10%-át küldi el.
export OTEL_TRACES_SAMPLER_ARG=0.1
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.
// 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();
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.
// Create a DefaultAzureCredential.
var credential = new DefaultAzureCredential();
// Create a new OpenTelemetry tracer provider and set the credential.
// It is important to keep the TracerProvider instance active throughout the process lifetime.
var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAzureMonitorTraceExporter(options =>
{
options.Credential = credential;
});
// Create a new OpenTelemetry meter provider and set the credential.
// It is important to keep the MetricsProvider instance active throughout the process lifetime.
var metricsProvider = Sdk.CreateMeterProviderBuilder()
.AddAzureMonitorMetricExporter(options =>
{
options.Credential = credential;
});
// Create a new logger factory and add the OpenTelemetry logger provider with the credential.
// It is important to keep the LoggerFactory instance active throughout the process lifetime.
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(options =>
{
options.AddAzureMonitorLogExporter(options =>
{
options.Credential = credential;
});
});
});
Támogatjuk az Azure Identity által biztosított hitelesítő osztályokat.
// Import the useAzureMonitor function, the AzureMonitorOpenTelemetryOptions class, and the ManagedIdentityCredential class from the @azure/monitor-opentelemetry and @azure/identity packages, respectively.
const { useAzureMonitor, AzureMonitorOpenTelemetryOptions } = require("@azure/monitor-opentelemetry");
const { ManagedIdentityCredential } = require("@azure/identity");
// Create a new ManagedIdentityCredential object.
const credential = new ManagedIdentityCredential();
// Create a new AzureMonitorOpenTelemetryOptions object and set the credential property to the credential object.
const options: AzureMonitorOpenTelemetryOptions = {
azureMonitorExporterOptions: {
credential: credential
}
};
// Enable Azure Monitor integration using the useAzureMonitor function and the AzureMonitorOpenTelemetryOptions object.
useAzureMonitor(options);
# Import the `ManagedIdentityCredential` class from the `azure.identity` package.
from azure.identity import ManagedIdentityCredential
# Import the `configure_azure_monitor()` function from the `azure.monitor.opentelemetry` package.
from azure.monitor.opentelemetry import configure_azure_monitor
# Configure OpenTelemetry to use Azure Monitor with a managed identity credential.
# This will allow OpenTelemetry to authenticate to Azure Monitor without requiring you to provide a connection string.
configure_azure_monitor(
credential=ManagedIdentityCredential(),
)
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.
Alapértelmezés szerint az AzureMonitorExporter 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 AzureMonitorExporterOptions.StorageDirectory.
// Create a new OpenTelemetry tracer provider and set the storage directory.
// It is important to keep the TracerProvider instance active throughout the process lifetime.
var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAzureMonitorTraceExporter(options =>
{
// Set the Azure Monitor storage directory to "C:\\SomeDirectory".
// This is the directory where the OpenTelemetry SDK will store any trace data that cannot be sent to Azure Monitor immediately.
options.StorageDirectory = "C:\\SomeDirectory";
});
// Create a new OpenTelemetry meter provider and set the storage directory.
// It is important to keep the MetricsProvider instance active throughout the process lifetime.
var metricsProvider = Sdk.CreateMeterProviderBuilder()
.AddAzureMonitorMetricExporter(options =>
{
// Set the Azure Monitor storage directory to "C:\\SomeDirectory".
// This is the directory where the OpenTelemetry SDK will store any metric data that cannot be sent to Azure Monitor immediately.
options.StorageDirectory = "C:\\SomeDirectory";
});
// Create a new logger factory and add the OpenTelemetry logger provider with the storage directory.
// It is important to keep the LoggerFactory instance active throughout the process lifetime.
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddOpenTelemetry(options =>
{
options.AddAzureMonitorLogExporter(options =>
{
// Set the Azure Monitor storage directory to "C:\\SomeDirectory".
// This is the directory where the OpenTelemetry SDK will store any log data that cannot be sent to Azure Monitor immediately.
options.StorageDirectory = "C:\\SomeDirectory";
});
});
});
A funkció letiltásához be kell állítania a beállítást AzureMonitorExporterOptions.DisableOfflineStorage = true.
Az offline tárolás és az automatikus újrapróbálkozási lehetőségek konfigurálása nem érhető el a Java-ban.
Alapértelmezés szerint az AzureMonitorExporter az alábbi helyek egyikét használja offline tároláshoz.
Windows
%TEMP%\Microsoft\AzureMonitor
Nem Windows
%TMPDIR%/Microsoft/AzureMonitor
/var/tmp/Microsoft/AzureMonitor
Az alapértelmezett könyvtár felülbírálásához be kell állítania storageDirectory.
Példa:
// Import the useAzureMonitor function and the AzureMonitorOpenTelemetryOptions class from the @azure/monitor-opentelemetry package.
const { useAzureMonitor, AzureMonitorOpenTelemetryOptions } = require("@azure/monitor-opentelemetry");
// Create a new AzureMonitorOpenTelemetryOptions object and set the azureMonitorExporterOptions property to an object with the following properties:
//
// * connectionString: The connection string for your Azure Monitor Application Insights resource.
// * storageDirectory: The directory where the Azure Monitor OpenTelemetry exporter will store telemetry data when it is offline.
// * disableOfflineStorage: A boolean value that specifies whether to disable offline storage.
const options: AzureMonitorOpenTelemetryOptions = {
azureMonitorExporterOptions: {
connectionString: "<Your Connection String>",
storageDirectory: "C:\\SomeDirectory",
disableOfflineStorage: false
}
};
// Enable Azure Monitor integration using the useAzureMonitor function and the AzureMonitorOpenTelemetryOptions object.
useAzureMonitor(options);
A funkció letiltásához be kell állítania a beállítást disableOfflineStorage = true.
Alapértelmezés szerint az Azure Monitor-exportőrök a következő elérési utat használják:
Az alapértelmezett könyvtár felülbírálásához állítsa be storage_directory a kívánt könyvtárat.
Példa:
...
# Configure OpenTelemetry to use Azure Monitor with the specified connection string and storage directory.
# Replace `your-connection-string` with the connection string to your Azure Monitor Application Insights resource.
# Replace `C:\\SomeDirectory` with the directory where you want to store the telemetry data before it is sent to Azure Monitor.
configure_azure_monitor(
connection_string="your-connection-string",
storage_directory="C:\\SomeDirectory",
)
...
A funkció letiltásához állítsa be a következőt disable_offline_storageTrue: . Alapértelmezett érték: False.
Példa:
...
# Configure OpenTelemetry to use Azure Monitor with the specified connection string and disable offline storage.
# Replace `your-connection-string` with the connection string to your Azure Monitor Application Insights resource.
configure_azure_monitor(
connection_string="your-connection-string",
disable_offline_storage=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.
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();
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 OpenTelemetry tracer provider and add the Azure Monitor trace exporter and the OTLP trace exporter.
// It is important to keep the TracerProvider instance active throughout the process lifetime.
var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAzureMonitorTraceExporter()
.AddOtlpExporter();
// Create a new OpenTelemetry meter provider and add the Azure Monitor metric exporter and the OTLP metric exporter.
// It is important to keep the MetricsProvider instance active throughout the process lifetime.
var metricsProvider = Sdk.CreateMeterProviderBuilder()
.AddAzureMonitorMetricExporter()
.AddOtlpExporter();
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.
// Import the useAzureMonitor function, the AzureMonitorOpenTelemetryOptions class, the trace module, the ProxyTracerProvider class, the BatchSpanProcessor class, the NodeTracerProvider class, and the OTLPTraceExporter class from the @azure/monitor-opentelemetry, @opentelemetry/api, @opentelemetry/sdk-trace-base, @opentelemetry/sdk-trace-node, and @opentelemetry/exporter-trace-otlp-http packages, respectively.
const { useAzureMonitor, AzureMonitorOpenTelemetryOptions } = require("@azure/monitor-opentelemetry");
const { BatchSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http');
// Create a new OTLPTraceExporter object.
const otlpExporter = new OTLPTraceExporter();
// Enable Azure Monitor integration.
const options: AzureMonitorOpenTelemetryOptions = {
// Add the SpanEnrichingProcessor
spanProcessors: [new BatchSpanProcessor(otlpExporter)]
}
useAzureMonitor(options);
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 ezt a README-et.
# Import the `configure_azure_monitor()`, `trace`, `OTLPSpanExporter`, and `BatchSpanProcessor` classes from the appropriate packages.
from azure.monitor.opentelemetry import configure_azure_monitor
from opentelemetry import trace
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.trace.export import BatchSpanProcessor
# Configure OpenTelemetry to use Azure Monitor with the specified connection string.
# Replace `<your-connection-string>` with the connection string to your Azure Monitor Application Insights resource.
configure_azure_monitor(
connection_string="<your-connection-string>",
)
# Get the tracer for the current module.
tracer = trace.get_tracer(__name__)
# Create an OTLP span exporter that sends spans to the specified endpoint.
# Replace `http://localhost:4317` with the endpoint of your OTLP collector.
otlp_exporter = OTLPSpanExporter(endpoint="http://localhost:4317")
# Create a batch span processor that uses the OTLP span exporter.
span_processor = BatchSpanProcessor(otlp_exporter)
# Add the batch span processor to the tracer provider.
trace.get_tracer_provider().add_span_processor(span_processor)
# Start a new span with the name "test".
with tracer.start_as_current_span("test"):
print("Hello world!")
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.
Á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.
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.
Az OpenTelemetria SDK konfigurálásával kapcsolatos további információkért tekintse meg az OpenTelemetria dokumentációját és az Azure Monitor Disztribúciós használatát.
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.
Ú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:
Csökkenti az engedélyezési erőfeszítéseket
A Microsoft támogatja
Az Azure-specifikus funkciók, például a következők:
Klasszikus alkalmazás Elemzések SDK-kkal kompatibilis mintavételezés
Erőforrás-metaadatok észlelése a felhőszerepkör nevének és a felhőbeli szerepkörpéldánynak a különböző Azure-környezeteken való automatikus feltöltéséhez
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?
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.
✅ 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?
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.