Den här guiden beskriver hur du konfigurerar OpenTelemetry (OTel) i Azure Monitor Application Insights. Använd Microsoft OpenTelemetry Distro för .NET, Node.jsoch Python. För Java använder du Azure Monitor OpenTelemetry Distro och dess befintliga agent- eller native-image-integreringar.
Först aktiverar du OpenTelemetry för ditt språk.
Microsoft OpenTelemetry Distro-paketidentifierare och installationskommandon är:
| Language |
Package |
Installationskommando |
| Python |
microsoft-opentelemetry |
pip install microsoft-opentelemetry |
| Node.js |
@microsoft/opentelemetry |
npm install @microsoft/opentelemetry |
| .NET |
Microsoft.OpenTelemetry |
dotnet add package Microsoft.OpenTelemetry |
Initiera inte Microsoft OpenTelemetry Distro och Azure Monitor OpenTelemetry Distro tillsammans. Azure Monitor förblir telemetrimålet. Fristående Azure Monitor exportörer behåller sina befintliga namn.
Exemplen i .NET använder Microsoft.OpenTelemetry och OpenTelemetry-namnrymder. Initiera Node.js instrumentation innan applikationsbibliotek läses in. ESM-program måste förinläsa Microsoft OpenTelemetry Distro-inläsaren. Ange APPLICATIONINSIGHTS_CONNECTION_STRING innan du startar programmet om inte ett exempel anger reťazec pripojenia i kod.
Anslutningssträng
I Application Insights definierar en reťazec pripojenia målplatsen för att skicka telemetridata.
Använd något av följande tre sätt att konfigurera reťazec pripojenia:
Konfigurera UseMicrosoftOpenTelemetry() i Program.cs.
// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;
// Create the application builder.
var builder = WebApplication.CreateBuilder(args);
// Configure the Microsoft OpenTelemetry Distro.
builder.UseMicrosoftOpenTelemetry(options =>
{
options.Exporters = ExportTarget.AzureMonitor;
// Set the connection string for Azure Monitor export.
options.AzureMonitor.ConnectionString = "<ConnectionString>";
});
// Build the application with the configured telemetry services.
var app = builder.Build();
// Run the application and its telemetry providers.
app.Run();
Ange en miljövariabel.
export APPLICATIONINSIGHTS_CONNECTION_STRING="<ConnectionString>"
Lägg till följande avsnitt i appsettings.json och läs det sedan när du initierar distron.
{
"AzureMonitor": {
"ConnectionString": "<ConnectionString>"
}
}
// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;
// Create the application builder.
var builder = WebApplication.CreateBuilder(args);
// Configure the Microsoft OpenTelemetry Distro.
builder.UseMicrosoftOpenTelemetry(options =>
{
options.Exporters = ExportTarget.AzureMonitor;
// Read the environment setting before the application configuration.
options.AzureMonitor.ConnectionString =
builder.Configuration["APPLICATIONINSIGHTS_CONNECTION_STRING"] ??
builder.Configuration["AzureMonitor:ConnectionString"];
});
// Build the application with the configured telemetry services.
var app = builder.Build();
// Run the application and its telemetry providers.
app.Run();
Anmärkning
Ett explicit options.AzureMonitor.ConnectionString värde har företräde. Exemplet med configuration-file kontrollerar miljövariabelnyckeln före avsnittet AzureMonitor. Att läsa avsnittet undviker uttryckligen att förlita sig på implicit konfigurationsbindning.
Använd någon av följande två metoder för att konfigurera reťazec pripojenia:
Konfigurera Microsoft OpenTelemetry Distro för alla signaler vid programstart:
// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;
using OpenTelemetry;
// Create the SDK and keep its providers alive until application shutdown.
using var sdk = OpenTelemetrySdk.Create(telemetry =>
{
// Configure the Microsoft OpenTelemetry Distro.
telemetry.UseMicrosoftOpenTelemetry(options =>
{
options.Exporters = ExportTarget.AzureMonitor;
// Set the connection string for Azure Monitor export.
options.AzureMonitor.ConnectionString = "<ConnectionString>";
});
});
Håll sdk vid liv under programmets livslängd. Frisläpp den endast vid avstängning för att rensa väntande telemetri.
Ange en miljövariabel.
export APPLICATIONINSIGHTS_CONNECTION_STRING="<ConnectionString>"
Anmärkning
Om du anger reťazec pripojenia på mer än en plats gäller följande prioritetsordning:
- Kod
- Miljövariabel
Använd något av följande tre sätt att konfigurera reťazec pripojenia:
Lägg till följande avsnitt i dinapplicationinsights.json konfigurationsfil.
{
"connectionString": "<ConnectionString>"
}
Du kan också ange reťazec pripojenia genom att ange en fil att läsa in den från. Filen ska bara innehålla reťazec pripojenia och inget annat. Om du anger en relativ sökväg löses den relativt till katalogen där applicationinsights-agent-3.7.9.jar befinner sig.
{
"connectionString": "${file:connection-string-file.txt}"
}
Ange en miljövariabel.
APPLICATIONINSIGHTS_CONNECTION_STRING
Lägg till applicationinsights.connection.string som en systemegenskap.
java -javaagent:"<AgentDirectory>/applicationinsights-agent-3.7.9.jar" \
-Dapplicationinsights.connection.string="<ConnectionString>" \
-jar "<AppJarPath>"
Anmärkning
Om du anger reťazec pripojenia på mer än en plats gäller följande prioritetsordning:
- Systemegenskap
- Miljövariabel
- Konfigurationsfil
Om du distribuerar flera program i samma Java virtual machine (JVM) och vill att de ska skicka telemetri till olika anslutningssträngar kan du läsa Anslutningssträngsidosättningar (förhandsversion).
Använd något av följande två sätt att konfigurera reťazec pripojenia:
Ange en miljövariabel.
export APPLICATIONINSIGHTS_CONNECTION_STRING="<ConnectionString>"
För Spring Boot anger du egenskapen i application.properties.
applicationinsights.connection.string=<ConnectionString>
Tips
Konfigurationsexempel för Microsoft OpenTelemetry Distro finns i Node.js exempel.
Använd något av följande två sätt att konfigurera reťazec pripojenia:
Ange en miljövariabel.
export APPLICATIONINSIGHTS_CONNECTION_STRING="<ConnectionString>"
Använd ett konfigurationsobjekt.
export class BasicConnectionSample {
static async run() {
// Import the Microsoft OpenTelemetry Distro.
const { useMicrosoftOpenTelemetry } = await import("@microsoft/opentelemetry");
// Configure Azure Monitor export and the options used by this sample.
const options = {
azureMonitor: {
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING ||
"<ConnectionString>",
},
},
};
// Initialize the Microsoft OpenTelemetry Distro.
const monitor = useMicrosoftOpenTelemetry(options);
console.log("Azure Monitor initialized");
}
}
Använd något av följande två sätt att konfigurera reťazec pripojenia:
Ange en miljövariabel.
export APPLICATIONINSIGHTS_CONNECTION_STRING="<ConnectionString>"
Använd use_microsoft_opentelemetry funktionen och aktivera Azure Monitor export.
# Import the `use_microsoft_opentelemetry()` function from the
# `microsoft.opentelemetry` package.
from microsoft.opentelemetry import use_microsoft_opentelemetry
# Configure OpenTelemetry to use Azure Monitor with the specified connection string.
use_microsoft_opentelemetry(
enable_azure_monitor=True,
azure_monitor_connection_string="<ConnectionString>",
)
Ange namnet på molnrollen och molnrollinstansen
Microsoft OpenTelemetry Distro för .NET, Node.js och Python och Azure Monitor OpenTelemetry för Java identifierar resurskontext där det stöds och tillhandahåller standardvärden för Cloud Role Name och Cloud Role Instance. Du kan åsidosätta dessa värden för ditt program. Molnrollsnamnet visas på Application Map som namnet under en nod.
Ange namnet på molnrollen och molnrollinstansen via resursattribut . Namnet på molnrollen använder attributen service.namespace och service.name, men återgår till service.name om service.namespace inte har angetts. Cloud Role Instance använder service.instance.id attributvärdet. Information om standardattribut för resurser finns i OpenTelemetry Semantiska konventioner.
Ange namnet på molnrollen och molnrollinstansen
// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;
using OpenTelemetry;
using OpenTelemetry.Resources;
// Define the service attributes used for cloud role name and instance.
var resourceAttributes = new Dictionary<string, object>
{
["service.name"] = "<ServiceName>",
["service.namespace"] = "<ServiceNamespace>",
["service.instance.id"] = "<ServiceInstanceId>"
};
// Create the application builder.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenTelemetry()
// Configure the Microsoft OpenTelemetry Distro.
.UseMicrosoftOpenTelemetry(options =>
{
options.Exporters = ExportTarget.AzureMonitor;
})
// Apply the resource attributes to traces, metrics, and logs.
.ConfigureResource(resourceBuilder => resourceBuilder.AddAttributes(
resourceAttributes));
// Build the application with the configured telemetry services.
var app = builder.Build();
// Run the application and its telemetry providers.
app.Run();
Ange namnet på molnrollen och molnrollinstansen via resursattribut . Namnet på molnrollen använder attributen service.namespace och service.name, men återgår till service.name om service.namespace inte har angetts. Cloud Role Instance använder service.instance.id attributvärdet. Information om standardattribut för resurser finns i OpenTelemetry Semantiska konventioner.
// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;
using OpenTelemetry;
using OpenTelemetry.Resources;
// Define the service attributes used for cloud role name and instance.
var resourceAttributes = new Dictionary<string, object>
{
["service.name"] = "<ServiceName>",
["service.namespace"] = "<ServiceNamespace>",
["service.instance.id"] = "<ServiceInstanceId>"
};
// Create the SDK and keep its providers alive until application shutdown.
using var sdk = OpenTelemetrySdk.Create(telemetry =>
{
// Configure the Microsoft OpenTelemetry Distro.
telemetry.UseMicrosoftOpenTelemetry(options =>
options.Exporters = ExportTarget.AzureMonitor)
// Apply the resource attributes to traces, metrics, and logs.
.ConfigureResource(resourceBuilder =>
resourceBuilder.AddAttributes(resourceAttributes));
});
Anmärkning
Om du inte anger namnet på molnrollen och molnrollinstansen, är namnet på molnrollen som standard namnet på din Application Insights-resurs och molnrollinstansen är som standard datornamnet.
Använd något av följande tre sätt att konfigurera molnrollnamnet och molnrollinstansen:
Lägg till följande avsnitt i dinapplicationinsights.json konfigurationsfil.
Ange role.name som namnet på molnrollen och role.instance som molnrollinstansen:
{
"role": {
"name": "<CloudRoleName>",
"instance": "<CloudRoleInstance>"
}
}
Ange miljövariabler.
APPLICATIONINSIGHTS_ROLE_NAME
APPLICATIONINSIGHTS_ROLE_INSTANCE
Lägg till applicationinsights.role.name och applicationinsights.role.instance som systemegenskaper.
java -javaagent:"<AgentDirectory>/applicationinsights-agent-3.7.9.jar" \
-Dapplicationinsights.role.name="<CloudRoleName>" \
-Dapplicationinsights.role.instance="<CloudRoleInstance>" \
-jar "<AppJarPath>"
Anmärkning
Om du anger molnrollnamnet och molnrollinstansen på mer än en plats gäller följande prioritetsordning:
- Systemegenskap
- Miljövariabel
- Konfigurationsfil
Om du distribuerar flera program i samma JVM och vill att de ska skicka telemetri till olika molnrollnamn läser du Åsidosättningar av molnrollnamn (förhandsversion).
Så här anger du namnet på molnrollen:
-
spring.application.name Använd de inbyggda avbildningsprogrammen för Spring Boot.
- Använd
quarkus.application.name för Quarkus native image applikationer.
Anmärkning
Quarkus-communityn stöder och underhåller Quarkus-tillägg. Om du vill ha hjälp använder du Quarkus community-supportkanaler. Microsoft tillhandahåller inte teknisk support för den här integreringen.
Ange namnet på molnrollen och molnrollinstansen via resursattribut . Namnet på molnrollen använder attributen service.namespace och service.name, men återgår till service.name om service.namespace inte har angetts. Cloud Role Instance använder service.instance.id attributvärdet. Information om standardattribut för resurser finns i OpenTelemetry Semantiska konventioner.
Ange namnet på molnrollen och molnrollinstansen
export class CloudRoleSample {
static async run() {
// Import the Microsoft OpenTelemetry Distro.
const { useMicrosoftOpenTelemetry } = await import("@microsoft/opentelemetry");
const { resourceFromAttributes } = await import("@opentelemetry/resources");
const { ATTR_SERVICE_NAME } = await import("@opentelemetry/semantic-conventions");
const { ATTR_SERVICE_NAMESPACE, ATTR_SERVICE_INSTANCE_ID } = await import(
"@opentelemetry/semantic-conventions/incubating"
);
// Set the service attributes used for cloud role name and instance.
const customResource = resourceFromAttributes({
[ATTR_SERVICE_NAME]: process.env.OTEL_SERVICE_NAME || "<ServiceName>",
[ATTR_SERVICE_NAMESPACE]:
process.env.OTEL_SERVICE_NAMESPACE || "<ServiceNamespace>",
[ATTR_SERVICE_INSTANCE_ID]:
process.env.OTEL_SERVICE_INSTANCE_ID || "<ServiceInstanceId>",
});
// Configure Azure Monitor export and the options used by this sample.
const options = {
azureMonitor: {
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING ||
"<ConnectionString>",
},
},
resource: customResource,
};
// Initialize the Microsoft OpenTelemetry Distro.
const monitor = useMicrosoftOpenTelemetry(options);
console.log("Azure Monitor initialized (custom resource)");
}
}
Ange namnet på molnrollen och molnrollinstansen via resursattribut . Namnet på molnrollen använder service.namespace och service.name attribut, även om det återgår till service.name om service.namespace inte har angetts. Cloud Role Instance använder service.instance.id attributvärdet. Information om standardattribut för resurser finns i OpenTelemetry Semantiska konventioner.
Ange resursattribut med hjälp av miljövariablerna OTEL_RESOURCE_ATTRIBUTES och/eller OTEL_SERVICE_NAME.
OTEL_RESOURCE_ATTRIBUTES tar emot en serie kommaseparerade nyckel/värde-par. Du kan kombinera tjänstens namnområde och tjänstnamnet för att ange Cloud Role Name och använda tjänstinstans-ID:t för att ange Cloud Role Instance:
serviceName="<ServiceName>"
serviceNamespace="<ServiceNamespace>"
serviceInstanceId="<ServiceInstanceId>"
resourceAttributes="service.namespace=$serviceNamespace"
resourceAttributes+=",service.instance.id=$serviceInstanceId"
export OTEL_RESOURCE_ATTRIBUTES="$resourceAttributes"
export OTEL_SERVICE_NAME="$serviceName"
Om du inte anger resursattributet service.namespace kan du ange namnet på molnrollen med endast miljövariabeln OTEL_SERVICE_NAME eller resursattributet service.name:
export OTEL_RESOURCE_ATTRIBUTES="service.instance.id=<ServiceInstanceId>"
export OTEL_SERVICE_NAME="<ServiceName>"
Ange resursattribut
Microsoft OpenTelemetry Distro för .NET, Node.js och Python och Azure Monitor OpenTelemetry för Java aktiverar resursidentifiering i Azure miljöer som stöds. Mer information finns i Automatisk datainsamling och resursdetektorer.
För manuella installationer anger du resursattribut direkt med hjälp av standardalternativ för OpenTelemetry:
# Set variables
serviceName="<ServiceName>"
location="<Location>"
subscriptionId="<SubscriptionId>"
resourceGroupName="<ResourceGroupName>"
appName="<AppName>"
# Build App Service resource ID
path="/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName"
provider="/providers/Microsoft.Web/sites/$appName"
resourceId="$path$provider"
resourceAttributes="cloud.provider=azure,cloud.region=$location"
resourceAttributes+=",cloud.resource_id=$resourceId"
export OTEL_SERVICE_NAME="$serviceName"
export OTEL_RESOURCE_ATTRIBUTES="$resourceAttributes"
På Windows PowerShell:
# Set variables
$serviceName = "<ServiceName>"
$location = "<Location>"
$subscriptionId = "<SubscriptionId>"
$resourceGroupName = "<ResourceGroupName>"
$appName = "<AppName>"
# Build App Service resource ID
$path = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName"
$provider = "/providers/Microsoft.Web/sites/$appName"
$resourceId = "$path$provider"
$resourceAttributes = "cloud.provider=azure,cloud.region=$location"
$resourceAttributes += ",cloud.resource_id=$resourceId"
$env:OTEL_SERVICE_NAME = $serviceName
$env:OTEL_RESOURCE_ATTRIBUTES = $resourceAttributes
Aktivera sampling
Sampling minskar telemetriinmatningens volym och kostnad. distributionerna stöder fast procentsats och hastighetsbegränsad sampling för Azure Monitor export. Du kan också anpassa programloggar med beslut om spårningssampling. Samplern bifogar samplingsinformation till exporterade spann så att Application Insights kan justera upplevelseantal. En konceptuell översikt finns i Läs mer om sampling.
Viktigt!
- Samplingsbeslut gäller för spårningar (intervall).
-
Loggdata kan följa beslut om trace-sampling. Det här beteendet är aktiverat som standard i Microsoft OpenTelemetry Distro för .NET och är inaktiverat som standard i Node.js- och Python-versionerna av Microsoft OpenTelemetry Distro. Se spårningsbaserad sampling för loggar.
-
Mått samplas aldrig.
Anmärkning
Om du ser oväntade avgifter eller höga kostnader i Application Insights kan vanliga orsaker vara hög telemetrivolym, datainmatningstoppar och felkonfigurerad sampling. Information om hur du börjar felsöka finns i Felsöka hög datainmatning i Application Insights.
Använd standardvariabler för OpenTelemetry-miljön för att välja sampler och ange dess argument där distrot läser dem. Välj en konfigurationsmetod. Du behöver inte konfigurera samma samplingsinställningar i både kod och miljövariabler. Följ den versionsspecifika vägledningen på .NET-flikarna. Mer information om samplernamn finns i OTEL_TRACES_SAMPLER.
För Microsoft.OpenTelemetry 1.1.0 använder du kodexemplen för att ange sampling i UseMicrosoftOpenTelemetry(). Du behöver inte heller ange OTEL_TRACES_SAMPLER eller OTEL_TRACES_SAMPLER_ARG.
För Microsoft.OpenTelemetry 1.1.0 använder du kodexemplen i OpenTelemetrySdk.Create(). Konfigurera sampling via distroalternativen en gång; du behöver inte heller ange samplerns miljövariabler.
Anmärkning
Från och med Java agentversion 3.4.0 är hastighetsbegränsad sampling tillgänglig och är nu standard.
Sampling tillämpas endast på loggar inom en begäran. Loggar som inte finns i en begäran (till exempel startloggar) samlas alltid in som standard. Om du vill prova loggarna använder du samplings åsidosättningar.
Procentuell urval med fast värde
-
APPLICATIONINSIGHTS_SAMPLING_PERCENTAGE — Samplingsprocent
- Värdet är en procentandel (till exempel
33.333 = ~33,333%).
Frekvensbegränsad sampling
-
APPLICATIONINSIGHTS_SAMPLING_REQUESTS_PER_SECOND — Maximalt antal begäranden per sekund
Konfigurationsalternativ och exempel finns i Konfigurera åsidosättningar för sampling.
I följande exempel anges miljövariablerna för sampling för Node.js och Python. För den .NET-version som behandlas på föregående flikar använder du kodbaserad konfiguration i stället.
Anmärkning
Följande exempel är inte giltiga för Java. För rätt miljövariabler, se föregående Java fliken.
Fast procentsats sampling (~10%)
export OTEL_TRACES_SAMPLER="microsoft.fixed_percentage"
export OTEL_TRACES_SAMPLER_ARG=0.1
Frekvensbegränsad sampling (~1,5 spårningar per sekund)
export OTEL_TRACES_SAMPLER="microsoft.rate_limited"
export OTEL_TRACES_SAMPLER_ARG=1.5
Anmärkning
Samplerkonfiguration och prioritet beror på språket. I .NET-exemplen anges distroalternativ uttryckligen. Python använder sampler-miljövariablerna. Undvik motstridiga inställningar i kod och miljö för Node.js.
Fast procentsurval
// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;
// Create the application builder.
var builder = WebApplication.CreateBuilder(args);
// Configure the Microsoft OpenTelemetry Distro.
builder.UseMicrosoftOpenTelemetry(options =>
{
options.Exporters = ExportTarget.AzureMonitor;
// Select fixed-percentage sampling instead of rate-limited sampling.
options.AzureMonitor.TracesPerSecond = null;
// Keep approximately 10% of traces.
options.AzureMonitor.SamplingRatio = 0.1F;
});
// Build the application with the configured telemetry services.
var app = builder.Build();
// Run the application and its telemetry providers.
app.Run();
Frekvensbegränsad sampling
// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;
// Create the application builder.
var builder = WebApplication.CreateBuilder(args);
// Configure the Microsoft OpenTelemetry Distro.
builder.UseMicrosoftOpenTelemetry(options =>
{
options.Exporters = ExportTarget.AzureMonitor;
// Limit sampling to approximately 1.5 traces per second.
options.AzureMonitor.TracesPerSecond = 1.5;
});
// Build the application with the configured telemetry services.
var app = builder.Build();
// Run the application and its telemetry providers.
app.Run();
Anmärkning
Microsoft OpenTelemetry Distro för .NET har som standard frekvensbegränsad sampling med fem spårningar per sekund. Ställ in TracesPerSecond till null när du väljer sampling med fast procent i kod.
Fast procentsurval
// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;
using OpenTelemetry;
// Create the SDK and keep its providers alive until application shutdown.
using var sdk = OpenTelemetrySdk.Create(telemetry =>
{
// Configure the Microsoft OpenTelemetry Distro.
telemetry.UseMicrosoftOpenTelemetry(options =>
{
options.Exporters = ExportTarget.AzureMonitor;
// Select fixed-percentage sampling instead of rate-limited sampling.
options.AzureMonitor.TracesPerSecond = null;
// Keep approximately 10% of traces.
options.AzureMonitor.SamplingRatio = 0.1F;
});
});
Frekvensbegränsad sampling
// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;
using OpenTelemetry;
// Create the SDK and keep its providers alive until application shutdown.
using var sdk = OpenTelemetrySdk.Create(telemetry =>
{
// Configure the Microsoft OpenTelemetry Distro.
telemetry.UseMicrosoftOpenTelemetry(options =>
{
options.Exporters = ExportTarget.AzureMonitor;
// Limit sampling to approximately 1.5 traces per second.
options.AzureMonitor.TracesPerSecond = 1.5;
});
});
Anmärkning
Microsoft OpenTelemetry Distro för .NET har som standard frekvensbegränsad sampling med fem spårningar per sekund. Håll SDK:t vid liv under programmets livslängd.
För Java kan du inte konfigurera sampling i kod.
Microsoft OpenTelemetry Distro för Node.js har som standard frekvensbegränsad sampling med fem spårningar per sekund. Ställ in tracesPerSecond: 0 på att använda samplingRatio i stället.
Fast procentsurval
// Import the Microsoft OpenTelemetry Distro.
const { useMicrosoftOpenTelemetry } = await import("@microsoft/opentelemetry");
// Initialize the Microsoft OpenTelemetry Distro.
const monitor = useMicrosoftOpenTelemetry({
azureMonitor: {
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING || "<ConnectionString>",
},
},
// Keep approximately 10% of traces.
samplingRatio: 0.1,
// Use the sampling ratio instead of a rate limit.
tracesPerSecond: 0,
});
Frekvensbegränsad sampling
// Import the Microsoft OpenTelemetry Distro.
const { useMicrosoftOpenTelemetry } = await import("@microsoft/opentelemetry");
// Initialize the Microsoft OpenTelemetry Distro.
const monitor = useMicrosoftOpenTelemetry({
azureMonitor: {
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING || "<ConnectionString>",
},
},
// Limit sampling to approximately 1.5 traces per second.
tracesPerSecond: 1.5,
});
Anmärkning
Om du inte anger någon sampler i kod eller miljövariabler använder Azure Monitor RateLimitedSampler som standard.
Microsoft OpenTelemetry Distro för Python har som standard frekvensbegränsad sampling med fem spårningar per sekund. Konfigurera samplern via miljövariabler innan distrot initieras.
Fast procentsurval
import os
from microsoft.opentelemetry import use_microsoft_opentelemetry
# Select the sampler before initializing the distro.
os.environ["OTEL_TRACES_SAMPLER"] = "microsoft.fixed_percentage"
# Keep approximately 10% of traces.
os.environ["OTEL_TRACES_SAMPLER_ARG"] = "0.1"
# Initialize the Microsoft OpenTelemetry Distro with Azure Monitor export.
use_microsoft_opentelemetry(
enable_azure_monitor=True,
azure_monitor_connection_string="<ConnectionString>",
)
Frekvensbegränsad sampling
import os
from microsoft.opentelemetry import use_microsoft_opentelemetry
# Select the sampler before initializing the distro.
os.environ["OTEL_TRACES_SAMPLER"] = "microsoft.rate_limited"
# Limit sampling to approximately 1.5 traces per second.
os.environ["OTEL_TRACES_SAMPLER_ARG"] = "1.5"
# Initialize the Microsoft OpenTelemetry Distro with Azure Monitor export.
use_microsoft_opentelemetry(
enable_azure_monitor=True,
azure_monitor_connection_string="<ConnectionString>",
)
Anmärkning
Använd OTEL_TRACES_SAMPLER och OTEL_TRACES_SAMPLER_ARG för Python sampling. Överför inte de äldre argumenten sampling_ratio och traces_per_second för Azure Monitor-distron.
Tips
När du använder sampling med fast procentandel och du inte är säker på vilket värde som ska anges för samplingsfrekvensen börjar du med 5% (0.05). Justera hastigheten baserat på noggrannheten för de åtgärder som visas i fel- och prestandafönstret. All sampling minskar noggrannheten, så aviseringar om OpenTelemetry-mått, som inte påverkas av sampling.
Läs dina samplingsinställningar från builder.Configuration och tilldela dem till options.AzureMonitor.SamplingRatio eller options.AzureMonitor.TracesPerSecond när du initierar Microsoft OpenTelemetry Distro. Om du väljer procentsampling anger du TracesPerSecond = nullockså . Verifiera kvoter i intervallet 0 till 1 och icke-negativa gränsvärden för frekvens. Du behöver inte heller sampler-miljövariabler för den här konfigurationen.
Ladda programmets konfiguration och skicka de verifierade värdena till UseMicrosoftOpenTelemetry() inuti OpenTelemetrySdk.Create(). Använd samma samplingsegenskaper som kodexemplen; distron behöver inte en andra provider eller en separat exportör.
Anmärkning
Från och med Java agentversion 3.4.0 är hastighetsbegränsad sampling tillgänglig och är nu standard.
Sampling tillämpas endast på loggar inom en begäran. Loggar som inte finns i en begäran (till exempel startloggar) samlas alltid in som standard. Om du vill prova loggarna använder du samplings åsidosättningar.
Om du inte konfigurerar sampling är standardinställningen nu hastighetsbegränsad sampling som konfigurerats för att samla in högst (cirka) fem begäranden per sekund, tillsammans med alla beroenden och loggar på dessa begäranden.
Den här konfigurationen ersätter den tidigare standardinställningen, som var att samla in alla begäranden. Om du fortfarande vill samla in alla begäranden använder du sampling med fast procentandel och anger samplingsprocenten till 100.
Fast procentsurval
Det här exemplet visar hur du ställer in samplingen för att samla in ungefär en tredjedel av alla begäranden:
{
"sampling": {
"percentage": 33.333
}
}
Ange samplingsprocenten med hjälp av miljövariabeln. Den har företräde framför den samplingsprocent som anges i JSON-konfigurationen.
Tips
För samplingsprocenten väljer du en procentandel som är nära 100/N, där N är ett heltal. Sampling stöder för närvarande inte andra värden.
Frekvensbegränsad sampling
Anmärkning
Den hastighetsbegränsade samplingen är ungefärlig eftersom den internt måste anpassa en "fast" samplingsprocent över tid för att generera korrekta antal objekt på varje telemetripost. Internt justeras den hastighetsbegränsade samplingen så att den snabbt (0,1 sekunder) anpassas till nya programbelastningar. Därför bör du inte se att den överskrider den konfigurerade hastigheten med mycket, eller så länge.
Det här exemplet visar hur du ställer in samplingen så att den samlar in högst (ungefär) en begäran per sekund:
{
"sampling": {
"requestsPerSecond": 1
}
}
Värdet requestsPerSecond kan vara en decimal, så du kan konfigurera det så att det avbildar mindre än en begäran per sekund om du vill. Till exempel, ett värde av 0.5 betyder att fånga högst en begäran varannan sekund.
Ange hastighetsgränsen med hjälp av miljövariabeln. Den har företräde framför den hastighetsgräns som anges i JSON-konfigurationen.
Java native-miljön stöder inte att konfigurerar sampling i en konfigurationsfil. Om du vill konfigurera sampling använder du kod- eller miljövariabler.
Konfigurera Microsoft OpenTelemetry Distro-sampling i alternativen useMicrosoftOpenTelemetry() eller via miljövariabler. Redigera inte en applicationinsights.json fil inne i det installerade paketet.
Konfigurationsreferensen Microsoft OpenTelemetry Distro beskriver de alternativ som stöds.
Python stöder inte konfiguration av sampling i en konfigurationsfil. Om du vill konfigurera sampling använder du kod- eller miljövariabler.
När du aktiverar den här funktionen släpper systemet loggposter som tillhör osamplade spårningar så att loggarna håller sig i linje med spårningssampling.
- En loggpost är en del av en spårning när den har en giltig
SpanId.
- Om indikeras som inte samplat, ignorerar funktionen loggposten.
- Loggposter utanspårningskontext påverkas inte.
- Standardvärdet beror på språket och distributionsversionen. Se de inställningar per språk som följer.
Använd följande inställningar för att konfigurera spårningsbaserad loggsampling:
Distrot möjliggör spårningsbaserad loggsampling som standard. Ställ in EnableTraceBasedLogsSampler på false för att inaktivera den.
// Configure the Microsoft OpenTelemetry Distro.
builder.Services.AddOpenTelemetry().UseMicrosoftOpenTelemetry(options =>
{
options.Exporters = ExportTarget.AzureMonitor;
});
Distron möjliggör spårningsbaserad loggsampling som standard, inklusive program som inte är värdbaserade. Ställ in EnableTraceBasedLogsSampler på false för att inaktivera den.
// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;
using OpenTelemetry;
// Create the SDK and keep its providers alive until application shutdown.
using var sdk = OpenTelemetrySdk.Create(telemetry =>
{
// Configure the Microsoft OpenTelemetry Distro.
telemetry.UseMicrosoftOpenTelemetry(options =>
{
options.Exporters = ExportTarget.AzureMonitor;
});
});
För Java program aktiveras spårningsbaserad sampling som standard.
För inbyggda Spring Boot- och Quarkus-program aktiveras spårningsbaserad sampling som standard.
Anmärkning
Quarkus-communityn stöder och underhåller Quarkus-tillägg. Om du vill ha hjälp använder du Quarkus community-supportkanaler. Microsoft tillhandahåller inte teknisk support för den här integreringen.
// Import the Microsoft OpenTelemetry Distro.
const { useMicrosoftOpenTelemetry } = await import("@microsoft/opentelemetry");
// Initialize the Microsoft OpenTelemetry Distro.
const monitor = useMicrosoftOpenTelemetry({
azureMonitor: {
// Drop logs associated with unsampled traces.
enableTraceBasedSamplingForLogs: true,
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING || "<ConnectionString>",
},
},
});
from microsoft.opentelemetry import use_microsoft_opentelemetry
# Initialize the Microsoft OpenTelemetry Distro with Azure Monitor export.
use_microsoft_opentelemetry(
enable_azure_monitor=True,
azure_monitor_connection_string="<ConnectionString>",
# Drop logs associated with unsampled traces.
enable_trace_based_sampling_for_logs=True,
)
Live-metriker
Realtidsmått erbjuder en realtidsanalysinstrumentpanel för insikt i applikationsaktivitet och prestanda.
Den här funktionen aktiveras som standard.
Du kan inaktivera Live Metrics när du konfigurerar Microsoft OpenTelemetry Distro.
// Configure the Microsoft OpenTelemetry Distro.
builder.Services.AddOpenTelemetry().UseMicrosoftOpenTelemetry(options =>
{
options.Exporters = ExportTarget.AzureMonitor;
// Disable Live Metrics.
options.AzureMonitor.EnableLiveMetrics = false;
});
Live Metrics är aktiverat som standard i Microsoft OpenTelemetry Distro för .NET, inklusive program som inte är värdbaserade. Om du vill inaktivera det ställer du in options.AzureMonitor.EnableLiveMetrics på false:
// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;
using OpenTelemetry;
// Create the SDK and keep its providers alive until application shutdown.
using var sdk = OpenTelemetrySdk.Create(telemetry =>
{
// Configure the Microsoft OpenTelemetry Distro.
telemetry.UseMicrosoftOpenTelemetry(options =>
{
options.Exporters = ExportTarget.AzureMonitor;
// Disable Live Metrics.
options.AzureMonitor.EnableLiveMetrics = false;
});
});
Den fristående Azure Monitor OpenTelemetry Exporter innehåller inte Live Metrics.
Live Metrics är inte tillgängliga för GraalVM native-applikationer.
Realtidsmått är aktiverat som standard. Du kan aktivera eller inaktivera det med azureMonitor.enableLiveMetrics när du konfigurerar Microsoft OpenTelemetry Distro.
export class LiveMetricsSample {
static async run() {
// Import the Microsoft OpenTelemetry Distro.
const { useMicrosoftOpenTelemetry } = await import("@microsoft/opentelemetry");
// Configure Azure Monitor export and the options used by this sample.
const options = {
azureMonitor: {
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING ||
"<ConnectionString>",
},
enableLiveMetrics: true,
},
};
// Initialize the Microsoft OpenTelemetry Distro.
const monitor = useMicrosoftOpenTelemetry(options);
console.log("Azure Monitor initialized (live metrics enabled)");
}
}
Realtidsmått är aktiverat som standard. Du kan inaktivera Live Metrics när du konfigurerar Distro.
...
# Initialize the Microsoft OpenTelemetry Distro with Azure Monitor export.
use_microsoft_opentelemetry(
enable_azure_monitor=True,
azure_monitor_enable_live_metrics=False, # To disable live metrics
)
...
Om du vill skapa en säkrare anslutning till Azure aktiverar du Microsoft Entra autentisering. Den här autentiseringsmetoden förhindrar att obehörig telemetri matas in i din prenumeration.
Mer information finns på den dedikerade Microsoft Entra autentiseringssidan som är länkad för varje språk som stöds.
Microsoft Entra ID-autentisering är inte tillgänglig för GraalVM Native-applikationer.
Offlinelagring och automatiska återförsök
Azure Monitor OpenTelemetry-baserade erbjudanden cachelagrar telemetri när ett program kopplar från Application Insights och försöker skicka det igen under en period på upp till 48 timmar. Rekommendationer för datahantering finns i Exportera och ta bort privata data. Program med hög belastning släpper ibland telemetri av två skäl: överskrider den tillåtna tiden eller överskrider den maximala filstorleken. Vid behov prioriterar produkten de senaste händelserna framför gamla.
Microsoft OpenTelemetry Distro innehåller AzureMonitorExporter, som som standard använder någon av följande platser för offlinelagring (listad i prioritetsordning):
Windows
- %LOCALAPPDATA%\Microsoft\AzureMonitor
- %TEMP%\Microsoft\AzureMonitor
Icke-Windows
- %TMPDIR%/Microsoft/AzureMonitor
- /var/tmp/Microsoft/AzureMonitor
- /tmp/Microsoft/AzureMonitor
Om du vill åsidosätta standardkatalogen anger du options.AzureMonitor.StorageDirectory när du konfigurerar Microsoft OpenTelemetry Distro.
// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;
// Create the application builder.
var builder = WebApplication.CreateBuilder(args);
// Configure the Microsoft OpenTelemetry Distro.
builder.UseMicrosoftOpenTelemetry(options =>
{
options.Exporters = ExportTarget.AzureMonitor;
// Store telemetry here when the exporter cannot send it immediately.
options.AzureMonitor.StorageDirectory = "<StorageDirectory>";
});
// Build the application with the configured telemetry services.
var app = builder.Build();
// Run the application and its telemetry providers.
app.Run();
Om du vill inaktivera den här funktionen anger du options.AzureMonitor.DisableOfflineStorage = true.
Som standard använder AzureMonitorExporter någon av följande platser för offlinelagring, som anges i prioritetsordning:
Windows
- %LOCALAPPDATA%\Microsoft\AzureMonitor
- %TEMP%\Microsoft\AzureMonitor
Icke-Windows
- %TMPDIR%/Microsoft/AzureMonitor
- /var/tmp/Microsoft/AzureMonitor
- /tmp/Microsoft/AzureMonitor
Om du vill åsidosätta standardkatalogen för Microsoft OpenTelemetry Distro anger du options.AzureMonitor.StorageDirectory.
// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;
using OpenTelemetry;
// Create the SDK and keep its providers alive until application shutdown.
using var sdk = OpenTelemetrySdk.Create(telemetry =>
{
// Configure the Microsoft OpenTelemetry Distro.
telemetry.UseMicrosoftOpenTelemetry(options =>
{
options.Exporters = ExportTarget.AzureMonitor;
// Store telemetry here when the exporter cannot send it immediately.
options.AzureMonitor.StorageDirectory = "<StorageDirectory>";
});
});
Om du vill inaktivera den här funktionen anger du options.AzureMonitor.DisableOfflineStorage = true.
När agenten inte kan skicka telemetri till Azure Monitor lagrar den telemetrifiler på disken. Filerna sparas i en telemetry mapp under den katalog som anges av systemegenskapen java.io.tmpdir . Varje filnamn börjar med en tidsstämpel och slutar med .trn tillägget. Den här offlinelagringsmekanismen hjälper till att säkerställa att telemetri behålls vid tillfälliga nätverksfel eller inmatningsfel.
Agenten lagrar upp till 50 MB telemetridata som standard och tillåter konfiguration av lagringsgränsen. Agenten försöker regelbundet skicka lagrad telemetri. Telemetrifiler som är äldre än 48 timmar tas bort och de äldsta händelserna ignoreras när lagringsgränsen nås.
En fullständig lista över tillgängliga konfigurationer finns i Konfigurationsalternativ.
När agenten inte kan skicka telemetri till Azure Monitor lagrar den telemetrifiler på disken. Filerna sparas i en telemetry mapp under den katalog som anges av systemegenskapen java.io.tmpdir . Varje filnamn börjar med en tidsstämpel och slutar med .trn tillägget. Den här offlinelagringsmekanismen hjälper till att säkerställa att telemetri behålls vid tillfälliga nätverksfel eller inmatningsfel.
Agenten lagrar upp till 50 MB telemetridata som standard. Försök att skicka lagrad telemetri görs regelbundet. Telemetrifiler som är äldre än 48 timmar tas bort och de äldsta händelserna ignoreras när lagringsgränsen nås.
Som standard använder AzureMonitorExporter någon av följande platser för offlinelagring.
- Windows
- %TEMP%\Microsoft-AzureMonitor-
<unique-identifier>\opentelemetry-nodejs-<your-instrumentation-key>
- Utanför Windows
- %TMPDIR%/Microsoft/Microsoft-AzureMonitor-
<unique-identifier>/opentelemetry-nodejs-<your-instrumentation-key>
- /var/tmp/Microsoft/Microsoft-AzureMonitor-
<unique-identifier>/opentelemetry-nodejs-<your-instrumentation-key>
<unique-identifier> är en hash som skapats från användarmiljöattribut som instrumentationsnyckel, processnamn, användarnamn och programkatalog. Den här identifieraren löser ett vanligt systemproblem för flera användare: när den första användaren skapar lagringskatalogen kan deras filbehörigheter (umaskinställningar) blockera andra användare från att komma åt samma sökväg. En unik katalog för varje användarkontext säkerställer att varje användare får sin egen lagringsplats med rätt åtkomstbehörigheter.
Om du vill åsidosätta standardkatalogen anger du azureMonitor.azureMonitorExporterOptions.storageDirectory.
Till exempel:
export class OfflineStorageSample {
static async run() {
// Import the Microsoft OpenTelemetry Distro.
const { useMicrosoftOpenTelemetry } = await import("@microsoft/opentelemetry");
// Configure Azure Monitor export and the options used by this sample.
const options = {
azureMonitor: {
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING ||
"<ConnectionString>",
// Store telemetry here when the exporter cannot send it immediately.
storageDirectory: "<StorageDirectory>",
disableOfflineStorage: false, // set to true to disable
},
},
};
// Initialize the Microsoft OpenTelemetry Distro.
const monitor = useMicrosoftOpenTelemetry(options);
console.log("Azure Monitor initialized (offline storage configured)");
}
}
Om du vill inaktivera den här funktionen anger du azureMonitor.azureMonitorExporterOptions.disableOfflineStorage = true.
Som standard använder Azure Monitor exportörer följande sökväg:
<tempfile.gettempdir()>/Microsoft-AzureMonitor-<unique-identifier>/opentelemetry-python-<your-instrumentation-key>
<unique-identifier> är en hash som skapats från användarmiljöattribut som instrumentationsnyckel, processnamn, användarnamn och programkatalog. Den här identifieraren löser ett vanligt systemproblem för flera användare: när den första användaren skapar lagringskatalogen kan deras filbehörigheter (umaskinställningar) blockera andra användare från att komma åt samma sökväg. En unik katalog för varje användarkontext säkerställer att varje användare får sin egen lagringsplats med rätt åtkomstbehörigheter.
Om du vill åsidosätta standardkatalogen anger du azure_monitor_exporter_storage_directory till den katalog du vill använda.
Till exempel:
...
# Configure OpenTelemetry to use Azure Monitor with the specified connection string and
# storage directory.
use_microsoft_opentelemetry(
enable_azure_monitor=True,
azure_monitor_connection_string="<ConnectionString>",
azure_monitor_exporter_storage_directory="<StorageDirectory>",
)
...
Om du vill inaktivera den här funktionen anger du azure_monitor_exporter_disable_offline_storage till True. Standardvärdet är False.
Till exempel:
...
# Configure OpenTelemetry to use Azure Monitor with the specified connection string and
# disable offline storage.
use_microsoft_opentelemetry(
enable_azure_monitor=True,
azure_monitor_connection_string="<ConnectionString>",
azure_monitor_exporter_disable_offline_storage=True,
)
...
Aktivera OTLP-exportören
Du kanske vill aktivera exportör av OpenTelemetry Protocol (OTLP) tillsammans med Azure Monitor Exporter för att skicka telemetrin till två platser.
Anmärkning
OTLP-exportören visas bara för att underlätta. Microsoft har inte officiellt stöd för OTLP-exporteraren eller några komponenter eller tredjepartsupplevelser som kommer efter den.
Microsoft OpenTelemetry Distro innehåller OTLP-export. Konfigurera insamlingsslutpunkten med OTEL_EXPORTER_OTLP_ENDPOINToch välj båda målen:
// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;
// Create the application builder.
var builder = WebApplication.CreateBuilder(args);
// Configure the Microsoft OpenTelemetry Distro.
builder.UseMicrosoftOpenTelemetry(options =>
{
// Send telemetry to Azure Monitor and the configured OTLP collector.
options.Exporters = ExportTarget.AzureMonitor | ExportTarget.Otlp;
});
// Build the application with the configured telemetry services.
var app = builder.Build();
// Run the application and its telemetry providers.
app.Run();
Konfigurera insamlingsslutpunkten med OTEL_EXPORTER_OTLP_ENDPOINToch välj båda målen. Håll SDK:t vid liv tills programmet stängs av:
// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;
using OpenTelemetry;
// Create the SDK and keep its providers alive until application shutdown.
using var sdk = OpenTelemetrySdk.Create(telemetry =>
{
// Configure the Microsoft OpenTelemetry Distro.
telemetry.UseMicrosoftOpenTelemetry(options =>
{
// Send telemetry to Azure Monitor and the configured OTLP collector.
options.Exporters = ExportTarget.AzureMonitor | ExportTarget.Otlp;
});
});
Du kan inte aktivera exportör av OpenTelemetry Protocol (OTLP) tillsammans med Azure Monitor Exporter för att skicka telemetrin till två platser.
Installera OpenTelemetry Collector Trace Exporter och andra OpenTelemetry-paket i projektet.
npm install @opentelemetry/api
npm install @opentelemetry/exporter-trace-otlp-http
npm install @opentelemetry/sdk-trace-base
npm install @opentelemetry/sdk-trace-node
Lägg till följande kodfragment. Det här exemplet förutsätter att du har en OpenTelemetry Collector med en OTLP-mottagare igång. Mer information finns i exempel på GitHub.
Aktivera OTLP-exportören
export class OtlpExporterSample {
static async run() {
// Import the Microsoft OpenTelemetry Distro.
const { useMicrosoftOpenTelemetry } = await import("@microsoft/opentelemetry");
const { BatchSpanProcessor } = await import("@opentelemetry/sdk-trace-base");
const { OTLPTraceExporter } = await import(
"@opentelemetry/exporter-trace-otlp-http"
);
// Create an OTLP trace exporter (set 'url' if your collector isn't on the default
// endpoint).
const otlpExporter = new OTLPTraceExporter({
// url: "http://localhost:4318/v1/traces",
});
// Configure Azure Monitor and add the OTLP exporter as an additional span
// processor.
const options = {
azureMonitor: {
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING ||
"<ConnectionString>",
},
},
spanProcessors: [new BatchSpanProcessor(otlpExporter)],
};
// Initialize the Microsoft OpenTelemetry Distro.
const monitor = useMicrosoftOpenTelemetry(options);
console.log("Azure Monitor initialized (OTLP exporter added)");
}
}
Installera opentelemetry-exporter-otlp-paketet.
Lägg till följande kodfragment. Det här exemplet förutsätter att du har en OpenTelemetry Collector med en OTLP-mottagare igång. Mer information finns i den här README.
Aktivera OTLP-exportören
# Import the `use_microsoft_opentelemetry()`, `trace`, `OTLPSpanExporter`, and
# `BatchSpanProcessor` classes from the appropriate packages.
from microsoft.opentelemetry import use_microsoft_opentelemetry
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.
use_microsoft_opentelemetry(
enable_azure_monitor=True,
azure_monitor_connection_string="<ConnectionString>",
)
# 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.
otlpExporter = OTLPSpanExporter(endpoint="http://localhost:4317")
# Create a batch span processor that uses the OTLP span exporter.
spanProcessor = BatchSpanProcessor(otlpExporter)
# Add the batch span processor to the tracer provider.
trace.get_tracer_provider().add_span_processor(spanProcessor)
# Start a new span with the name "test".
with tracer.start_as_current_span("test"):
print("Hello world!")
OpenTelemetry-konfigurationer
Du kan konfigurera följande inställningar via miljövariabler. Använd fliken för ditt språk och distro.
| Miljövariabel |
beskrivning |
APPLICATIONINSIGHTS_CONNECTION_STRING |
Ange den här variabeln till reťazec pripojenia för Application Insights-resursen. |
APPLICATIONINSIGHTS_STATSBEAT_DISABLED |
Ställ in den här variabeln på true för att välja bort intern måttsamling. |
OTEL_RESOURCE_ATTRIBUTES |
Nyckel/värde-par som ska användas som resursattribut. Mer information om resursattribut finns i Resource SDK-specifikationen. |
OTEL_SERVICE_NAME |
Anger värdet för resursattributet service.name . Om service.name anges även i OTEL_RESOURCE_ATTRIBUTES, OTEL_SERVICE_NAME har företräde. |
| Miljövariabel |
beskrivning |
APPLICATIONINSIGHTS_CONNECTION_STRING |
Ange den här variabeln till reťazec pripojenia för Application Insights-resursen. |
APPLICATIONINSIGHTS_STATSBEAT_DISABLED |
Ställ in den här variabeln på true för att välja bort intern måttsamling. |
OTEL_RESOURCE_ATTRIBUTES |
Nyckel/värde-par som ska användas som resursattribut. Mer information om resursattribut finns i Resource SDK-specifikationen. |
OTEL_SERVICE_NAME |
Anger värdet för resursattributet service.name . Om service.name anges även i OTEL_RESOURCE_ATTRIBUTES, OTEL_SERVICE_NAME har företräde. |
Mer information om OpenTelemetry SDK-konfiguration finns i dokumentationen om OpenTelemetry.
Redigera URL-frågesträngar
Om du vill redigera URL-frågesträngar inaktiverar du frågesträngssamlingen. Den här inställningen rekommenderas om du anropar Azure lagring med hjälp av en SAS-token.
Microsoft.OpenTelemetry distro innehåller ASP.NET Core- och HttpClient-instrumentation. För program som hanterar känsliga frågesträngar aktiverar du uttryckligen maskering av frågesträngar innan distron initieras:
- Ange
OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION till false för ASP.NET Core instrumentation.
- Ställ in
OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION på false för HttpClient-instrumentation.
Om du ställer endera variabeln till true, inaktiveras instrumenteringens maskering av frågesträngar.
Microsoft OpenTelemetry Distro för .NET innehåller HttpClient-instrumentation. Ange OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION till false före initiering för att aktivera maskering av frågesträngar. För ASP.NET Core-värdskap anger du även OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION till false.
Om du använder det fristående Azure.Monitor.OpenTelemetry.Exporter paketet i stället lägger du till och konfigurerar det relevanta instrumentationsbiblioteket separat.
Lägg till följande i konfigurationsfilen applicationinsights.json :
Dölj URL-frågesträngar
{
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "url.query",
"pattern": "^.*$",
"replace": "REDACTED",
"action": "mask"
}
]
},
{
"type": "attribute",
"actions": [
{
"key": "url.full",
"pattern": "[?].*$",
"replace": "?REDACTED",
"action": "mask"
}
]
}
]
}
}
OpenTelemetry-communityn arbetar aktivt för att stödja redigering.
När du använder Microsoft OpenTelemetry Distro kan du maskera frågesträngar genom att lägga till en span-processor i distributionskonfigurationen.
Redigera URL-frågesträngar
export class RedactQueryStringsSample {
static async run() {
// Import the Microsoft OpenTelemetry Distro.
const { useMicrosoftOpenTelemetry } = await import("@microsoft/opentelemetry");
const { SEMATTRS_HTTP_ROUTE, SEMATTRS_HTTP_TARGET, SEMATTRS_HTTP_URL } =
await import("@opentelemetry/semantic-conventions");
class RedactQueryStringProcessor {
forceFlush() {
return Promise.resolve();
}
onStart() {}
shutdown() {
return Promise.resolve();
}
onEnd(span: any) {
const route = String(span.attributes[SEMATTRS_HTTP_ROUTE] ?? "");
const url = String(span.attributes[SEMATTRS_HTTP_URL] ?? "");
const target = String(span.attributes[SEMATTRS_HTTP_TARGET] ?? "");
const strip = (s: string) => {
const i = s.indexOf("?");
return i === -1 ? s : s.substring(0, i);
};
if (route)
span.attributes[SEMATTRS_HTTP_ROUTE] = strip(route);
if (url)
span.attributes[SEMATTRS_HTTP_URL] = strip(url);
if (target)
span.attributes[SEMATTRS_HTTP_TARGET] = strip(target);
}
}
// Configure Azure Monitor export and the options used by this sample.
const options = {
azureMonitor: {
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING ||
"<ConnectionString>",
},
},
spanProcessors: [new RedactQueryStringProcessor()],
};
// Initialize the Microsoft OpenTelemetry Distro.
const monitor = useMicrosoftOpenTelemetry(options);
console.log("Azure Monitor initialized (query strings redacted)");
}
}
OpenTelemetry-communityn arbetar aktivt med att stödja redigering.
Måttexportintervall
Du kan konfigurera måttexportintervallet med hjälp OTEL_METRIC_EXPORT_INTERVAL av miljövariabeln.
export OTEL_METRIC_EXPORT_INTERVAL="60000"
Standardvärdet är 60000 millisekunder (60 sekunder). Den här inställningen styr hur ofta OpenTelemetry SDK exporterar mått.
Tips
Azure Monitor Mått och Azure Monitor Arbetsyta matar in anpassade mått med ett fast intervall på 60 sekunder. Mått som skickas oftare är buffrade och bearbetas en gång varje 60:e sekund. Log Analytics registrerar mått med det intervall som de skickas, vilket kan öka kostnaden med kortare intervall och fördröja synligheten vid längre.
Mer information finns i följande OpenTelemetry-specifikationer:
Felsökning, feedback och support
Tips
Följande avsnitt är tillgängliga i alla OpenTelemetry Distro-artiklar.
Felsökning
OpenTelemetry Återkoppling
Så här ger du feedback:
Support
Välj en flik för det språk du väljer för att identifiera supportalternativ.
- För Azure support problem öppnar du ett Azure support-ärende.
- För hjälp med felsökning, granska felsökningsstegen.
- Om du har problem med OpenTelemetry kontaktar du OpenTelemetry-communityn direkt.
- En lista över öppna problem som rör Azure Monitor Java automatisk instrumentering finns på sidan GitHub problem.
- För Azure support problem öppnar du ett Azure support-ärende.
- Om du har problem med OpenTelemetry kontaktar du OpenTelemetry-communityn direkt.
- En lista över öppna problem med inbyggda Spring Boot-program finns på sidan GitHub issues.
- En lista över öppna problem med quarkus-inbyggda program finns på sidan GitHub issues.
Anmärkning
Quarkus-communityn stöder och underhåller Quarkus-tillägg. Om du vill ha hjälp använder du Quarkus community-supportkanaler. Microsoft tillhandahåller inte teknisk support för den här integreringen.
- För Azure support problem öppnar du ett Azure support-ärende.
- Om du har problem med OpenTelemetry kontaktar du JavaScript-communityn OpenTelemetry direkt.
- En lista över öppna problem som rör Azure Monitor Exporter finns på sidan GitHub issues.
Nästa steg