In dit artikel worden configuratie-instellingen voor de Azure Monitor OpenTelemetry-distributie behandeld.
Connection string
Een verbindingsreeks in Application Insights definieert de doellocatie voor het verzenden van telemetriegegevens, zodat deze de juiste resource voor bewaking en analyse bereikt.
Gebruik een van de volgende drie manieren om de verbindingsreeks te configureren:
Voeg toe UseAzureMonitor() aan het opstarten van uw toepassing in uw program.cs klas.
// 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();
Als u de verbindingsreeks op meer dan één plaats instelt, houden we ons aan de volgende prioriteit:
Code
Omgevingsvariabele
Configuratiebestand
Gebruik een van de volgende twee manieren om de verbindingsreeks te configureren:
Voeg de Azure Monitor Exporter toe aan elk OpenTelemetry-signaal bij het opstarten van de toepassing.
// 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);
Gebruik een van de volgende twee manieren om de verbindingsreeks te configureren:
# 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>",
)
De naam van de cloudrol en het cloudrolexemplaren instellen
Voor ondersteunde talen detecteert De Azure Monitor OpenTelemetry Distro automatisch de resourcecontext en biedt standaardwaarden voor de eigenschappen van de cloudrolnaam en de eigenschappen van het cloudrolexemplaren van uw onderdeel. Het is echter mogelijk dat u de standaardwaarden wilt overschrijven naar iets dat zinvol is voor uw team. De naamwaarde van de cloudrol wordt weergegeven op het toepassingsoverzicht als de naam onder een knooppunt.
Stel de naam van de cloudrol en het cloudrolexemplaren in via resourcekenmerken . Cloudrolnaam gebruikt service.namespace en service.name kenmerken, hoewel deze terugvalt op service.name als service.namespace deze niet is ingesteld. Cloud Role Instance maakt gebruik van de service.instance.id kenmerkwaarde. Zie OpenTelemetry Semantic Conventions (OpenTelemetry Semantic Conventions) voor informatie over standaardkenmerken voor resources.
// 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();
Stel de naam van de cloudrol en het cloudrolexemplaren in via resourcekenmerken . Cloudrolnaam gebruikt service.namespace en service.name kenmerken, hoewel deze terugvalt op service.name als service.namespace deze niet is ingesteld. Cloud Role Instance maakt gebruik van de service.instance.id kenmerkwaarde. Zie OpenTelemetry Semantic Conventions (OpenTelemetry Semantic Conventions) voor informatie over standaardkenmerken voor resources.
// 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();
});
});
Als u de naam van de cloudrol wilt instellen, raadpleegt u de naam van de cloudrol.
spring.application.name De toepassing voor systeemeigen Spring Boot-installatiekopietoepassingen gebruiken
quarkus.application.name De voor Quarkus systeemeigen installatiekopieën gebruiken
Stel de naam van de cloudrol en het cloudrolexemplaren in via resourcekenmerken . Cloudrolnaam gebruikt service.namespace en service.name kenmerken, hoewel deze terugvalt op service.name als service.namespace deze niet is ingesteld. Cloud Role Instance maakt gebruik van de service.instance.id kenmerkwaarde. Zie OpenTelemetry Semantic Conventions (OpenTelemetry Semantic Conventions) voor informatie over standaardkenmerken voor resources.
// 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);
Stel de naam van de cloudrol en het cloudrolexemplaren in via resourcekenmerken . Cloudrolnaam gebruikt service.namespace en service.name kenmerken, hoewel deze terugvalt op service.name als service.namespace deze niet is ingesteld. Cloud Role Instance maakt gebruik van de service.instance.id kenmerkwaarde. Zie OpenTelemetry Semantic Conventions (OpenTelemetry Semantic Conventions) voor informatie over standaardkenmerken voor resources.
Stel resourcekenmerken in met behulp van de OTEL_RESOURCE_ATTRIBUTES en/of OTEL_SERVICE_NAME omgevingsvariabelen. OTEL_RESOURCE_ATTRIBUTES reeks door komma's gescheiden sleutel-waardeparen. Als u bijvoorbeeld de naam my-namespace.my-helloworld-service van de cloudrol wilt instellen en het cloudrolexemplaren my-instancewilt instellen op, kunt u het volgende instellenOTEL_RESOURCE_ATTRIBUTES:OTEL_SERVICE_NAME
Als u het service.namespace kenmerk Resource niet instelt, kunt u ook de naam van de cloudrol instellen met alleen de omgevingsvariabele OTEL_SERVICE_NAME of het service.name kenmerk Resource. Als u bijvoorbeeld de naam my-helloworld-service van de cloudrol wilt instellen en het cloudrolexemplaren my-instancewilt instellen op, kunt u het volgende instellenOTEL_RESOURCE_ATTRIBUTES:OTEL_SERVICE_NAME
Mogelijk wilt u steekproeven inschakelen om uw gegevensopnamevolume te verminderen, waardoor uw kosten worden verminderd. Azure Monitor biedt een aangepaste sampler met vaste frequentie waarmee gebeurtenissen worden gevuld met een steekproefverhouding, waarnaar Application Insights wordt geconverteerd ItemCount. De sampler met vaste frequentie zorgt voor nauwkeurige ervaringen en het aantal gebeurtenissen. De sampler is ontworpen om uw traceringen over services te behouden en is interoperabel met oudere Application Insights Software Development Kits (SDK's). Zie Meer informatie over steekproeven voor meer informatie.
Notitie
Metrische gegevens en logboeken worden niet beïnvloed door steekproeven.
De sampler verwacht een steekproeffrequentie tussen 0 en 1. Een snelheid van 0,1 betekent dat ongeveer 10% van uw traceringen worden verzonden.
// 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();
De sampler verwacht een steekproeffrequentie tussen 0 en 1. Een snelheid van 0,1 betekent dat ongeveer 10% van uw traceringen worden verzonden.
// 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;
});
Vanaf 3.4.0 is een steekproef met frequentielimiet beschikbaar en is nu de standaardinstelling. Zie Java-steekproeven voor meer informatie over steekproeven.
Raadpleeg de documentatie over Quarkus OpenTelemetry voor systeemeigen toepassingen van Quarkus.
De sampler verwacht een steekproeffrequentie tussen 0 en 1. Een snelheid van 0,1 betekent dat ongeveer 10% van uw traceringen worden verzonden.
// 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);
De configure_azure_monitor() functie maakt automatisch gebruik van ApplicationInsightsSampler voor compatibiliteit met Application Insights SDK's en om uw telemetrie te samplen. De OTEL_TRACES_SAMPLER_ARG omgevingsvariabele kan worden gebruikt om de steekproeffrequentie op te geven, met een geldig bereik van 0 tot 1, waarbij 0 0 is en 1 100%.
Een waarde van 0,1 betekent bijvoorbeeld dat 10% van uw traceringen wordt verzonden.
export OTEL_TRACES_SAMPLER_ARG=0.1
Tip
Wanneer u steekproeven met vaste snelheid/percentage gebruikt en u niet zeker weet wat u moet instellen voor de steekproeffrequentie, begint u bij 5% (bijvoorbeeld 0,05 steekproefverhouding) en past u de snelheid aan op basis van de nauwkeurigheid van de bewerkingen die worden weergegeven in de fouten en prestatievensters. Een hogere snelheid resulteert in het algemeen in een hogere nauwkeurigheid. Elke steekproef heeft echter invloed op de nauwkeurigheid, dus we raden u aan waarschuwingen te geven over metrische gegevens van OpenTelemetry, die niet worden beïnvloed door steekproeven.
Live metrische gegevens
Live metrics biedt een realtime analysedashboard voor inzicht in de activiteit en prestaties van toepassingen.
Raadpleeg de Aanvullende voorwaarden voor Microsoft Azure-previews voor juridische voorwaarden die van toepassing zijn op Azure-functies die in bèta of preview zijn of die anders nog niet algemeen beschikbaar zijn.
Deze functie is standaard ingeschakeld.
Gebruikers kunnen Live Metrics uitschakelen bij het configureren van de distributie.
builder.Services.AddOpenTelemetry().UseAzureMonitor(options => {
// Disable the Live Metrics feature.
options.EnableLiveMetrics = false;
});
Deze functie is niet beschikbaar in de Azure Monitor .NET-exporteur.
De live metrics-ervaring is standaard ingeschakeld.
De Live Metrics zijn momenteel niet beschikbaar voor systeemeigen GraalVM-toepassingen.
Belangrijk
Raadpleeg de Aanvullende voorwaarden voor Microsoft Azure-previews voor juridische voorwaarden die van toepassing zijn op Azure-functies die in bèta of preview zijn of die anders nog niet algemeen beschikbaar zijn.
Gebruikers kunnen Live Metrics in- of uitschakelen bij het configureren van de distributie met behulp van de enableLiveMetrics eigenschap.
Raadpleeg de Aanvullende voorwaarden voor Microsoft Azure-previews voor juridische voorwaarden die van toepassing zijn op Azure-functies die in bèta of preview zijn of die anders nog niet algemeen beschikbaar zijn.
U kunt live metrische gegevens als volgt inschakelen met behulp van de Azure Monitor OpenTelemetry Distro voor Python:
Microsoft Entra ID-verificatie (voorheen Azure AD) inschakelen
U kunt Microsoft Entra-verificatie inschakelen voor een veiligere verbinding met Azure, waardoor onbevoegde telemetrie niet kan worden opgenomen in uw abonnement.
// 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();
We ondersteunen de referentieklassen van Azure Identity.
We raden u aan DefaultAzureCredential voor lokale ontwikkeling.
U wordt aangeraden ManagedIdentityCredential voor door het systeem toegewezen en door de gebruiker toegewezen beheerde identiteiten.
Gebruik voor door het systeem toegewezen de standaardconstructor zonder parameters.
Geef voor door de gebruiker toegewezen de client-id op voor de constructor.
We raden u aan ClientSecretCredential voor service-principals.
Geef de tenant-id, client-id en clientgeheim op voor de constructor.
// 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;
});
});
});
Microsoft Entra ID-verificatie is niet beschikbaar voor GraalVM Native-toepassingen.
We ondersteunen de referentieklassen van Azure Identity.
// 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(),
)
Offlineopslag en automatische nieuwe pogingen
Om de betrouwbaarheid en tolerantie te verbeteren, schrijven aanbiedingen op basis van Azure Monitor OpenTelemetry standaard naar offline/lokale opslag wanneer een toepassing de verbinding met Application Insights verliest. Hiermee wordt de telemetrie van de toepassing op schijf opgeslagen en wordt er periodiek gedurende maximaal 48 uur opnieuw naartoe verzonden. In toepassingen met hoge belasting wordt telemetrie af en toe om twee redenen verwijderd. Ten eerste, wanneer de toegestane tijd wordt overschreden en ten tweede, wanneer de maximale bestandsgrootte wordt overschreden of de SDK geen mogelijkheid heeft om het bestand te wissen. Als we een keuze moeten maken, slaat het product recentere gebeurtenissen op boven oude gebeurtenissen. Meer informatie
Het Distro-pakket bevat de AzureMonitorExporter, die standaard een van de volgende locaties gebruikt voor offlineopslag (vermeld in volgorde van prioriteit):
Windows
%LOCALAPPDATA%\Microsoft\AzureMonitor
%TEMP%\Microsoft\AzureMonitor
Niet-Windows
%TMPDIR%/Microsoft/AzureMonitor
/var/tmp/Microsoft/AzureMonitor
/tmp/Microsoft/AzureMonitor
Als u de standaardmap wilt overschrijven, moet u instellen 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();
Als u deze functie wilt uitschakelen, moet u instellen AzureMonitorOptions.DisableOfflineStorage = true.
Standaard gebruikt AzureMonitorExporter een van de volgende locaties voor offlineopslag (vermeld in volgorde van prioriteit):
Windows
%LOCALAPPDATA%\Microsoft\AzureMonitor
%TEMP%\Microsoft\AzureMonitor
Niet-Windows
%TMPDIR%/Microsoft/AzureMonitor
/var/tmp/Microsoft/AzureMonitor
/tmp/Microsoft/AzureMonitor
Als u de standaardmap wilt overschrijven, moet u instellen 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";
});
});
});
Als u deze functie wilt uitschakelen, moet u instellen AzureMonitorExporterOptions.DisableOfflineStorage = true.
Het configureren van offlineopslag en automatische nieuwe pogingen is niet beschikbaar in Java.
Zie Configuratieopties voor een volledige lijst met beschikbare configuraties.
Het configureren van offlineopslag en automatische nieuwe pogingen is niet beschikbaar in systeemeigen Java-installatiekopietoepassingen.
AzureMonitorExporter gebruikt standaard een van de volgende locaties voor offlineopslag.
Windows
%TEMP%\Microsoft\AzureMonitor
Niet-Windows
%TMPDIR%/Microsoft/AzureMonitor
/var/tmp/Microsoft/AzureMonitor
Als u de standaardmap wilt overschrijven, moet u instellen storageDirectory.
Voorbeeld:
// 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);
Als u deze functie wilt uitschakelen, moet u instellen disableOfflineStorage = true.
Azure Monitor-exporteurs gebruiken standaard het volgende pad:
Als u de standaardmap wilt overschrijven, moet u instellen storage_directory op de gewenste map.
Voorbeeld:
...
# 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",
)
...
Als u deze functie wilt uitschakelen, moet u instellen op disable_offline_storageTrue. Standaard ingesteld op False.
Voorbeeld:
...
# 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,
)
...
De OTLP-exporteur inschakelen
Mogelijk wilt u de OTLP-exporteur (OpenTelemetry Protocol) naast de Azure Monitor-exporteur inschakelen om uw telemetrie naar twee locaties te verzenden.
Notitie
De OTLP-exporteur wordt alleen voor het gemak weergegeven. We ondersteunen de OTLP-exporteur of onderdelen of ervaringen van derden daar niet officieel mee.
Voeg het volgende codefragment toe. In dit voorbeeld wordt ervan uitgegaan dat u een OpenTelemetry Collector hebt met een OTLP-ontvanger die wordt uitgevoerd. Zie het voorbeeld op GitHub voor meer informatie.
// 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();
Voeg het volgende codefragment toe. In dit voorbeeld wordt ervan uitgegaan dat u een OpenTelemetry Collector hebt met een OTLP-ontvanger die wordt uitgevoerd. Zie het voorbeeld op GitHub voor meer informatie.
// 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();
Voeg het volgende codefragment toe. In dit voorbeeld wordt ervan uitgegaan dat u een OpenTelemetry Collector hebt met een OTLP-ontvanger die wordt uitgevoerd. Zie het voorbeeld op GitHub voor meer informatie.
// 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);
Voeg het volgende codefragment toe. In dit voorbeeld wordt ervan uitgegaan dat u een OpenTelemetry Collector hebt met een OTLP-ontvanger die wordt uitgevoerd. Zie deze LEESMIJ voor meer informatie.
# 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!")
OpenTelemetry-configuraties
De volgende OpenTelemetry-configuraties zijn toegankelijk via omgevingsvariabelen tijdens het gebruik van de Azure Monitor OpenTelemetry Distros.
Stel deze in op de verbindingsreeks voor uw Application Insights-resource.
APPLICATIONINSIGHTS_STATSBEAT_DISABLED
Stel deze in om ervoor te true kiezen om geen interne verzameling met metrische gegevens te verzamelen.
OTEL_RESOURCE_ATTRIBUTES
Sleutel-waardeparen die moeten worden gebruikt als resourcekenmerken. Zie de resource-SDK-specificatie voor meer informatie over resourcekenmerken.
OTEL_SERVICE_NAME
Hiermee stelt u de waarde van het service.name resourcekenmerk in. Als service.name er ook in wordt opgegeven OTEL_RESOURCE_ATTRIBUTES, heeft dit OTEL_SERVICE_NAME voorrang.
Omgevingsvariabele
Beschrijving
APPLICATIONINSIGHTS_CONNECTION_STRING
Stel deze in op de verbindingsreeks voor uw Application Insights-resource.
APPLICATIONINSIGHTS_STATSBEAT_DISABLED
Stel deze in om ervoor te true kiezen om geen interne verzameling met metrische gegevens te verzamelen.
OTEL_RESOURCE_ATTRIBUTES
Sleutel-waardeparen die moeten worden gebruikt als resourcekenmerken. Zie de resource-SDK-specificatie voor meer informatie over resourcekenmerken.
OTEL_SERVICE_NAME
Hiermee stelt u de waarde van het service.name resourcekenmerk in. Als service.name er ook in wordt opgegeven OTEL_RESOURCE_ATTRIBUTES, heeft dit OTEL_SERVICE_NAME voorrang.
In deze sectie vindt u antwoorden op veelgestelde vragen.
Wat is OpenTelemetry?
Het is een nieuwe opensource-standaard voor waarneembaarheid. Meer informatie vindt u op OpenTelemetry.
Waarom investeert Microsoft Azure Monitor in OpenTelemetry?
Microsoft is een van de grootste bijdragers aan OpenTelemetry.
De belangrijkste waardeproposities van OpenTelemetry zijn dat het leverancierneutraal is en consistente API's/SDK's in verschillende talen biedt.
In de loop van de tijd denken we dat OpenTelemetry azure Monitor-klanten in staat stelt toepassingen te observeren die zijn geschreven in talen die buiten onze ondersteunde talen zijn geschreven. Het breidt ook de typen gegevens uit die u kunt verzamelen via een uitgebreide set instrumentatiebibliotheken. Bovendien zijn OpenTelemetry Software Development Kits (SDK's) doorgaans beter presterend dan hun voorgangers, de Application Insights SDK's.
Ten slotte sluit OpenTelemetry aan bij de strategie van Microsoft om open source te omarmen.
U kunt het beschouwen als een dunne wrapper die alle OpenTelemetry-onderdelen bundelt voor een eersteklas ervaring in Azure. Deze wrapper wordt ook wel een distributie genoemd in OpenTelemetry.
Waarom zou ik de 'Azure Monitor OpenTelemetry Distro' gebruiken?
Er zijn verschillende voordelen voor het gebruik van de Azure Monitor OpenTelemetry Distro over systeemeigen OpenTelemetry van de community:
Vermindert de activeringsinspanning
Ondersteund door Microsoft
Brengt azure-specifieke functies, zoals:
Steekproeven die compatibel zijn met klassieke Application Insights SDK's
In de geest van OpenTelemetry hebben we de distributie ontworpen om open en uitbreidbaar te zijn. U kunt bijvoorbeeld het volgende toevoegen:
Een OTLP-exporteur (OpenTelemetry Protocol) en tegelijkertijd naar een tweede bestemming verzenden
Andere instrumentatiebibliotheken die niet zijn opgenomen in de distributie
Omdat de distributie een OpenTelemetry-distributie biedt, ondersteunt de distro alles wat wordt ondersteund door OpenTelemetry. U kunt bijvoorbeeld meer telemetrieprocessors, exporteurs of instrumentatiebibliotheken toevoegen als OpenTelemetry deze ondersteunt.
Notitie
De distributie stelt de sampler in op een aangepaste, vaste-rate sampler voor Application Insights. U kunt dit wijzigen in een andere sampler, maar als u dit doet, kunnen sommige van de meegeleverde mogelijkheden van distro worden uitgeschakeld.
Zie de sectie Sampling inschakelen van Azure Monitor OpenTelemetry voor meer informatie over de ondersteunde sampler.
Voor talen zonder een ondersteunde zelfstandige OpenTelemetry-exporteur is Azure Monitor OpenTelemetry Distro de enige ondersteunde manier om OpenTelemetry te gebruiken met Azure Monitor. Voor talen met een ondersteunde zelfstandige OpenTelemetry-exporteur hebt u de mogelijkheid om de Azure Monitor OpenTelemetry Distro of de juiste zelfstandige OpenTelemetry-exporteur te gebruiken, afhankelijk van uw telemetriescenario. Zie Wanneer moet ik de Azure Monitor OpenTelemetry-exporteur gebruiken? voor meer informatie.
Hoe kan ik de Azure Monitor OpenTelemetry Distro testen?
Het gebruik van OpenTelemetry voorkomt nu dat ze op een later tijdstip moeten worden gemigreerd.
Wanneer moet ik de Azure Monitor OpenTelemetry-exporteur gebruiken?
Voor ASP.NET Core, Java, Node.js en Python wordt u aangeraden de Azure Monitor OpenTelemetry Distro te gebruiken. Het is één regel code om aan de slag te gaan.
Voor alle andere .NET-scenario's, waaronder klassieke ASP.NET, console-apps, Windows Forms (WinForms), enzovoort, raden we u aan om de .NET Azure Monitor OpenTelemetry-exporteur te gebruiken: Azure.Monitor.OpenTelemetry.Exporter.
Voor complexere Python-telemetriescenario's waarvoor geavanceerde configuratie is vereist, raden we u aan de Python Azure Monitor OpenTelemetry Exporter te gebruiken.
Wat is de huidige releasestatus van functies in de Azure Monitor OpenTelemetry Distro?
In de volgende grafiek wordt ondersteuning voor OpenTelemetry-functies voor elke taal uitgesplitst.
❌ Deze functie is niet beschikbaar of is niet van toepassing.
Kan OpenTelemetry worden gebruikt voor webbrowsers?
Ja, maar we raden het niet aan en Azure biedt geen ondersteuning voor het. OpenTelemetry JavaScript is sterk geoptimaliseerd voor Node.js. In plaats daarvan raden we u aan de JavaScript SDK van Application Insights te gebruiken.
Wanneer kunnen we verwachten dat de OpenTelemetry SDK beschikbaar is voor gebruik in webbrowsers?
De OpenTelemetry-web-SDK heeft geen bepaalde beschikbaarheidstijdlijn. We zijn waarschijnlijk enkele jaren verwijderd van een browser-SDK die een levensvatbaar alternatief is voor de Application Insights JavaScript SDK.
Kan ik OpenTelemetry vandaag testen in een webbrowser?
De OpenTelemetry-web-sandbox is een fork die is ontworpen om OpenTelemetry in een browser te laten werken. Het is nog niet mogelijk om telemetrie te verzenden naar Application Insights. De SDK definieert geen algemene clientevenementen.
Wordt Application Insights uitgevoerd naast concurrerende agents zoals AppDynamics, DataDog en NewRelic?
Deze procedure is niet van plan om te testen of te ondersteunen, hoewel met onze distributies u kunt exporteren naar een OTLP-eindpunt naast Azure Monitor tegelijk.
Kan ik preview-functies gebruiken in productieomgevingen?
Sommige klanten gebruiken de OpenTelemetry Collector als een alternatief voor agents, ook al ondersteunt Microsoft nog geen op agents gebaseerde benadering voor toepassingsbewaking. Ondertussen heeft de opensource-community bijgedragen aan een OpenTelemetry Collector Azure Monitor Exporter die sommige klanten gebruiken om gegevens naar Azure Monitor Application Insights te verzenden. Dit wordt niet ondersteund door Microsoft.
Wat is het verschil tussen OpenCensus en OpenTelemetry?
Stap 2: De connectiviteit tussen uw toepassingshost en de opnameservice testen
Application Insights SDK's en agents verzenden telemetrie om opgenomen te worden als REST-aanroepen bij onze opname-eindpunten. Gebruik cURL-opdrachten of onbewerkte REST-aanvragen van PowerShell om de connectiviteit vanaf uw webserver of toepassingshostcomputer te testen op de eindpunten van de opnameservice. Zie Problemen met ontbrekende toepassingstelemetrie in Azure Monitor Application Insights oplossen voor meer informatie.
Bekende problemen
De volgende items zijn bekende problemen voor de Azure Monitor OpenTelemetry Exporters:
De naam van de bewerking ontbreekt in afhankelijkheidstelemetrie. De naam van de ontbrekende bewerking veroorzaakt fouten en heeft een negatieve invloed op de prestatietabbladervaring.
Het apparaatmodel ontbreekt in aanvraag- en afhankelijkheidstelemetrie. Het ontbrekende apparaatmodel heeft negatieve gevolgen voor de cohortanalyse van het apparaat.
Stap 2: De connectiviteit tussen uw toepassingshost en de opnameservice testen
Application Insights SDK's en agents verzenden telemetrie om opgenomen te worden als REST-aanroepen bij onze opname-eindpunten. Gebruik cURL-opdrachten of onbewerkte REST-aanvragen van PowerShell om de connectiviteit vanaf uw webserver of toepassingshostcomputer te testen op de eindpunten van de opnameservice. Zie Problemen met ontbrekende toepassingstelemetrie in Azure Monitor Application Insights oplossen voor meer informatie.
Bekende problemen
De volgende items zijn bekende problemen voor de Azure Monitor OpenTelemetry Exporters:
De naam van de bewerking ontbreekt in afhankelijkheidstelemetrie. De naam van de ontbrekende bewerking veroorzaakt fouten en heeft een negatieve invloed op de prestatietabbladervaring.
Het apparaatmodel ontbreekt in aanvraag- en afhankelijkheidstelemetrie. Het ontbrekende apparaatmodel heeft negatieve gevolgen voor de cohortanalyse van het apparaat.
Stap 2: De connectiviteit tussen uw toepassingshost en de opnameservice testen
Application Insights SDK's en agents verzenden telemetrie om opgenomen te worden als REST-aanroepen bij onze opname-eindpunten. Gebruik cURL-opdrachten of onbewerkte REST-aanvragen van PowerShell om de connectiviteit vanaf uw webserver of toepassingshostcomputer te testen op de eindpunten van de opnameservice. Zie Problemen met ontbrekende toepassingstelemetrie in Azure Monitor Application Insights oplossen voor meer informatie.
Bekende problemen
Als u de Application Insights-clientbibliotheek downloadt voor installatie vanuit een browser, is het gedownloade JAR-bestand soms beschadigd en is het ongeveer de helft van het bronbestand. Als u dit probleem ondervindt, downloadt u het JAR-bestand door de curl - of wget-opdracht uit te voeren, zoals wordt weergegeven in de volgende voorbeeldopdrachtaanroepen:
De voorbeeldopdrachtoproepen zijn van toepassing op Application Insights voor Java-versie 3.4.11. Zie https://github.com/microsoft/ApplicationInsights-Java/releasesvoor meer informatie over het versienummer en het URL-adres van de huidige versie van Application Insights voor Java.
De volgende stappen zijn van toepassing op systeemeigen Spring Boot-toepassingen.
Stap 1: De Versie van OpenTelemetry controleren
Mogelijk ziet u het volgende bericht tijdens het opstarten van de toepassing:
WARN c.a.m.a.s.OpenTelemetryVersionCheckRunner - The OpenTelemetry version is not compatible with the spring-cloud-azure-starter-monitor dependency.
The OpenTelemetry version should be <version>
In dit geval moet u de OpenTelemetry Bills of Materials importeren door de OpenTelemetry-documentatie in de Spring Boot-starter te volgen.
Stap 2: Zelfdiagnose inschakelen
Als iets niet werkt zoals verwacht, kunt u zelfdiagnose inschakelen op het DEBUG niveau om inzichten te krijgen. Hiervoor stelt u het zelfdiagnoseniveau in op ERROR, WARNof DEBUGINFOTRACE met behulp van de APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL omgevingsvariabele.
Als u zelfdiagnose wilt inschakelen op het niveau bij het DEBUG uitvoeren van een Docker-container, voert u de volgende opdracht uit:
docker run -e APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL=DEBUG <image-name>
Notitie
Vervang <image-name> deze door de naam van de Docker-installatiekopieën dienovereenkomstig.
Disclaimerinformatie van derden
De producten van derden die in dit artikel worden vermeld, worden vervaardigd door bedrijven die onafhankelijk zijn van Microsoft. Microsoft verleent dan ook geen enkele garantie, impliciet noch anderszins, omtrent de prestaties of de betrouwbaarheid van deze producten.
Azure Monitor Exporter maakt gebruik van de OpenTelemetry API-logboekregistratie voor interne logboeken. Voer het volgende codefragment uit om de logboekregistratie in te schakelen:
Stap 2: De connectiviteit tussen uw toepassingshost en de opnameservice testen
Application Insights SDK's en agents verzenden telemetrie om opgenomen te worden als REST-aanroepen bij onze opname-eindpunten. Gebruik cURL-opdrachten of onbewerkte REST-aanvragen van PowerShell om de connectiviteit vanaf uw webserver of toepassingshostcomputer te testen op de eindpunten van de opnameservice. Zie Problemen met ontbrekende toepassingstelemetrie in Azure Monitor Application Insights oplossen voor meer informatie.
Bekende problemen
De volgende items zijn bekende problemen voor de Azure Monitor OpenTelemetry Exporters:
De naam van de bewerking ontbreekt in afhankelijkheidstelemetrie. De naam van de ontbrekende bewerking veroorzaakt fouten en heeft een negatieve invloed op de prestatietabbladervaring.
Het apparaatmodel ontbreekt in aanvraag- en afhankelijkheidstelemetrie. Het ontbrekende apparaatmodel heeft negatieve gevolgen voor de cohortanalyse van het apparaat.
De naam van de databaseserver ontbreekt in de naam van de afhankelijkheid. Omdat de naam van de databaseserver niet is opgenomen, aggregeert OpenTelemetry Exporters onjuist tabellen met dezelfde naam op verschillende servers.
De Microsoft Azure Monitor Exporter maakt gebruik van de standaardbibliotheek voor logboekregistratie van Python voor de interne logboekregistratie. Aan de OpenTelemetry-API en logboeken van Azure Monitor Exporter worden een ernstniveau van WARNING of ERROR voor onregelmatige activiteit toegewezen. Het INFO ernstniveau wordt gebruikt voor normale of geslaagde activiteiten.
Standaard stelt de Python-logboekbibliotheek het ernstniveau in op WARNING. Daarom moet u het ernstniveau wijzigen om logboeken onder deze ernst-instelling weer te geven. In de volgende voorbeeldcode ziet u hoe u logboeken van alle ernstniveaus naar de console en een bestand uitvoert:
Stap 2: De connectiviteit tussen uw toepassingshost en de opnameservice testen
Application Insights SDK's en agents verzenden telemetrie om opgenomen te worden als REST-aanroepen bij onze opname-eindpunten. Gebruik cURL-opdrachten of onbewerkte REST-aanvragen van PowerShell om de connectiviteit vanaf uw webserver of toepassingshostcomputer te testen op de eindpunten van de opnameservice. Zie Problemen met ontbrekende toepassingstelemetrie in Azure Monitor Application Insights oplossen voor meer informatie.
Stap 3: Dubbele telemetrie vermijden
Dubbele telemetrie wordt vaak veroorzaakt als u meerdere exemplaren van processors of exporteurs maakt. Zorg ervoor dat u slechts één exporteur en processor tegelijk uitvoert voor elke telemetriepijler (logboeken, metrische gegevens en gedistribueerde tracering).
In de volgende secties worden scenario's beschreven die dubbele telemetrie kunnen veroorzaken.
Dubbele traceringslogboeken in Azure Functions
Als u een paar vermeldingen ziet voor elk traceringslogboek in Application Insights, hebt u waarschijnlijk de volgende typen instrumentatie voor logboekregistratie ingeschakeld:
De systeemeigen instrumentatie voor logboekregistratie in Azure Functions
De azure-monitor-opentelemetry instrumentatie van logboekregistratie binnen de distributie
Als u duplicatie wilt voorkomen, kunt u de logboekregistratie van de distributie uitschakelen, maar laat u de systeemeigen instrumentatie voor logboekregistratie in Azure Functions ingeschakeld. Hiervoor stelt u de OTEL_LOGS_EXPORTER omgevingsvariabele in op None.
Dubbele telemetrie in AlwaysOn Azure Functions
Als de instelling AlwaysOn in Azure Functions is ingesteld op Aan, houdt Azure Functions bepaalde processen op de achtergrond actief nadat elke uitvoering is voltooid. Stel dat u een timerfunctie van vijf minuten hebt die elke keer wordt aangeroepen configure_azure_monitor . Na 20 minuten hebt u mogelijk vier metrische exporteurs die tegelijkertijd worden uitgevoerd. Deze situatie kan de bron zijn van uw telemetriegegevens voor dubbele metrische gegevens.
In dit geval stelt u de instelling AlwaysOn in op Uit of sluit u de providers handmatig af tussen elke configure_azure_monitor aanroep. Als u elke provider wilt afsluiten, voert u afsluitoproepen uit voor elke huidige meter, tracer en logboekregistratieprovider, zoals wordt weergegeven in de volgende code:
Azure Workbooks en Jupyter Notebooks kunnen de exportprocessen op de achtergrond blijven uitvoeren. Als u dubbele telemetrie wilt voorkomen, wist u de cache voordat u meer aanroepen doet configure_azure_monitor.
Stap 4: Zorg ervoor dat flask-aanvraaggegevens worden verzameld
Als u een Flask-toepassing implementeert, kunt u mogelijk geen tabelgegevens van Application Insights verzamelen terwijl u de Azure Monitor OpenTelemetry Distro-clientbibliotheek voor Python gebruikt. Dit probleem kan optreden als u uw import declaraties niet correct structureerd. Mogelijk importeert u het flask.Flask webtoepassingsframework voordat u de configure_azure_monitor functie aanroept om de Flask-bibliotheek te instrumenteren. De volgende code instrumenteer bijvoorbeeld de Flask-app niet:
from azure.monitor.opentelemetry import configure_azure_monitor
from flask import Flask
configure_azure_monitor()
app = Flask(__name__)
In plaats daarvan raden we u aan om de flask module als geheel te importeren en vervolgens aan te roepen configure_azure_monitor om OpenTelemetry te configureren voor gebruik van Azure Monitor voordat u toegang krijgt tot flask.Flask:
from azure.monitor.opentelemetry import configure_azure_monitor
import flask
configure_azure_monitor()
app = flask.Flask(__name__)
U kunt ook bellen configure_azure_monitor voordat u importeert flask.Flask:
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor()
from flask import Flask
app = Flask(__name__)
Ondersteuning
Selecteer een tabblad voor de taal van uw keuze om ondersteuningsopties te ontdekken.
Binnenkort: Gedurende 2024 worden GitHub Issues uitgefaseerd als het feedbackmechanisme voor inhoud. Dit wordt vervangen door een nieuw feedbacksysteem. Ga voor meer informatie naar: https://aka.ms/ContentUserFeedback.