В этом руководстве объясняется, как настроить OpenTelemetry (OTel) в Azure Monitor Application Insights с помощью дистрибутива OpenTelemetry Azure Monitor. Правильная конфигурация обеспечивает согласованную сбор данных телеметрии в .NET, Java, Node.jsи Python приложениях, что обеспечивает более надежный мониторинг и диагностику.
строка подключения
В «Application Insights» строка подключения определяет целевое расположение для отправки данных телеметрии.
Используйте один из следующих трех способов настройки строки подключения.
Добавьте UseAzureMonitor() в 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();
Задайте переменную среды.
APPLICATIONINSIGHTS_CONNECTION_STRING=<YOUR-CONNECTION-STRING>
Добавьте следующий раздел в appsettings.json файл конфигурации.
{
"AzureMonitor": {
"ConnectionString": "<YOUR-CONNECTION-STRING>"
}
}
Примечание.
Если задать строка подключения в нескольких местах, применяется следующий порядок приоритета:
- Код
- Переменная среды
- Файл конфигурации
Используйте один из следующих двух методов для настройки строка подключения:
Добавьте Экспортер Azure Monitor к каждому сигналу OpenTelemetry при запуске приложения.
// 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>";
})
.Build();
// 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>";
})
.Build();
// 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>";
});
});
});
Задайте переменную среды.
APPLICATIONINSIGHTS_CONNECTION_STRING=<YOUR-CONNECTION-STRING>
Примечание.
Если задать строка подключения в нескольких местах, применяется следующий порядок приоритета:
- Код
- Переменная среды
Используйте один из следующих трех способов настройки строки подключения.
Добавьте следующий раздел в файл конфигурации applicationinsights.json.
{
"connectionString": "..."
}
Вы также можете задать строку подключения, указав файл, из которого её загружать. Файл должен содержать только строка подключения и ничего другого. Если указать относительный путь, он определяется относительно каталога, где находится applicationinsights-agent-3.7.8.jar.
{
"connectionString": "${file:connection-string-file.txt}"
}
Задайте переменную среды.
APPLICATIONINSIGHTS_CONNECTION_STRING
Добавьте applicationinsights.connection.string в качестве системного свойства.
java -javaagent:/path/to/applicationinsights-agent-3.7.8.jar \
-Dapplicationinsights.connection.string="<YOUR-CONNECTION-STRING>" \
-jar myapp.jar
Примечание.
Если строка подключения задана в нескольких местах, мы придерживаемся следующего порядка приоритета:
- Системное свойство
- Переменная среды
- Файл конфигурации
При развертывании нескольких приложений в одной Java Virtual Machine (JVM) и если вы хотите, чтобы они отправляли телеметрию в разные строки подключения, см. Переопределения строк подключения (предварительная версия).
Используйте один из следующих двух способов настройки строки подключения:
Задайте переменную среды.
APPLICATIONINSIGHTS_CONNECTION_STRING=<YOUR-CONNECTION-STRING>
Задайте свойство.
applicationinsights.connection.string=<YOUR-CONNECTION-STRING>
Совет
-
Образцы TypeScript для Azure Monitor OpenTelemetry (авторитетный источник соответствия): Образцы TypeScript
Используйте один из следующих двух способов настройки строки подключения:
Задайте переменную среды.
APPLICATIONINSIGHTS_CONNECTION_STRING=<YOUR-CONNECTION-STRING>
Используйте объект конфигурации.
export class BasicConnectionSample {
static async run() {
const { useAzureMonitor } = await import("@azure/monitor-opentelemetry");
const options = {
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING || "<YOUR-CONNECTION-STRING>",
},
};
const monitor = useAzureMonitor(options);
console.log("Azure Monitor initialized");
}
}
Используйте один из следующих двух способов настройки строки подключения:
Задайте переменную среды.
APPLICATIONINSIGHTS_CONNECTION_STRING=<YOUR-CONNECTION-STRING>
Используйте функцию configure_azure_monitor .
# 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>",
)
Настройка имени облачной роли и экземпляра облачной роли
Для поддерживаемых языков дистрибутив Azure Monitor OpenTelemetry автоматически обнаруживает контекст ресурса и предоставляет значения по умолчанию для свойств Cloud Role Name и экземпляра роли в облаке вашего компонента. Однако может потребоваться переопределить значения по умолчанию на то, что имеет смысл для вашей команды. Значение имени облачной роли отображается на карте приложения в качестве имени под узлом.
Задайте имя облачной роли и экземпляр облачной роли через атрибуты Resource. Имя облачной роли использует атрибуты service.namespace и service.name, но переходит на service.name, если service.namespace не задан. Экземпляр облачной роли использует значение атрибута service.instance.id. Сведения о стандартных атрибутах ресурсов см. в разделе "Семантические соглашения 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(resourceAttributes));
// Build the ASP.NET Core web application.
var app = builder.Build();
// Start the ASP.NET Core web application.
app.Run();
Задайте имя облачной роли и экземпляр облачной роли через атрибуты Resource. Имя облачной роли использует атрибуты service.namespace и service.name, но переходит на service.name, если service.namespace не задан. Экземпляр облачной роли использует значение атрибута service.instance.id. Сведения о стандартных атрибутах ресурсов см. в разделе "Семантические соглашения 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()
.Build();
// 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()
.Build();
// 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();
});
});
Примечание.
Если вы не задаете имя облачной роли и экземпляр облачной роли, имя облачной роли по умолчанию присваивается имени ресурса Application Insights, а экземпляр облачной роли по умолчанию — имя компьютера.
Используйте один из следующих трех способов настройки имени облачной роли и экземпляра облачной роли:
Добавьте следующий раздел в файл конфигурации applicationinsights.json.
{
"role": {
// Set the cloud role name
"name": "my cloud role name",
// Set the cloud role instance
"instance": "my cloud role instance"
}
}
Задайте переменные среды.
APPLICATIONINSIGHTS_ROLE_NAME
APPLICATIONINSIGHTS_ROLE_INSTANCE
Добавьте applicationinsights.role.name и applicationinsights.role.instance как системные свойства.
java -javaagent:/path/to/applicationinsights-agent-3.7.8.jar \
-Dapplicationinsights.role.name="my-cloud-role-name" \
-Dapplicationinsights.role.instance="my-cloud-role-instance" \
-jar myapp.jar
Примечание.
Если задать имя облачной роли и экземпляр облачной роли в нескольких местах, применяется следующий порядок приоритетов:
- Системное свойство
- Переменная среды
- Файл конфигурации
Если вы развертываете несколько приложений в одном и том же JVM и хотите, чтобы они отправляли данные телеметрии в разные имена ролей облака, см. переопределение имен ролей облака (предварительная версия).
Чтобы задать имя облачной роли, выполните следующие действия.
- Используйте
spring.application.name для встроенных приложений образов Spring Boot.
- Используйте собственные приложения образов
quarkus.application.name Quarkus.
Примечание.
Сообщество Quarkus поддерживает и обслуживает расширения Quarkus. Для получения справки используйте каналы поддержки сообщества Quarkus. Microsoft не предоставляет техническую поддержку этой интеграции.
Задайте имя облачной роли и экземпляр облачной роли через атрибуты Resource. Имя облачной роли использует атрибуты service.namespace и service.name, но переходит на service.name, если service.namespace не задан. Экземпляр облачной роли использует значение атрибута service.instance.id. Сведения о стандартных атрибутах ресурсов см. в разделе "Семантические соглашения OpenTelemetry".
export class CloudRoleSample {
static async run() {
const { useAzureMonitor } = await import("@azure/monitor-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");
const customResource = resourceFromAttributes({
[ATTR_SERVICE_NAME]: process.env.OTEL_SERVICE_NAME || "my-service",
[ATTR_SERVICE_NAMESPACE]: process.env.OTEL_SERVICE_NAMESPACE || "my-namespace",
[ATTR_SERVICE_INSTANCE_ID]: process.env.OTEL_SERVICE_INSTANCE_ID || "my-instance",
});
const options = {
resource: customResource,
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING || "<YOUR-CONNECTION-STRING>",
},
};
const monitor = useAzureMonitor(options);
console.log("Azure Monitor initialized (custom resource)");
}
}
Задайте имя и экземпляр облачной роли с помощью атрибутов Resource. Имя облачной роли использует атрибуты service.namespace и service.name, хотя и возвращается к service.name, если service.namespace не задано. Экземпляр облачной роли использует значение атрибута service.instance.id. Сведения о стандартных атрибутах ресурсов см. в разделе "Семантические соглашения OpenTelemetry".
Задайте атрибуты ресурса с помощью переменных среды OTEL_RESOURCE_ATTRIBUTES и/или OTEL_SERVICE_NAME.
OTEL_RESOURCE_ATTRIBUTES принимает ряд пар "ключ-значение", разделенных запятыми. Например, чтобы задать имя облачной роли значением my-namespace.my-helloworld-service и задать экземпляр облачной роли значением my-instance, можно задать OTEL_RESOURCE_ATTRIBUTES и OTEL_SERVICE_NAME так:
export OTEL_RESOURCE_ATTRIBUTES="service.namespace=my-namespace,service.instance.id=my-instance"
export OTEL_SERVICE_NAME="my-helloworld-service"
Если атрибут service.namespace Resource не задан, можно также задать Cloud Role Name только с помощью переменной среды OTEL_SERVICE_NAME или атрибута service.name Resource. Например, чтобы задать имя облачной роли значением my-helloworld-service и задать экземпляр облачной роли значением my-instance, можно задать OTEL_RESOURCE_ATTRIBUTES и OTEL_SERVICE_NAME так:
export OTEL_RESOURCE_ATTRIBUTES="service.instance.id=my-instance"
export OTEL_SERVICE_NAME="my-helloworld-service"
Настройка атрибутов ресурсов
Автоматическое инструментирование и дистрибутивы Azure Monitor позволяют обнаруживать ресурсы, когда они выполняются в поддерживаемых средах Azure. Дополнительные сведения см. в разделе Автоматический сбор данных и детекторы ресурсов для Azure Monitor в OpenTelemetry.
Для настройки вручную задайте атрибуты ресурсов непосредственно с помощью стандартных параметров OpenTelemetry:
# Applies to .NET (ASP.NET/ASP.NET Core), Java, Node.js, and Python
export OTEL_SERVICE_NAME="my-service"
export OTEL_RESOURCE_ATTRIBUTES="cloud.provider=azure,cloud.region=westus,cloud.resource_id=/subscriptions/<SUB>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<APP>"
В PowerShell Windows:
$Env:OTEL_SERVICE_NAME="my-service"
$Env:OTEL_RESOURCE_ATTRIBUTES="cloud.provider=azure,cloud.region=westus,cloud.resource_id=/subscriptions/<SUB>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<APP>"
Включение выборки
Отбор данных снижает объем и стоимость обработки телеметрической информации. Azure Monitor дистрибутив OpenTelemetry поддерживает две стратегии отбора проб для трассировок и (при необходимости) позволяет синхронизировать журналы приложений с решениями по отбору проб трассировки. Самплер прикрепляет выбранный коэффициент выборки или частоту к экспортируемым трассировкам, чтобы Application Insights мог точно настроить учёт данных о нагрузках. Общие сведения см. в разделе " Дополнительные сведения о выборке".
Внимание
- Решения по выборке применяются к трассировкам (диапазонам).
-
Журналы , принадлежащие неуправляемой трассировке, удаляются по умолчанию, но вы можете отказаться от выборки на основе трассировки для журналов.
-
Метрики никогда не выборки.
Используйте стандартные переменные среды OpenTelemetry, чтобы выбрать образец и указать его аргумент. Дополнительные сведения о типах отборщиков OpenTelemetry см. в OTEL_TRACES_SAMPLER.
Примечание.
Начиная с Java агента версии 3.4.0 доступна ограниченная скорость выборки и теперь используется по умолчанию.
Взятие проб применяется только к логам внутри запроса. Журналы, не находящиеся внутри запроса (например, журналы запуска), всегда собираются по умолчанию. Если вы хотите проанализировать эти лог-файлы, используйте настройки выборки.
Выборка с фиксированным процентом
-
APPLICATIONINSIGHTS_SAMPLING_PERCENTAGE процент выборки
- Значение равно проценту (например,
33.333 = ~33,333%).
Выборка с ограничением скорости
-
APPLICATIONINSIGHTS_SAMPLING_REQUESTS_PER_SECOND Максимальное количество запросов в секунду
Параметры конфигурации и примеры см. в разделе "Настройка переопределения выборки".
В следующих примерах показано, как настроить выборку с помощью переменных среды.
Примечание.
Следующие примеры недопустимы для Java. Чтобы увидеть правильные переменные среды, откройте предыдущую вкладку Java.
Выборка фиксированного процента (~10%)
export OTEL_TRACES_SAMPLER="microsoft.fixed_percentage"
export OTEL_TRACES_SAMPLER_ARG=0.1
Выборка с ограничением скорости (~1,5 трассировок в секунду)
export OTEL_TRACES_SAMPLER="microsoft.rate_limited"
export OTEL_TRACES_SAMPLER_ARG=1.5
Примечание.
При настройке параметров уровня кода и переменных среды переменные среды имеют приоритет. Поведение выборки по умолчанию может отличаться по языку.
Фиксированная процентная выборка
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenTelemetry().UseAzureMonitor(o =>
{
o.SamplingRatio = 0.1F; // ~10%
});
var app = builder.Build();
app.Run();
Выборка с ограничением скорости
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenTelemetry().UseAzureMonitor(o =>
{
o.TracesPerSecond = 1.5; // ~1.5 traces/sec
});
var app = builder.Build();
app.Run();
Примечание.
Если вы не задаете пример в коде или с помощью переменных среды, Azure Monitor использует ApplicationInsightsSampler по умолчанию.
Фиксированная процентная выборка
var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAzureMonitorTraceExporter(o => o.SamplingRatio = 0.1F)
.Build();
Выборка с ограничением скорости
var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAzureMonitorTraceExporter(o => o.TracesPerSecond = 1.5F)
.Build();
Примечание.
Если вы не задаете пример в коде или с помощью переменных среды, Azure Monitor использует ApplicationInsightsSampler по умолчанию.
Для Java нельзя настроить выборку в коде.
Для собственных приложений Spring Boot применимы настройки опробования SDK OpenTelemetry Java.
Для собственных приложений Quarkus настройте выборку с помощью руководства Quarkus OpenTelemetry, а затем используйте экспортер OpenTelemetry Quarkus для отправки данных телеметрии в Application Insights.
Примечание.
Сообщество Quarkus поддерживает и обслуживает расширения Quarkus. Для получения справки используйте каналы поддержки сообщества Quarkus. Microsoft не предоставляет техническую поддержку этой интеграции.
Начиная с версии 1.16.0, по умолчанию используется выборка с ограничением по скорости.
Фиксированная процентная выборка
const { useAzureMonitor } = await import("@azure/monitor-opentelemetry");
const monitor = useAzureMonitor({
samplingRatio: 0.1, // ~10%
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING || "<YOUR-CONNECTION-STRING>",
},
});
Выборка с ограничением скорости
const { useAzureMonitor } = await import("@azure/monitor-opentelemetry");
const monitor = useAzureMonitor({
tracesPerSecond: 1.5, // ~1.5 traces/sec
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING || "<YOUR-CONNECTION-STRING>",
},
});
Примечание.
Если вы не задаете пример в коде или с помощью переменных среды, Azure Monitor использует RateLimitedSampler по умолчанию.
Начиная с 1.8.6, по умолчанию используется выборка с ограничением по скорости.
Фиксированная процентная выборка
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor(
connection_string="<YOUR-CONNECTION-STRING>",
sampling_ratio=0.1, # 0.1 = 10% of traces sampled
)
Выборка с ограничением скорости
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor(
connection_string="<YOUR-CONNECTION-STRING>",
traces_per_second=1.5, # ~1.5 traces/sec
)
Примечание.
Если вы не задаете переменные среды и не предоставляете либо sampling_ratio, либо traces_per_second, configure_azure_monitor() по умолчанию использует RateLimitedSampler.
Совет
При использовании выборки с фиксированным процентом и вы не знаете, какое значение следует задать для частоты выборки, начните с 5% (0.05). Настройте частоту на основе точности операций, отображаемых в панелях ошибок и производительности. Любая выборка снижает точность, поэтому следует обращать внимание на метрики OpenTelemetry, которые не зависят от выборки.
Настройка выборки в файле конфигурации не поддерживается для ASP.NET Core. Чтобы настроить выборку, используйте вместо этого переменные кода или среды.
Настройка выборки в файле конфигурации не поддерживается для .NET. Чтобы настроить выборку, используйте вместо этого переменные кода или среды.
Примечание.
Начиная с Java агента версии 3.4.0 доступна ограниченная скорость выборки и теперь используется по умолчанию.
Взятие проб применяется только к логам внутри запроса. Журналы, не находящиеся внутри запроса (например, журналы запуска), всегда собираются по умолчанию. Если вы хотите проанализировать эти лог-файлы, используйте настройки выборки.
Если выборка не настроена, по умолчанию используется ограниченная скорость выборки, настроенная для записи не более пяти (приблизительно) пяти запросов в секунду, а также всех зависимостей и журналов этих запросов.
Эта конфигурация заменяет предыдущий параметр по умолчанию, который был для записи всех запросов. Если вы по-прежнему хотите записать все запросы, используйте выборку с фиксированным процентом и задайте процент выборки 100.
Фиксированная процентная выборка
В этом примере показано, как настроить выборку примерно на треть всех запросов:
{
"sampling": {
"percentage": 33.333
}
}
Задайте процент выборки с помощью переменной среды. Он имеет приоритет над процентом выборки, указанным в конфигурации JSON.
Совет
Для процента выборки выберите процент, близкий к 100/N, где N является целым числом. В настоящее время выборка не поддерживает другие значения.
Выборка с ограничением скорости
Примечание.
Выборка с ограниченной скоростью представляет собой приближение, поскольку внутренне она вынуждена адаптировать "фиксированный" процент выборки с течением времени, чтобы получать точные счета количества элементов для каждой записи телеметрии. Внутри системы выборка с ограниченной скоростью настраивается для быстрой адаптации (0,1 секунд) к новым нагрузкам приложений. По этой причине вы не должны видеть, что он превышает настроенную скорость на много или очень долго.
В этом примере показано, как задать выборку для записи по крайней мере (приблизительно) по одному запросу в секунду:
{
"sampling": {
"requestsPerSecond": 1.0
}
}
Значение requestsPerSecond может быть десятичным, поэтому при необходимости его можно настроить для записи меньше одного запроса в секунду. Например, значение 0.5 означает, что фиксируется не более одного запроса каждые 2 секунды.
Задайте ограничение скорости с помощью переменной среды. Он имеет приоритет над ограничением скорости, указанным в конфигурации JSON.
нативный Java не поддерживает конфигурирование сэмплинга в файле конфигурации. Чтобы настроить выборку, используйте переменные кода или среды.
Начиная с версии 1.16.0, по умолчанию используется выборка с ограничением по скорости.
Задайте конфигурацию выборки в файлеapplicationinsights.json . Этот файл находится в корневой @azure/monitor-opentelemetry папке папки установки пакета, например node_modules/@azure/monitor-opentelemetry. Все AzureMonitorOpenTelemetryClient экземпляры используют эти значения конфигурации.
Фиксированная процентная выборка
{
"samplingRatio": 0.1, // ~10%
}
Выборка с ограничением скорости
{
"samplingRatio": 1.5, // ~1.5 traces/sec
}
Python не поддерживает настройку выборки в файле конфигурации. Чтобы настроить выборку, используйте переменные кода или среды.
При включении этой функции система удаляет записи журналов, принадлежащие невыборочным трассировкам, чтобы журналы оставались в соответствии с выборкой трассировки.
- Запись журнала является частью трассировки при наличии допустимой
SpanId.
- Если связанная трассировка
TraceFlags указывает "не отсортирован", функция удаляет запись журнала.
- Записи журнала без контекста трассировки не затрагиваются .
- Эта функция включена по умолчанию.
Используйте следующие параметры для настройки выборки журналов на основе трассировки:
builder.Services.AddOpenTelemetry().UseAzureMonitor(o =>
{
o.EnableTraceBasedLogsSampler = true;
});
var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddAzureMonitorTraceExporter(o => o.EnableTraceBasedLogsSampler = true)
.Build();
Для приложений Java выборка на основе трассировки включена по умолчанию.
Для нативных приложений Spring Boot и Quarkus выборка, основанная на трассировке, включена по умолчанию.
Примечание.
Сообщество Quarkus поддерживает и обслуживает расширения Quarkus. Для получения справки используйте каналы поддержки сообщества Quarkus. Microsoft не предоставляет техническую поддержку этой интеграции.
const { useAzureMonitor } = await import("@azure/monitor-opentelemetry");
const monitor = useAzureMonitor({
enableTraceBasedSamplingForLogs: true,
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING || "<YOUR-CONNECTION-STRING>",
},
});
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor(
connection_string="<YOUR-CONNECTION-STRING>",
enable_trace_based_sampling_for_logs=True,
)
Живые метрики
Динамические метрики предоставляют панель мониторинга аналитики в режиме реального времени для анализа активности приложений и производительности.
По умолчанию эта функция включена.
Пользователи могут отключить динамические метрики при настройке дистрибутива.
builder.Services.AddOpenTelemetry().UseAzureMonitor(options => {
// Disable the Live Metrics feature.
options.EnableLiveMetrics = false;
});
Эта функция недоступна в Azure Monitor .NET экспортере.
Динамические метрики недоступны для собственных приложений GraalVM.
Пользователи могут включить или отключить динамические метрики при настройке дистрибутива enableLiveMetrics с помощью свойства.
export class LiveMetricsSample {
static async run() {
const { useAzureMonitor } = await import("@azure/monitor-opentelemetry");
const options = {
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING || "<YOUR-CONNECTION-STRING>",
},
enableLiveMetrics: true, // set to false to disable
};
const monitor = useAzureMonitor(options);
console.log("Azure Monitor initialized (live metrics enabled)");
}
}
Вы можете включить живые метрики с помощью дистрибутива OpenTelemetry от Azure для Python следующим образом:
...
configure_azure_monitor(
enable_live_metrics=True
)
...
Чтобы создать более безопасное подключение к Azure, включите проверку подлинности Microsoft Entra. Этот метод аутентификации предотвращает добавление неавторизованных телеметрических данных в вашу подписку.
Дополнительные сведения см. на специальной странице проверки подлинности Microsoft Entra, связанной для всех поддерживаемых языков.
Microsoft Entra ID проверка подлинности недоступна для приложений GraalVM Native.
Автономное хранилище и автоматические повторные попытки
Предложения OpenTelemetry от Azure Monitor кэшируют данные телеметрии, когда приложение отключается от Application Insights, и пытаются снова отправлять данные до 48 часов. Рекомендации по обработке данных см. в разделе "Экспорт и удаление частных данных". Приложения с высокой нагрузкой иногда сбрасывают данные телеметрии по двум причинам: превышение допустимого времени или превышение максимального размера файла. При необходимости продукт определяет последние события по сравнению со старыми.
Пакет дистрибутива включает AzureMonitorExporter, который по умолчанию использует одно из следующих расположений для автономного хранилища (указано в порядке приоритета):
Windows
- %LOCALAPPDATA%\Microsoft\AzureMonitor
- %TEMP%\Microsoft\AzureMonitor
Не Windows
- %TMPDIR%/Microsoft/AzureMonitor
- /var/tmp/Microsoft/AzureMonitor
- /tmp/Microsoft/AzureMonitor
Чтобы переопределить каталог по умолчанию, необходимо задать значение 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 can't 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();
Чтобы отключить эту функцию, установите AzureMonitorOptions.DisableOfflineStorage = true.
По умолчанию AzureMonitorExporter использует одно из следующих расположений для автономного хранилища, указанное в порядке приоритета:
Windows
- %LOCALAPPDATA%\Microsoft\AzureMonitor
- %TEMP%\Microsoft\AzureMonitor
Не Windows
- %TMPDIR%/Microsoft/AzureMonitor
- /var/tmp/Microsoft/AzureMonitor
- /tmp/Microsoft/AzureMonitor
Чтобы переопределить каталог по умолчанию, необходимо задать значение 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 can't be sent to Azure Monitor immediately.
options.StorageDirectory = "C:\\SomeDirectory";
})
.Build();
// 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 can't be sent to Azure Monitor immediately.
options.StorageDirectory = "C:\\SomeDirectory";
})
.Build();
// 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 can't be sent to Azure Monitor immediately.
options.StorageDirectory = "C:\\SomeDirectory";
});
});
});
Чтобы отключить эту функцию, установите AzureMonitorExporterOptions.DisableOfflineStorage = true.
Если агент не может отправлять данные телеметрии в Azure Monitor, он хранит файлы телеметрии на диске. Файлы сохраняются в telemetry папке в каталоге, указанном системным свойством java.io.tmpdir . Каждое имя файла начинается с метки времени и заканчивается расширением .trn . Этот механизм автономного хранилища помогает обеспечить хранение данных телеметрии во время временных сбоев сети или сбоев приема.
Агент хранит до 50 МБ данных телеметрии по умолчанию и разрешает настройку ограничения хранилища. Агент периодически пытается отправить хранимую телеметрию. Файлы телеметрии старше 48 часов удаляются, а самые старые события удаляются при достижении ограничения хранилища.
Полный список доступных конфигураций см. в разделе "Параметры конфигурации".
Если агент не может отправлять данные телеметрии в Azure Monitor, он хранит файлы телеметрии на диске. Файлы сохраняются в telemetry папке в каталоге, указанном системным свойством java.io.tmpdir . Каждое имя файла начинается с метки времени и заканчивается расширением .trn . Этот механизм автономного хранилища помогает обеспечить хранение данных телеметрии во время временных сбоев сети или сбоев приема.
Агент хранит до 50 МБ данных телеметрии по умолчанию. Попытки отправки хранимой телеметрии периодически выполняются. Файлы телеметрии старше 48 часов удаляются, а самые старые события удаляются при достижении ограничения хранилища.
По умолчанию AzureMonitorExporter использует одно из следующих расположений для автономного хранилища.
- Windows
- %TEMP%\Microsoft-AzureMonitor-
<unique-identifier>\opentelemetry-nodejs-<your-instrumentation-key>
- Не 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> хэш, созданный из атрибутов пользовательской среды, таких как ключ инструментирования, имя процесса, имя пользователя и каталог приложения. Этот идентификатор решает общую проблему системы с несколькими пользователями: когда первый пользователь создает каталог хранилища, их разрешения на файл (параметры umask) могут блокировать доступ к тому же пути другим пользователям. Уникальный каталог для каждого контекста пользователя гарантирует, что каждый пользователь получает собственное расположение хранилища с соответствующими разрешениями на доступ.
Чтобы переопределить каталог по умолчанию, необходимо задать значение storageDirectory.
Например:
export class OfflineStorageSample {
static async run() {
const { useAzureMonitor } = await import("@azure/monitor-opentelemetry");
const options = {
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING || "<YOUR-CONNECTION-STRING>",
storageDirectory: "C:\\\\SomeDirectory",
disableOfflineStorage: false, // set to true to disable
},
};
const monitor = useAzureMonitor(options);
console.log("Azure Monitor initialized (offline storage configured)");
}
}
Чтобы отключить эту функцию, следует задать параметр disableOfflineStorage = true.
По умолчанию Azure Monitor экспортеры используют следующий путь:
<tempfile.gettempdir()>/Microsoft-AzureMonitor-<unique-identifier>/opentelemetry-python-<your-instrumentation-key>
Это <unique-identifier> хэш, созданный из атрибутов пользовательской среды, таких как ключ инструментирования, имя процесса, имя пользователя и каталог приложения. Этот идентификатор решает общую проблему системы с несколькими пользователями: когда первый пользователь создает каталог хранилища, их разрешения на файл (параметры umask) могут блокировать доступ к тому же пути другим пользователям. Уникальный каталог для каждого контекста пользователя гарантирует, что каждый пользователь получает собственное расположение хранилища с соответствующими разрешениями на доступ.
Чтобы переопределить каталог по умолчанию, необходимо задать storage_directory в нужный каталог.
Например:
...
# 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",
)
...
Чтобы отключить эту функцию, необходимо задать значение disable_offline_storageTrue. По умолчанию — False.
Например:
...
# 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,
)
...
Включить экспортёр OTLP
Возможно, вы захотите включить экспортер OpenTelemetry (OTLP) вместе с экспортером Azure Monitor, чтобы отправлять данные телеметрии в два расположения.
Примечание.
Экспортёр OTLP представлен только для удобства. Microsoft официально не поддерживает OTLP Exporter или любые компоненты или сторонние проекты, зависящие от него.
Установите пакет OpenTelemetry.Exporter.OpenTelemetryProtocol в проекте.
dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol
Добавьте приведенный ниже фрагмент кода. В этом примере предполагается, что у вас есть сборщик OpenTelemetry с работающим приемником OTLP. Дополнительные сведения см. в разделе example на 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();
Установите пакет OpenTelemetry.Exporter.OpenTelemetryProtocol в проекте.
dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol
Добавьте приведенный ниже фрагмент кода. В этом примере предполагается, что у вас есть сборщик OpenTelemetry с работающим приемником OTLP. Дополнительные сведения см. в разделе example на 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()
.Build();
// 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()
.Build();
Агент Application Insights Java не поддерживает OTLP.
Дополнительные сведения о поддерживаемых конфигурациях см. в дополнительной документации по Java.
Вы не можете включить экспортер OpenTelemetry (OTLP) вместе с экспортером Azure Monitor, чтобы отправлять данные телеметрии в двух местоположениях.
Установите экспортер трассировки сборщика OpenTelemetry и другие пакеты OpenTelemetry в проекте.
npm install @opentelemetry/api
npm install @opentelemetry/exporter-trace-otlp-http
npm install @opentelemetry/sdk-trace-base
npm install @opentelemetry/sdk-trace-node
Добавьте приведенный ниже фрагмент кода. В этом примере предполагается, что у вас есть сборщик OpenTelemetry с работающим приемником OTLP. Дополнительные сведения см. в разделе example на GitHub.
export class OtlpExporterSample {
static async run() {
const { useAzureMonitor } = await import("@azure/monitor-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 = {
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING || "<YOUR-CONNECTION-STRING>",
},
spanProcessors: [new BatchSpanProcessor(otlpExporter)],
};
const monitor = useAzureMonitor(options);
console.log("Azure Monitor initialized (OTLP exporter added)");
}
}
Установите пакет opentelemetry-exporter-otlp .
Добавьте приведенный ниже фрагмент кода. В этом примере предполагается, что у вас есть сборщик OpenTelemetry с работающим приемником OTLP. Дополнительные сведения см. в этом README.
# 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
Вы можете получить доступ к следующим конфигурациям OpenTelemetry через переменные среды при использовании дистрибутивов Azure Monitor OpenTelemetry.
| Переменная среды |
Описание |
APPLICATIONINSIGHTS_CONNECTION_STRING |
Установите эту переменную на строку подключения, связанную с ресурсом Application Insights. |
APPLICATIONINSIGHTS_STATSBEAT_DISABLED |
Установите переменную true, чтобы отказаться от внутренней коллекции метрик. |
OTEL_RESOURCE_ATTRIBUTES |
Пары "ключ-значение" для использования в качестве атрибутов ресурсов. Дополнительные сведения об атрибутах ресурсов см. в спецификации пакета SDK для ресурсов. |
OTEL_SERVICE_NAME |
Задает значение атрибута service.name ресурса. Если service.name также указан в OTEL_RESOURCE_ATTRIBUTES, OTEL_SERVICE_NAME имеет приоритет. |
| Переменная среды |
Описание |
APPLICATIONINSIGHTS_CONNECTION_STRING |
Установите эту переменную на строку подключения, связанную с ресурсом Application Insights. |
APPLICATIONINSIGHTS_STATSBEAT_DISABLED |
Установите переменную true, чтобы отказаться от внутренней коллекции метрик. |
OTEL_RESOURCE_ATTRIBUTES |
Пары "ключ-значение" для использования в качестве атрибутов ресурсов. Дополнительные сведения об атрибутах ресурсов см. в спецификации пакета SDK для ресурсов. |
|
OTEL_SERVICE_NAME | Задает значение атрибута service.name ресурса. Если service.name также указан в OTEL_RESOURCE_ATTRIBUTES, OTEL_SERVICE_NAME имеет приоритет. |
Дополнительные сведения о Java см. в дополнительной документации Java.
| Переменная среды |
Описание |
APPLICATIONINSIGHTS_CONNECTION_STRING |
Установите эту переменную на строку подключения, связанную с ресурсом Application Insights. |
Для собственных приложений Spring Boot доступны конфигурации пакета SDK Java OpenTelemetry.
Для нативных приложений Quarkus ознакомьтесь с документацией по Quarkus OpenTelemetry.
Примечание.
Сообщество Quarkus поддерживает и обслуживает расширения Quarkus. Для получения справки используйте каналы поддержки сообщества Quarkus. Microsoft не предоставляет техническую поддержку этой интеграции.
Дополнительные сведения о конфигурации пакета SDK для OpenTelemetry см. в документации по OpenTelemetry.
Дополнительные сведения о конфигурации SDK для OpenTelemetry см. в документации по OpenTelemetry и использовании дистрибутива Azure Monitor.
Редактировать строки запроса URL-адреса
Чтобы изменить строки запроса URL-адреса, отключите коллекцию строк запроса. Этот параметр рекомендуется использовать при вызове хранилища Azure с помощью маркера SAS.
При использовании дистрибутивного пакета Azure.Monitor.OpenTelemetry.AspNetCore, он включает библиотеки инструментирования ASP.NET Core и HttpClient.
Пакет дистрибутива по умолчанию отключает сокрытие строк запроса.
Чтобы изменить это поведение, задайте для переменной среды значение true или false.
ASP.NET Core инструментирование: по умолчанию отключена функция сокрытия строки запроса OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION. Чтобы включить, задайте для этой переменной среды значение false.
Инструментирование клиента Http. OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION По умолчанию параметр "Редактация строки запроса" отключен. Чтобы включить, задайте для этой переменной среды значение false.
При использовании Azure. Monitor.OpenTelemetry.Exporter необходимо вручную включить библиотеки инструментирования ASP.NET Core или HttpClient в конфигурацию OpenTelemetry.
Эти библиотеки инструментирования имеют исправление строки запроса, включенное по умолчанию.
Чтобы изменить это поведение, задайте для переменной среды значение true или false.
Инструментирование ASP.NET Core: по умолчанию включена деперсонализация строки запроса OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION. Чтобы отключить, установите значение этой переменной среды на true.
Инструментирование клиента Http: OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION по умолчанию включена редактация строки запроса. Чтобы отключить, установите значение этой переменной среды на true.
Добавьте следующее в applicationinsights.json файл конфигурации:
{
"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 активно работает над поддержкой функции маскирования данных.
При использовании пакета Azure Monitor OpenTelemetry дистрибутива можно скрыть строки запросов, создав и применив обработчик спанов к конфигурации дистрибутива.
export class RedactQueryStringsSample {
static async run() {
const { useAzureMonitor } = await import("@azure/monitor-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);
}
}
const options = {
azureMonitorExporterOptions: {
connectionString:
process.env.APPLICATIONINSIGHTS_CONNECTION_STRING || "<YOUR-CONNECTION-STRING>",
},
spanProcessors: [new RedactQueryStringProcessor()],
};
const monitor = useAzureMonitor(options);
console.log("Azure Monitor initialized (query strings redacted)");
}
}
Сообщество OpenTelemetry активно работает над поддержкой редактирования.
Интервал экспорта метрик
Можно настроить интервал экспорта метрик с помощью переменной OTEL_METRIC_EXPORT_INTERVAL среды.
OTEL_METRIC_EXPORT_INTERVAL=60000
Значение по умолчанию — 60000 миллисекунда (60 секунд). Этот параметр определяет, как часто пакет SDK OpenTelemetry экспортирует метрики.
Совет
Azure Monitor метрики и Azure Monitor Workspace принимают пользовательские метрики с фиксированным интервалом в 60 секунд. Метрики, отправленные чаще, буфериируются и обрабатываются каждые 60 секунд. В Log Analytics метрики записываются в тот интервал, в котором они отправляются, что может увеличить затраты при более коротких интервалах и задерживать видимость при более длинных.
Дополнительные сведения см. в следующих спецификациях OpenTelemetry:
Устранение неполадок, обратная связь и поддержка
Совет
Во всех статьях о дистрибутивах OpenTelemetry доступны следующие разделы.
Troubleshooting
Отзывы о OpenTelemetry
Чтобы оставить отзыв, сделайте следующее:
Поддержка
Выберите вкладку для выбранного языка, чтобы узнать параметры поддержки.
- Для вопросов технической поддержки Azure откройте заявку в поддержку Azure.
- По вопросам, связанным с OpenTelemetry, обратитесь непосредственно к сообществу OpenTelemetry .NET.
- Список открытых вопросов, связанных с экспортером Azure Monitor, можно найти на странице с проблемами на GitHub.
- Для вопросов технической поддержки Azure откройте заявку в поддержку Azure.
- По вопросам, связанным с OpenTelemetry, обратитесь непосредственно к сообществу OpenTelemetry .NET.
- Список открытых вопросов, связанных с экспортером Azure Monitor, можно найти на странице с проблемами на GitHub.
- Для вопросов технической поддержки Azure откройте заявку в поддержку Azure.
- Сведения об устранении неполадок см. в шагах по устранению неполадок.
- Для проблем с OpenTelemetry обратитесь непосредственно к сообществу OpenTelemetry .
- Список открытых проблем, связанных с автоинструментированием Azure Monitor Java, смотрите на странице с проблемами GitHub.
- Для вопросов технической поддержки Azure откройте заявку в поддержку Azure.
- Для проблем с OpenTelemetry обратитесь непосредственно к сообществу OpenTelemetry .
- Список открытых проблем с собственными приложениями Spring Boot см. на странице GitHub Issues Page.
- Для получения списка открытых вопросов с нативными приложениями Quarkus см. на странице GitHub Issues.
Примечание.
Сообщество Quarkus поддерживает и обслуживает расширения Quarkus. Для получения справки используйте каналы поддержки сообщества Quarkus. Microsoft не предоставляет техническую поддержку этой интеграции.
- Для вопросов технической поддержки Azure откройте заявку в поддержку Azure.
- Если у вас возникли проблемы с OpenTelemetry, обратитесь непосредственно к сообществу OpenTelemetry Python.
- Для получения списка открытых проблем, связанных с дистрибутивом Azure Monitor, см. страницу GitHub Issues.
Дальнейшие действия