Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Use esta guía para filtrar los datos de OpenTelemetry (OTel) en Azure Monitor Application Insights. El filtrado le ayuda a excluir telemetría innecesaria y a evitar la recopilación de datos confidenciales para optimizar el rendimiento y garantizar el cumplimiento.
Entre los motivos para filtrar la telemetría se incluyen:
- Filtrar la telemetría de verificación de salud para reducir la interferencia.
- Asegurar que no se recopilen los datos personales ni las credenciales.
- Filtrar la telemetría de bajo valor para optimizar el rendimiento.
Para más información sobre los conceptos de OpenTelemetry, revise la introducción a OpenTelemetry.
Nota:
Para las aplicaciones de Azure Function, consulte Usar OpenTelemetry con Azure Functions.
Filtrado de OpenTelemetry mediante bibliotecas de instrumentación
Para obtener una lista de todas las bibliotecas de instrumentación incluidas con la distribución Azure Monitor OpenTelemetry, revise Configurar la recopilación automática de datos y los detectores de recursos para Azure Monitor OpenTelemetry.
Muchas bibliotecas de instrumentación proporcionan una opción de filtrado. Para obtener instrucciones, revise los archivos Léame correspondientes:
Nota:
Actualmente, la distribución de OpenTelemetry de Azure Monitor incluye una copia del código fuente de instrumentación de SqlClient para garantizar la estabilidad mientras la biblioteca SqlClient original de OpenTelemetry sigue siendo experimental.
Las opciones como SetDbStatementForStoredProcedure no se pueden usar en nuestra distribución porque el código está incrustado y no hace referencia al paquete externo.
Una vez que la instrumentación SqlClient alcanza una versión estable, Azure Monitor pasa a hacer referencia al paquete oficial y la personalización a través de builder.AddSqlClientInstrumentation(options => { ... }) está disponible.
Filtrado de telemetría mediante procesadores de intervalo
Use un procesador personalizado:
Sugerencia
Agregue el procesador que se muestra aquí before agregando Azure Monitor.
// 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();Agregue
ActivityFilteringProcessor.csal project con el código siguiente: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; } } }
Si un determinado origen no se agrega de manera explícita mediante AddSource("ActivitySourceName"), no se exporta ninguna de las actividades creadas con ese origen.
Filtrar la telemetría al momento de la ingesta mediante reglas de recopilación de datos
Reduzca el ruido o normalice la telemetría antes de que Azure Monitor la almacene en un área de trabajo de Log Analytics. Para lograr ese objetivo, use transformaciones en tiempo de ingesta en una regla de recopilación de datos (DCR) para filtrar o modificar la telemetría después de que Azure Monitor la reciba.
Las transformaciones usan una instrucción del lenguaje de consulta kusto (KQL) que se ejecuta en cada registro ingerido.
Use una DCR de transformación del área de trabajo para las tablas de Application Insights. Un espacio de trabajo de Log Analytics admite un DCR de transformación del espacio de trabajo. Coloque todas las transformaciones de esa área de trabajo en el mismo DCR.
La activación puede tardar hasta 60 minutos después de una actualización.
Use estos recursos para obtener más información:
- Revise las reglas de recopilación de datos (DCR).
- Revisar transformaciones en Azure Monitor.
- Revise el tutorial de transformación del área de trabajo del Azure portal.
- Consulte el tutorial de transformación de área de trabajo para plantillas de Resource Manager.
- Consulte Creación de una transformación en Azure Monitor.
- Revise las características de KQL admitidas en las transformaciones.
- Revise las Tablas de Application Insights que admiten transformaciones en tiempo de ingesta.
Mapeo de señales de OpenTelemetry a tablas de Log Analytics
Application Insights almacena señales comunes de OpenTelemetry (OTel) en estas tablas:
-
AppTraces(registros) -
AppRequests(solicitudes entrantes) -
AppDependencies(dependencias salientes) -
AppExceptions(excepciones) -
AppMetrics(métricas)
En una DCR de transformación del área de trabajo, use el formato de nombre de flujo Microsoft-Table-<TableName> para cada tabla. Por ejemplo, use Microsoft-Table-AppRequests para la AppRequests tabla.
Nota:
Un DCR de transformación del área de trabajo se aplica a todos los datos ingeridos en las tablas seleccionadas de ese área de trabajo de Log Analytics. Si varias aplicaciones comparten el mismo área de trabajo, defina el alcance de cada transformación mediante un filtro como AppRoleName o ResourceGUID.
Uso de ejemplos de DCR de transformación de área de trabajo
En los ejemplos siguientes se muestra la transformación del área de trabajo DCR JSON. Use dataFlows para definir una transformación por tabla. Deje transformKql en una sola línea en la definición de DCR.
Crea una plantilla de DCR para la transformación del espacio de trabajo
Use esta plantilla para crear un DCR de transformación del área de trabajo. Reemplace <workspace-location> y <workspace-resource-id> por los valores del área de trabajo de 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"
}
]
}
}
Quitar un tipo de telemetría quitando una tabla
Use este ejemplo para bloquear un tipo de telemetría completo, como todos los seguimientos o todas las solicitudes.
Agregue un flujo de datos por cada tabla que quiera eliminar.
[
{
"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"
}
]
Descartar solicitudes de comprobación de estado
Usa este ejemplo para quitar puntos de conexión comunes de estado, preparación y ejecución.
{
"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"
}
Mantener solo las solicitudes de verificación de estado que fallen
Usa este ejemplo para mantener comprobaciones de estado fallidas y descartar comprobaciones de estado correctas.
{
"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"
}
Mantener solo solicitudes fallidas o lentas
Use este ejemplo para mantener las solicitudes que produzcan errores o superen un umbral de latencia.
{
"streams": ["Microsoft-Table-AppRequests"],
"destinations": ["laDest"],
"transformKql": "source | where Success == false or DurationMs >= 1000"
}
Mantener solo advertencias y seguimientos de nivel superior
Utilice este ejemplo para mantener registros de trazabilidad con SeverityLevel de Warning (2), Error (3) o Critical (4).
{
"streams": ["Microsoft-Table-AppTraces"],
"destinations": ["laDest"],
"transformKql": "source | where SeverityLevel >= 2"
}
Conservar solo las dependencias que presentan errores o lentitud
Use este ejemplo para mantener llamadas de dependencia que produzcan errores o superen un umbral de latencia.
{
"streams": ["Microsoft-Table-AppDependencies"],
"destinations": ["laDest"],
"transformKql": "source | where Success == false or DurationMs >= 500"
}
Eliminación de instrucciones SQL de datos de dependencia
Utilice este ejemplo para quitar instrucciones SQL almacenadas en la columna Data, mientras mantiene la información de dependencia y éxito.
{
"streams": ["Microsoft-Table-AppDependencies"],
"destinations": ["laDest"],
"transformKql": "source | extend dependencyType = tolower(tostring(DependencyType)) | extend Data = iff(dependencyType == 'sql', '', Data) | project-away dependencyType"
}
Eliminación del tráfico sintético
Use este ejemplo para quitar registros que incluyan un SyntheticSource valor.
{
"streams": ["Microsoft-Table-AppRequests"],
"destinations": ["laDest"],
"transformKql": "source | where isempty(SyntheticSource)"
}
Quitar excepciones de cancelación
Use este ejemplo para quitar los tipos de excepción de cancelación comunes.
{
"streams": ["Microsoft-Table-AppExceptions"],
"destinations": ["laDest"],
"transformKql": "source | where not(ExceptionType contains 'OperationCanceledException' or ExceptionType contains 'TaskCanceledException')"
}
Eliminación de direcciones IP de cliente y cadenas de consulta
Use este ejemplo para quitar direcciones IP de cliente y almacenar direcciones URL sin cadenas de consulta.
[
{
"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"
}
]
Delimitar el ámbito de una transformación a un solo servicio
Use este ejemplo para definir el ámbito de una transformación en un único servicio cuando varias aplicaciones comparten un área de trabajo.
{
"streams": ["Microsoft-Table-AppRequests"],
"destinations": ["laDest"],
"transformKql": "source | where AppRoleName == '<app-role-name>' | where Success == false or DurationMs >= 1000"
}
Solución de problemas, comentarios y soporte técnico
Sugerencia
Las siguientes secciones están disponibles en todos los artículos de la distro de OpenTelemetry.
Solución de problemas
Para obtener información sobre la solución de problemas, consulte Solución de problemas de OpenTelemetry en .NET y Solución de problemas de telemetría de aplicaciones ausente en Application Insights de Azure Monitor.
Comentarios de OpenTelemetry
Para proporcionar comentarios:
- Rellene la encuesta de comentarios de los clientes de la comunidad de OpenTelemetry.
- Únase a la comunidad de usuarios pioneros de OpenTelemetry y cuente su experiencia a Microsoft.
- Interactúe con otros usuarios de Azure Monitor en Microsoft Tech Community.
- Realice una solicitud de característica en el foro de comentarios de Azure.
Apoyo
Seleccione una pestaña para el idioma que prefiera para detectar las opciones de soporte técnico.
- Para los problemas de soporte de Azure, abra un ticket de soporte de Azure.
- En caso de problemas de OpenTelemetry, póngase en contacto con la comunidad de .NET de OpenTelemetry directamente.
- Para obtener una lista de problemas abiertos relacionados con el exportador de Azure Monitor, consulte la página de problemas de GitHub.
Pasos siguientes
- Para revisar el código fuente, consulte el repositorio de GitHub de Azure Monitor ASP.NET Core.
- Para revisar una aplicación de ejemplo, consulte Azure Monitor OpenTelemetry para ASP.NET Core.
- Para instalar el paquete NuGet, buscar actualizaciones o consultar las notas de la versión, visite la página Paquete NuGet de Azure Monitor AspNetCore.
- Para obtener más información sobre OpenTelemetry y su comunidad, visite el repositorio de GitHub de .NET para OpenTelemetry.
- Habilite la supervisión de usuarios web o de explorador para habilitar las experiencias de uso.