Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Используйте это руководство для фильтрации данных OpenTelemetry (OTel) в Azure Monitor Application Insights. Фильтрация помогает исключить ненужные данные телеметрии и предотвратить сбор конфиденциальных данных для оптимизации производительности и поддержки соответствия.
Ниже перечислены причины фильтрации телеметрии:
- Фильтрация данных телеметрии проверки состояния для уменьшения шума.
- Обеспечение того, чтобы персональные данные и учетные данные не собирались.
- Фильтрация низкозначных данных телеметрии для оптимизации производительности.
Дополнительные сведения о концепциях OpenTelemetry см. в обзоре OpenTelemetry.
Примечание.
Для приложений Azure Functions см. раздел Использование OpenTelemetry с Azure Functions.
Фильтрация OpenTelemetry с помощью библиотек инструментирования
Список всех библиотек инструментирования, включенных в состав дистрибутива Azure Monitor OpenTelemetry, ознакомьтесь с Настройте автоматический сбор данных и детекторы ресурсов для Azure Monitor OpenTelemetry.
Многие библиотеки инструментирования предоставляют вариант фильтрования. Чтобы получить рекомендации, ознакомьтесь с соответствующими файлами readme:
Примечание.
В настоящее время Azure Monitor OpenTelemetry Distro включает копию исходного кода инструментирования SqlClient, чтобы обеспечить стабильность, пока исходная библиотека OpenTelemetry SqlClient остается экспериментальной.
Такие варианты, как SetDbStatementForStoredProcedure, недоступны в нашем дистрибутиве, так как код внедрен и не ссылается на внешний пакет.
Когда инструментарий SqlClient достигнет стабильного выпуска, Azure Monitor переключится на ссылку на официальный пакет, и настройка с помощью builder.AddSqlClientInstrumentation(options => { ... }) доступны.
Фильтрация телеметрии с помощью процессоров диапазона
Использование пользовательского процессора:
Совет
Добавьте процессор, показанный здесь перед добавлением монитора Azure.
// Create an ASP.NET Core application builder. var builder = WebApplication.CreateBuilder(args); // Configure the OpenTelemetry tracer provider to add a new processor named ActivityFilteringProcessor. builder.Services.ConfigureOpenTelemetryTracerProvider((sp, builder) => builder.AddProcessor(new ActivityFilteringProcessor())); // Configure the OpenTelemetry tracer provider to add a new source named "ActivitySourceName". builder.Services.ConfigureOpenTelemetryTracerProvider((sp, builder) => builder.AddSource("ActivitySourceName")); // Add the Azure Monitor telemetry service to the application. This service will collect and send telemetry data to Azure Monitor. builder.Services.AddOpenTelemetry().UseAzureMonitor(); // Build the ASP.NET Core application. var app = builder.Build(); // Start the ASP.NET Core application. app.Run();Добавьте
ActivityFilteringProcessor.csв project с помощью следующего кода:public class ActivityFilteringProcessor : BaseProcessor<Activity> { // The OnStart method is called when an activity is started. This is the ideal place to filter activities. public override void OnStart(Activity activity) { // prevents all exporters from exporting internal activities if (activity.Kind == ActivityKind.Internal) { activity.IsAllDataRequested = false; } } }
Если конкретный источник не добавляется явным образом с помощью AddSource("ActivitySourceName"), то никакие действия, созданные с помощью этого источника, не экспортируются.
Фильтрация телеметрических данных на этапе приема с помощью правил сбора данных
Прежде чем Azure Monitor сохранит их в рабочей области Log Analytics, уменьшите шум или стандартизируйте данные телеметрии. Чтобы достичь этой цели, используйте преобразования времени приема в правиле сбора данных (DCR) для фильтрации или изменения телеметрии после получения монитора Azure.
Преобразования используют запрос Kusto Query Language (KQL), который выполняется на каждой записанной записи.
Используйте DCR для преобразования рабочей области в таблицах Application Insights. Рабочая область Log Analytics поддерживает одно преобразование DCR рабочей области. Поместите все преобразования для этой рабочей области в один DCR.
Активация может занять до 60 минут после обновления.
Дополнительные сведения см. в следующих ресурсах:
- Просмотрите правила сбора данных (DCR).
- Просмотрите трансформации в Azure Monitor.
- Ознакомьтесь с руководством по преобразованию рабочей области для Azure portal.
- Ознакомьтесь с руководством по преобразованию рабочей области для шаблонов Resource Manager.
- Просмотрите Создайте преобразование в Azure Monitor.
- Просмотрите поддерживаемые функции KQL в преобразованиях.
- Просмотрите таблицы Application Insights, поддерживающие преобразования во время приема данных.
Сопоставление сигналов OpenTelemetry с таблицами Log Analytics
Application Insights хранит общие сигналы OpenTelemetry (OTel) в следующих таблицах:
-
AppTraces(логи) -
AppRequests(входящие запросы) -
AppDependencies(исходящие зависимости) -
AppExceptions(исключения) -
AppMetrics(метрики)
В преобразовании рабочей области DCR используйте формат Microsoft-Table-<TableName> имени потока для каждой таблицы. Например, используйте Microsoft-Table-AppRequests для AppRequests таблицы.
Примечание.
Преобразование DCR рабочей области применяется ко всем данным, поступающим в выбранные таблицы в рабочей области Log Analytics. Если несколько приложений используют одну и ту же рабочую область, определите область каждого преобразования с помощью фильтра, например AppRoleName или ResourceGUID.
Использование примеров DCR преобразования рабочей среды
В следующих примерах показано преобразование рабочей области DCR JSON. Используйте dataFlows, чтобы определить одно преобразование на таблицу. Оставляйте transformKql на одной строке в определении DCR.
Создать шаблон DCR для преобразования рабочей области
Используйте этот шаблон для создания DCR преобразования рабочего пространства. Замените <workspace-location> и <workspace-resource-id> значениями из вашего рабочего пространства Log Analytics.
{
"kind": "WorkspaceTransforms",
"location": "<workspace-location>",
"properties": {
"dataSources": {},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "<workspace-resource-id>",
"name": "laDest"
}
]
},
"dataFlows": [
{
"streams": ["Microsoft-Table-AppRequests"],
"destinations": ["laDest"],
"transformKql": "source"
}
]
}
}
Удаление типа телеметрии путем удаления таблицы
Используйте этот пример, чтобы заблокировать весь тип телеметрии, например все трассировки или все запросы.
Добавьте поток данных для каждой таблицы, которую хотите удалить.
[
{
"streams": ["Microsoft-Table-AppTraces"],
"destinations": ["laDest"],
"transformKql": "source | where 1 == 0"
},
{
"streams": ["Microsoft-Table-AppRequests"],
"destinations": ["laDest"],
"transformKql": "source | where 1 == 0"
},
{
"streams": ["Microsoft-Table-AppDependencies"],
"destinations": ["laDest"],
"transformKql": "source | where 1 == 0"
},
{
"streams": ["Microsoft-Table-AppExceptions"],
"destinations": ["laDest"],
"transformKql": "source | where 1 == 0"
},
{
"streams": ["Microsoft-Table-AppMetrics"],
"destinations": ["laDest"],
"transformKql": "source | where 1 == 0"
}
]
Удаление запросов проверки работоспособности
Используйте этот пример для удаления общих конечных точек работоспособности, готовности и активности.
{
"streams": ["Microsoft-Table-AppRequests"],
"destinations": ["laDest"],
"transformKql": "source | extend url = tolower(tostring(Url)) | where not(url contains '/health' or url contains '/healthz' or url contains '/ready' or url contains '/readyz' or url contains '/live' or url contains '/livez') | project-away url"
}
Сохранение только неудачных запросов проверки работоспособности
Используйте этот пример, чтобы продолжать терпеть неудачу в проверках работоспособности и игнорировать успешные проверки работоспособности.
{
"streams": ["Microsoft-Table-AppRequests"],
"destinations": ["laDest"],
"transformKql": "source | extend url = tolower(tostring(Url)) | where not((url contains '/health' or url contains '/healthz' or url contains '/ready' or url contains '/readyz' or url contains '/live' or url contains '/livez') and Success == true) | project-away url"
}
Сохранение только неудачных или медленных запросов
Используйте этот пример для сохранения запросов, которые завершаются сбоем или превышают пороговое значение задержки.
{
"streams": ["Microsoft-Table-AppRequests"],
"destinations": ["laDest"],
"transformKql": "source | where Success == false or DurationMs >= 1000"
}
Сохранение только предупреждений и более высоких трассировок
Используйте этот пример для хранения записей трассировки ( SeverityLevelWarning 2), Error (3) или Critical (4).
{
"streams": ["Microsoft-Table-AppTraces"],
"destinations": ["laDest"],
"transformKql": "source | where SeverityLevel >= 2"
}
Оставьте только сбойные или медленные зависимости
Используйте этот пример для поддержания вызовов зависимостей, которые завершаются сбоем или превышают порог задержки.
{
"streams": ["Microsoft-Table-AppDependencies"],
"destinations": ["laDest"],
"transformKql": "source | where Success == false or DurationMs >= 500"
}
Удаление инструкций SQL из данных зависимостей
Используйте этот пример, чтобы удалить инструкции SQL, хранящиеся в столбце Data , сохраняя сведения о времени и успешном выполнении зависимостей.
{
"streams": ["Microsoft-Table-AppDependencies"],
"destinations": ["laDest"],
"transformKql": "source | extend dependencyType = tolower(tostring(DependencyType)) | extend Data = iff(dependencyType == 'sql', '', Data) | project-away dependencyType"
}
Удалить искусственный трафик
Используйте этот образец для удаления записей, включающих значение SyntheticSource.
{
"streams": ["Microsoft-Table-AppRequests"],
"destinations": ["laDest"],
"transformKql": "source | where isempty(SyntheticSource)"
}
Удаление исключений отмены
Используйте этот пример, чтобы удалить распространенные типы исключений отмены.
{
"streams": ["Microsoft-Table-AppExceptions"],
"destinations": ["laDest"],
"transformKql": "source | where not(ExceptionType contains 'OperationCanceledException' or ExceptionType contains 'TaskCanceledException')"
}
Удаление IP-адресов клиента и строк запроса
Используйте этот пример для удаления IP-адресов клиента и хранения URL-адресов без строк запроса.
[
{
"streams": ["Microsoft-Table-AppRequests"],
"destinations": ["laDest"],
"transformKql": "source | extend Url = tostring(split(tostring(Url), '?')[0]) | project-away ClientIP"
},
{
"streams": ["Microsoft-Table-AppDependencies"],
"destinations": ["laDest"],
"transformKql": "source | extend Data = tostring(split(tostring(Data), '?')[0]) | project-away ClientIP"
}
]
Определите область преобразования для одной службы
Используйте этот пример, чтобы определить масштабы преобразования к одной службе, когда несколько приложений совместно используют рабочую область.
{
"streams": ["Microsoft-Table-AppRequests"],
"destinations": ["laDest"],
"transformKql": "source | where AppRoleName == '<app-role-name>' | where Success == false or DurationMs >= 1000"
}
Устранение неполадок, обратная связь и поддержка
Совет
Во всех статьях о дистрибутивах OpenTelemetry доступны следующие разделы.
Troubleshooting
Сведения об устранении неполадок см. в статье "Устранение неполадок с OpenTelemetry" в .NET и устранение неполадок с отсутствующими данными телеметрии приложений в Azure Monitor Application Insights.
Отзывы о OpenTelemetry
Чтобы оставить отзыв, сделайте следующее:
- Заполните опрос отзывов клиентов сообщества OpenTelemetry.
- Расскажите корпорации Майкрософт о себе, присоединившись к сообществу OpenTelemetry Early Adopter Community.
- Взаимодействуйте с другими пользователями Azure Monitor в Microsoft Tech Community.
- Отправьте запрос функции на форуме отзывов Azure.
Поддержка
Выберите вкладку для выбранного языка, чтобы узнать параметры поддержки.
- Для проблем с поддержкой Azure откройте запрос в службу поддержки Azure.
- Для проблем с OpenTelemetry обратитесь непосредственно к сообществу OpenTelemetry .NET .
- Список открытых проблем, связанных с экспортером Azure Monitor, см. на странице проблем GitHub.
Следующие шаги
- Сведения о исходном коде см. в репозитории Azure Monitor ASP.NET Core GitHub.
- Чтобы просмотреть пример приложения, см. статью Azure Monitor OpenTelemetry для ASP.NET Core.
- Чтобы установить пакет NuGet, проверьте наличие обновлений или просмотрите заметки о выпуске, см. страницу Azure Monitor AspNetCore NuGet Package.
- Дополнительные сведения о OpenTelemetry и его сообществе см. в репозитории OpenTelemetry .NET GitHub.
- Чтобы обеспечить пользовательский опыт, включите мониторинг пользователей в Интернете или браузере.