Gebruik een van de volgende drie manieren om de verbindingsreeks te configureren:
Toevoegen UseAzureMonitor() aan uw program.cs bestand:
var builder = WebApplication.CreateBuilder(args);
// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor(options => {
options.ConnectionString = "<Your Connection String>";
});
var app = builder.Build();
app.Run();
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(logging =>
{
logging.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(logging =>
{
// Set ResourceBuilder on the Logging config.
logging.SetResourceBuilder(resourceBuilder);
logging.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(options =>
{
// Set the sampling ratio to 10%. This means that 10% of all traces will be sampled and sent to Azure Monitor.
options.SamplingRatio = 0.1F;
});
// Build the ASP.NET Core web application.
var app = builder.Build();
// Start the ASP.NET Core web application.
app.Run();
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.
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 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(logging =>
{
logging.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: {
connectionString:
process.env["APPLICATIONINSIGHTS_CONNECTION_STRING"] || "<your connection string>",
credential: credential
}
};
// Enable Azure Monitor integration using the useAzureMonitor function and the AzureMonitorOpenTelemetryOptions object.
useAzureMonitor(options);
Azure Monitor OpenTelemetry Distro voor Python biedt ondersteuning voor 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 constructor op.
We raden u aan ClientSecretCredential voor service-principals.
Geef de tenant-id, client-id en clientgeheim op voor de constructor.
Als u ManagedIdentityCredential
# 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
from opentelemetry import trace
# Configure the Distro to authenticate with Azure Monitor using a managed identity credential.
credential = ManagedIdentityCredential(client_id="<client_id>")
configure_azure_monitor(
connection_string="your-connection-string",
credential=credential,
)
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("hello with aad managed identity"):
print("Hello, World!")
Als u ClientSecretCredential
# Import the `ClientSecretCredential` class from the `azure.identity` package.
from azure.identity import ClientSecretCredential
# Import the `configure_azure_monitor()` function from the `azure.monitor.opentelemetry` package.
from azure.monitor.opentelemetry import configure_azure_monitor
from opentelemetry import trace
# Configure the Distro to authenticate with Azure Monitor using a client secret credential.
credential = ClientSecretCredential(
tenant_id="<tenant_id",
client_id="<client_id>",
client_secret="<client_secret>",
)
configure_azure_monitor(
connection_string="your-connection-string",
credential=credential,
)
with tracer.start_as_current_span("hello with aad client secret identity"):
print("Hello, World!")
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(logging =>
{
logging.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.
Als u url-queryreeksen wilt redacteren, schakelt u de verzameling van queryreeksen uit. We raden deze instelling aan als u Azure Storage aanroept met behulp van een SAS-token.
Als u dit gedrag wilt wijzigen, moet u een omgevingsvariabele instellen op 'true' of 'false'.
ASP.NET Core Instrumentation: OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION Query String Redaction is standaard uitgeschakeld. Als u deze omgevingsvariabele wilt inschakelen, stelt u deze omgevingsvariabele in op 'false'.
Http Client Instrumentation: OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION Query String Redaction is standaard uitgeschakeld. Als u deze omgevingsvariabele wilt inschakelen, stelt u deze omgevingsvariabele in op 'false'.
Wanneer u azure.Monitor.OpenTelemetry.Exporter gebruikt, moet u handmatig de ASP.NET Core- of HttpClient Instrumentaion-bibliotheken opnemen in uw OpenTelemetry-configuratie.
Voor deze instrumentatiebibliotheken is QueryString Redaction standaard ingeschakeld.
Als u dit gedrag wilt wijzigen, moet u een omgevingsvariabele instellen op 'true' of 'false'.
ASP.NET Core Instrumentation: OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION Redaction van queryreeks is standaard ingeschakeld. Als u deze omgevingsvariabele wilt uitschakelen, stelt u deze omgevingsvariabele in op 'true'.
Http Client Instrumentation: OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION Query String Redaction is standaard ingeschakeld. Als u deze omgevingsvariabele wilt uitschakelen, stelt u deze omgevingsvariabele in op 'true'.
Voeg het volgende toe aan het applicationinsights.json configuratiebestand:
We werken actief in de OpenTelemetry-community om ondersteuning te bieden voor redaction.
Wanneer u het Azure Monitor OpenTelemetry-distributiepakket gebruikt, kunnen queryreeksen worden bewerkt door een spanprocessor te maken en toe te passen op de distributieconfiguratie.