Utilisez l’une des trois méthodes suivantes pour configurer la chaîne de connexion :
Ajoutez UseAzureMonitor() à votre fichier program.cs :
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();
Si vous définissez la chaîne de connexion à plusieurs emplacements, nous respectons la précédence suivante :
Code
Variable d’environnement
Fichier de configuration
Utilisez l’une des deux méthodes suivantes pour configurer la chaîne de connexion :
Ajoutez l’exportateur Azure Monitor à chaque signal OpenTelemetry au démarrage de l’application.
// 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);
Utilisez l’une des deux méthodes suivantes pour configurer la chaîne de connexion :
# 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>",
)
Définir le nom du rôle cloud et l’instance de rôle cloud
Pour les langues prises en charge, Azure Monitor OpenTelemetry Distro détecte automatiquement le contexte de ressource et fournit des valeurs par défaut pour les propriétés Nom de rôle cloud et Instance de rôle cloud de votre composant. Toutefois, vous pouvez remplacer les valeurs par défaut par un élément logique pour votre équipe. La valeur du nom du rôle cloud s’affiche sur la cartographie d’applications en tant que nom sous un nœud.
Définissez le nom du rôle cloud et l’instance de rôle cloud via les attributs Ressource. Le nom du rôle cloud utilise les attributs service.namespace et service.name, mais il retourne à la valeur service.name si service.namespace n’est pas défini. L’instance de rôle cloud utilise la valeur d’attribut service.instance.id. Pour plus d’informations sur les attributs standard pour les ressources, consultez Conventions sémantiques OpenTelemetry.
// 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();
Définissez le nom du rôle cloud et l’instance de rôle cloud via les attributs Ressource. Le nom du rôle cloud utilise les attributs service.namespace et service.name, mais il retourne à la valeur service.name si service.namespace n’est pas défini. L’instance de rôle cloud utilise la valeur d’attribut service.instance.id. Pour plus d’informations sur les attributs standard pour les ressources, consultez Conventions sémantiques OpenTelemetry.
// 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();
});
});
Utiliser le spring.application.name pour des applications image natives Spring Boot
Utiliser le quarkus.application.name pour les applications d’image native de Quarkus
Définissez le nom du rôle cloud et l’instance de rôle cloud via les attributs Ressource. Le nom du rôle cloud utilise les attributs service.namespace et service.name, mais il retourne à la valeur service.name si service.namespace n’est pas défini. L’instance de rôle cloud utilise la valeur d’attribut service.instance.id. Pour plus d’informations sur les attributs standard pour les ressources, consultez Conventions sémantiques OpenTelemetry.
// 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);
Définissez le nom du rôle cloud et l’instance de rôle cloud via les attributs Ressource. Le nom du rôle cloud utilise les attributs service.namespace et service.name, mais il retourne à la valeur service.name si service.namespace n’est pas défini. L’instance de rôle cloud utilise la valeur d’attribut service.instance.id. Pour plus d’informations sur les attributs standard pour les ressources, consultez Conventions sémantiques OpenTelemetry.
Définissez les attributs des ressources à l’aide des variables d’environnement OTEL_RESOURCE_ATTRIBUTES et/ou OTEL_SERVICE_NAME. OTEL_RESOURCE_ATTRIBUTES prend des séries de paires clé-valeur séparées par des virgules. Par exemple, pour définir le nom du rôle cloud sur my-namespace.my-helloworld-service et définir l’instance de rôle cloud sur my-instance, vous pouvez définir OTEL_RESOURCE_ATTRIBUTES et OTEL_SERVICE_NAME comme suit :
Si vous ne définissez pas l’attribut de la ressource service.namespace, vous pouvez également définir le nom du rôle cloud avec uniquement la variable d’environnement OTEL_SERVICE_NAME ou l’attribut de la ressource service.name. Par exemple, pour définir le nom du rôle cloud sur my-helloworld-service et définir l’instance de rôle cloud sur my-instance, vous pouvez définir OTEL_RESOURCE_ATTRIBUTES et OTEL_SERVICE_NAME comme suit :
Vous pouvez activer l’échantillonnage pour réduire votre volume d’ingestion de données, ce qui réduit vos coûts. Azure Monitor fournit un échantillonneur à taux fixe personnalisé qui remplit les événements avec un « ratio d’échantillonnage » qu’Application Insights convertit en ItemCount. L’échantillonneur à taux fixe garantit des expériences et des comptes d’événements précis. L’échantillonneur est conçu pour préserver vos traces entre les services, et il est interopérable avec les anciens Kits de développement logiciel (SDK) d’Application Insights. Pour plus d’informations, consultez En savoir plus sur l’échantillonnage.
Notes
Les métriques et journaux ne sont pas affectés par l’échantillonnage.
L’échantillonneur s’attend à un taux d’échantillonnage compris entre 0 et 1 inclus. Un taux de 0,1 signifie qu’environ 10 % de vos traces sont envoyées.
// 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();
L’échantillonneur s’attend à un taux d’échantillonnage compris entre 0 et 1 inclus. Un taux de 0,1 signifie qu’environ 10 % de vos traces sont envoyées.
// 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;
});
À partir de la version 3.4.0, l’échantillonnage à fréquence limitée est disponible et constitue désormais le réglage par défaut. Pour plus d’informations sur l’échantillonnage, consultez Échantillonnage de Java.
L’échantillonneur s’attend à un taux d’échantillonnage compris entre 0 et 1 inclus. Un taux de 0,1 signifie qu’environ 10 % de vos traces sont envoyées.
// 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);
La fonction configure_azure_monitor() utilise automatiquement ApplicationInsightsSampler pour assurer la compatibilité avec les kits de développement logiciel (SDK) Application Insights et pour échantillonner vos données de télémétrie. La variable d’environnement OTEL_TRACES_SAMPLER_ARG peut servir à spécifier le taux d’échantillonnage, avec une plage valide de 0 à 1, dans laquelle 0 est 0 % et 1 est 100 %.
Une valeur de 0,1 signifie par exemple que 10 % de vos traces sont envoyées.
export OTEL_TRACES_SAMPLER_ARG=0.1
Conseil
Lorsque vous utilisez un échantillonnage à taux/pourcentage fixe et que vous ne savez pas quelle valeur donner au taux d’échantillonnage, commencez à 5 % (c’est-à-dire 0,05 du taux d’échantillonnage) et ajustez le taux en fonction de la justesse des opérations affichées dans les panneaux d’échecs et de performances. Un taux plus élevé entraîne généralement une plus grande précision. Toutefois, l’échantillonnage ANY affecte la précision. Nous vous recommandons donc de générer des alertes sur les métriques OpenTelemetry, lesquelles ne sont pas affectées par l’échantillonnage.
Métriques temps réel
Mesures actives : fournissent un tableau de bord d’analyse en temps réel pour obtenir un aperçu de l’activité et de la performance de l’application.
Les utilisateurs peuvent désactiver les mesures actives lors de la configuration de la distribution.
builder.Services.AddOpenTelemetry().UseAzureMonitor(options => {
// Disable the Live Metrics feature.
options.EnableLiveMetrics = false;
});
Cette fonctionnalité n’est pas disponible dans l’exportateur .NET Azure Monitor.
Remarque
Nous recommandons Azure Monitor OpenTelemetry Exporter, pour la console et les applications de service Worker, qui n’inclut pas les métriques en direct.
L’expérience de mesures actives est activée par défaut.
Les utilisateurs peuvent activer/désactiver les mesures actives lors de la configuration de la distribution à l’aide de la propriété enableLiveMetrics.
Activer l’authentification Microsoft Entra ID (anciennement Azure AD)
Vous pouvez activer l’authentification Microsoft Entra pour une connexion plus sécurisée à Azure, ce qui empêche l’ingestion de données de télémétrie non autorisées dans votre abonnement.
Fournissez la classe d’informations d’identification souhaitée :
// 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();
Nous prenons en charge les classes d’informations d’identification fournies par Identité Azure.
Nous vous recommandons DefaultAzureCredential pour le développement local.
Nous vous recommandons ManagedIdentityCredential pour les identités managées attribuées par le système et par l'utilisateur.
Pour l’affectation par le système, utilisez le constructeur par défaut sans paramètres.
Pour la valeur assignée à l’utilisateur, fournissez l’ID client au constructeur.
Nous vous recommandons ClientSecretCredential pour les principaux de service.
Indiquez l’ID de locataire, l’ID client et la clé secrète client au constructeur.
Fournissez la classe d’informations d’identification souhaitée :
// 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;
});
});
});
L’authentification Microsoft Entra ID n’est pas disponible pour les applications natives GraalVM.
Nous prenons en charge les classes d’informations d’identification fournies par Identité Azure.
// 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 pour Python prend en charge les classes d’informations d’identification fournies par l’identité Azure.
Nous vous recommandons DefaultAzureCredential pour le développement local.
Nous vous recommandons ManagedIdentityCredential pour les identités managées attribuées par le système et par l'utilisateur.
Pour l’affectation par le système, utilisez le constructeur par défaut sans paramètres.
Pour la valeur assignée à l’utilisateur, fournissez le client_id au constructeur.
Nous vous recommandons ClientSecretCredential pour les principaux de service.
Indiquez l’ID de locataire, l’ID client et la clé secrète client au constructeur.
Si vous utilisez 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!")
Si vous utilisez 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!")
Stockage hors connexion et nouvelles tentatives automatiques
Pour améliorer la fiabilité et la résilience, les offres Azure Monitor basées sur OpenTelemetry écrivent dans un stockage hors connexion/local par défaut lorsqu’une application perd sa connexion avec Application Insights. Il enregistre la télémétrie de l’application pendant 48 heures et tente régulièrement de l’envoyer à nouveau. Dans les applications à charge élevée, la télémétrie est parfois supprimée pour deux raisons. Tout d’abord, lorsque la durée autorisée est dépassée, et ensuite, lorsque la taille maximale du fichier est dépassée ou que le kit de développement logiciel (SDK) n’a pas la possibilité d’effacer le fichier. Si nous devons choisir, le produit enregistre les événements les plus récents sur les anciens. En savoir plus
Le package Distro inclus AzureMonitorExporter qui utilise l’un des emplacements suivants par défaut pour le stockage hors connexion (répertorié dans l’ordre de priorité) :
Windows
%LOCALAPPDATA%\Microsoft\AzureMonitor
%TEMP%\Microsoft\AzureMonitor
Non-Windows
%TMPDIR%/Microsoft/AzureMonitor
/var/tmp/Microsoft/AzureMonitor
/tmp/Microsoft/AzureMonitor
Pour remplacer le répertoire par défaut, vous devez définir 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();
Pour désactiver cette fonctionnalité, vous devez définir AzureMonitorOptions.DisableOfflineStorage = true.
Par défaut, AzureMonitorExporter utilise l’un des emplacements suivants pour le stockage hors connexion (répertorié dans l’ordre de priorité) :
Windows
%LOCALAPPDATA%\Microsoft\AzureMonitor
%TEMP%\Microsoft\AzureMonitor
Non-Windows
%TMPDIR%/Microsoft/AzureMonitor
/var/tmp/Microsoft/AzureMonitor
/tmp/Microsoft/AzureMonitor
Pour remplacer le répertoire par défaut, vous devez définir 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";
});
});
});
Pour désactiver cette fonctionnalité, vous devez définir AzureMonitorExporterOptions.DisableOfflineStorage = true.
La configuration du stockage hors connexion et des nouvelles tentatives automatiques n’est pas disponible dans Java.
Pour obtenir la liste complète des configurations disponibles, consultez Options de configuration.
La configuration du stockage hors connexion et des nouvelles tentatives automatiques n’est pas disponible dans les applications image natives Java.
Par défaut, AzureMonitorExporter utilise l’un des emplacements suivants pour le stockage hors connexion.
Windows
%TEMP%\Microsoft\AzureMonitor
Non-Windows
%TMPDIR%/Microsoft/AzureMonitor
/var/tmp/Microsoft/AzureMonitor
Pour remplacer le répertoire par défaut, vous devez définir storageDirectory.
Par exemple :
// 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);
Pour désactiver cette fonctionnalité, vous devez définir disableOfflineStorage = true.
Par défaut, les exportateurs Azure Monitor utilisent le chemin d’accès suivant :
Pour remplacer le répertoire par défaut, vous devez définir storage_directory sur le répertoire souhaité.
Par exemple :
...
# 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",
)
...
Pour désactiver cette fonctionnalité, vous devez définir disable_offline_storage sur True. La valeur par défaut est False.
Par exemple :
...
# 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,
)
...
Activer l’exportateur OTLP
Vous pouvez activer OpenTelemetry Protocol (OTLP) Exporter en plus du Azure Monitor Exporter pour envoyer vos données de télémétrie à deux emplacements.
Notes
OTLP Exporter est illustré pour des raisons pratiques uniquement. Nous ne prenons pas officiellement en charge OTLP Exporter ni les composants ou les expériences tierces qui en découlent.
Ajoutez l’extrait de code suivant : Cet exemple suppose que vous disposez d’un OpenTelemetry Collector avec un récepteur OTLP en cours d’exécution. Pour plus d’informations, consultez l' exemple relatif à GitHub.
// 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();
Ajoutez l’extrait de code suivant : Cet exemple suppose que vous disposez d’un OpenTelemetry Collector avec un récepteur OTLP en cours d’exécution. Pour plus d’informations, consultez l' exemple relatif à GitHub.
// 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();
Vous pouvez activer l’exportateur OpenTelemetry Protocol (OTLP), en plus de l’exportateur Azure Monitor, pour envoyer vos données de télémétrie à deux emplacements.
Ajoutez l’extrait de code suivant : Cet exemple suppose que vous disposez d’un OpenTelemetry Collector avec un récepteur OTLP en cours d’exécution. Pour plus d’informations, consultez l' exemple relatif à GitHub.
// 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);
Ajoutez l’extrait de code suivant : Cet exemple suppose que vous disposez d’un OpenTelemetry Collector avec un récepteur OTLP en cours d’exécution. Pour plus d’informations, consultez ce fichier Lisez-moi.
# 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!")
Configurations OpenTelemetry
Les configurations OpenTelemetry suivantes sont accessibles via des variables d’environnement lors de l’utilisation des distributions Azure Monitor OpenTelemetry.
Copiez-le dans la chaîne de connexion à partir de votre ressource Application Insights.
APPLICATIONINSIGHTS_STATSBEAT_DISABLED
Définissez-le sur true pour refuser la collecte de métriques interne.
OTEL_RESOURCE_ATTRIBUTES
Paires clé-valeur à utiliser comme attributs de ressource. Pour plus d’informations sur les attributs de ressource, consultez la spécification du SDK de ressources.
OTEL_SERVICE_NAME
Définit la valeur de l’attribut de ressource service.name. Si la valeur service.name est également fournie dans OTEL_RESOURCE_ATTRIBUTES, OTEL_SERVICE_NAME est alors prioritaire.
Variable d’environnement
Description
APPLICATIONINSIGHTS_CONNECTION_STRING
Copiez-le dans la chaîne de connexion à partir de votre ressource Application Insights.
APPLICATIONINSIGHTS_STATSBEAT_DISABLED
Définissez-le sur true pour refuser la collecte de métriques interne.
OTEL_RESOURCE_ATTRIBUTES
Paires clé-valeur à utiliser comme attributs de ressource. Pour plus d’informations sur les attributs de ressource, consultez la spécification du SDK de ressources.
OTEL_SERVICE_NAME
Définit la valeur de l’attribut de ressource service.name. Si la valeur service.name est également fournie dans OTEL_RESOURCE_ATTRIBUTES, OTEL_SERVICE_NAME est alors prioritaire.
Pour plus d’informations sur la configuration du kit de développement logiciel (SDK) OpenTelemetry, consultez la documentation relative à OpenTelemetry.
Pour masquer les chaînes de requête d’URL, désactivez la collecte de chaînes de requête. Nous vous recommandons d’utiliser ce paramètre si vous appelez le service Stockage Azure à l’aide d’un jeton SAS.
Quand vous utilisez le package de distribution Azure.Monitor.OpenTelemetry.AspNetCore, les bibliothèques d’instrumentation ASP.NET Core et HttpClient sont incluses.
Notre package de distribution désactive le masquage des chaînes de requête par défaut.
Pour changer ce comportement, vous devez affecter la valeur « true » ou « false » à une variable d’environnement.
Instrumentation ASP.NET Core : OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION Le masquage des chaînes de requête est désactivé par défaut. Pour l’activer, affectez la valeur « false » à cette variable d’environnement.
Instrumentation HttpClient : OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION Le masquage des chaînes de requête est désactivé par défaut. Pour l’activer, affectez la valeur « false » à cette variable d’environnement.
Quand vous utilisez Azure.Monitor.OpenTelemetry.Exporter, vous devez inclure manuellement les bibliothèques d’instrumentation ASP.NET Core ou HttpClient dans votre configuration OpenTelemetry.
Le masquage des chaînes de requête est activé par défaut dans ces bibliothèques d’instrumentation.
Pour changer ce comportement, vous devez affecter la valeur « true » ou « false » à une variable d’environnement.
Instrumentation ASP.NET Core : OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION Le masquage des chaînes de requête est activé par défaut. Pour le désactiver, affectez la valeur « true » à cette variable d’environnement.
Instrumentation HttpClient : OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION Le masquage des chaînes de requête est activé par défaut. Pour le désactiver, affectez la valeur « true » à cette variable d’environnement.
Ajoutez ce qui suit au fichier config applicationinsights.json :
Nous travaillons activement au sein de la communauté OpenTelemetry pour prendre en charge le masquage.
Quand vous utilisez le package de distribution Azure Monitor OpenTelemetry, les chaînes de requête peuvent être masquées via la création et l’application d’un processeur d’étendue à la configuration de la distribution.