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.
Azure Application Insights es un servicio de supervisión del rendimiento de aplicaciones (APM) que captura automáticamente las solicitudes, seguimientos, excepciones y métricas de rendimiento. La integración con Data API Builder (DAB) le ayuda a supervisar el comportamiento en tiempo de ejecución, diagnosticar problemas y optimizar el rendimiento en producción.
Advertencia
La integración de Application Insights con DAB puede tener limitaciones al hospedarse en aplicaciones web de Azure App Service debido a la instrumentación doble. Application Insights funciona mejor con DAB cuando se hospeda automáticamente en contenedores, Azure Container Apps o Azure Kubernetes Service (AKS). Si debe usar App Service, pruebe exhaustivamente o considere los enfoques de supervisión alternativos.
Prerrequisitos
- Archivo de configuración DAB existente.
- Recurso de Azure Application Insights.
- Cadena de conexión de Application Insights.
- CLI para el generador de APIs de datos. Instalación de la CLI
Obtener cadena de conexión
Antes de configurar DAB, obtenga la cadena de conexión de Application Insights de Azure.
Portal de Azure
- Vaya al recurso de Application Insights en Azure Portal.
- Vaya a Información general o Propiedades.
- Copie la cadena de conexión (no la clave de instrumentación).
CLI de Azure
az monitor app-insights component show \
--app my-app-insights \
--resource-group my-rg \
--query connectionString -o tsv
Formato de la cadena de conexión
InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://<region>.in.applicationinsights.azure.com/;LiveEndpoint=https://<region>.livediagnostics.monitor.azure.com/
Nota:
Use la cadena de conexión completa (no solo la clave de instrumentación) para puntos de conexión específicos de la región y un mejor rendimiento.
Configurar Application Insights
Agregue una application-insights sección bajo runtime.telemetry en su archivo de configuración.
{
"runtime": {
"telemetry": {
"application-insights": {
"enabled": true,
"connection-string": "@env('app-insights-connection-string')"
}
}
}
}
Esta configuración usa una variable de entorno para la cadena de conexión. Defínelo en un .env archivo:
app-insights-connection-string="InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=..."
Advertencia
Nunca confirme las cadenas de conexión en el control de código fuente. Use siempre variables de entorno o Azure Key Vault.
Command-line
Configure el Application Insights mediante dab add-telemetry.
| Opción | Descripción |
|---|---|
--app-insights-enabled |
Habilite o deshabilite Application Insights (true o false). |
--app-insights-conn-string |
Cadena de conexión para Application Insights. |
Habilitación de Application Insights
dab add-telemetry \
--app-insights-enabled true \
--app-insights-conn-string "@env('app-insights-connection-string')"
Deshabilitación de Application Insights
dab add-telemetry \
--app-insights-enabled false
Nota:
La configuración de Application Insights usa dab add-telemetry, no dab configure.
Ejecución de DAB
Inicie DAB con el archivo de configuración:
dab start
Compruebe los registros de inicio para obtener confirmación:
Application Insights telemetry is enabled with connection string from config.
Cómo funciona
Cuando Application Insights está habilitado, DAB:
- Registra el SDK de Application Insights mediante
AddApplicationInsightsTelemetry(). - Registra un inicializador de telemetría personalizado para enriquecer todos los datos de telemetría con propiedades específicas de DAB.
- Configura
TelemetryClientcon la cadena de conexión de la configuración. - Se integra con el registro de ASP.NET Core para capturar registros de consola como seguimientos.
Flujo de datos
DAB Application
↓
ILogger (ASP.NET Core)
↓
ApplicationInsightsLoggerProvider
↓
AppInsightsTelemetryInitializer (adds custom properties)
↓
TelemetryClient
↓
Application Insights (Azure)
¿Qué se captura?
| Tipo de telemetría | Fuente | Examples |
|---|---|---|
| Requests | middleware de ASP.NET Core | Solicitudes REST/GraphQL, tiempos de respuesta, códigos de estado |
| Huellas |
ILogger llamadas en DAB |
Registros de inicio, registros de ejecución de consultas, advertencias |
| Excepciones | Excepciones no controladas | Errores en tiempo de ejecución, errores de configuración, errores de base de datos |
| Dependencias | Llamadas a base de datos | Consultas SQL, operaciones de Azure Cosmos DB, duración |
| Contadores de rendimiento | Tiempo de ejecución | Uso de CPU, consumo de memoria, tasa de solicitudes |
Enriquecimiento de telemetría
DAB enriquece automáticamente toda la telemetría de Application Insights con propiedades personalizadas:
| Propiedad | Descripción | Ejemplo de valor |
|---|---|---|
ProductName |
Identificador del agente de usuario de DAB | dab-1.2.3 |
UserAgent |
Cadena de agente de usuario DAB completa | data-api-builder/1.2.3 |
Cloud.RoleName |
Nombre del rol en la nube de DAB | DataApiBuilder |
Component.Version |
Versión de DAB | 1.2.3 |
Session.Id |
Identificador único de la sesión | guid |
Estas propiedades ayudan a filtrar y correlacionar la telemetría específica de DAB en Application Insights.
Consulta de telemetría en Azure
Seguimientos (registros)
traces
| where customDimensions["ProductName"] startswith "dab-"
| order by timestamp desc
| project timestamp, message, severityLevel
Asignación de LogLevel:
| LogLevel | Severidad | Importancia |
|---|---|---|
| Seguimiento y depuración | Verbose | 0 |
| Información | Información | 1 |
| Advertencia | Advertencia | 2 |
| Error | Error | 3 |
| Crítico | Crítico | 4 |
Requests
requests
| where customDimensions["ProductName"] startswith "dab-"
| order by timestamp desc
| project timestamp, name, duration, resultCode, success
Excepciones
exceptions
| where customDimensions["ProductName"] startswith "dab-"
| order by timestamp desc
| project timestamp, type, outerMessage, details
Filtrar por versión de DAB
traces
| where customDimensions["Component.Version"] == "1.2.3"
| project timestamp, message, severityLevel
Encuentra consultas lentas de GraphQL
requests
| where name contains "/graphql"
| where duration > 1000
| project timestamp, name, duration, resultCode
| order by duration desc
Tasa de éxito de solicitudes
requests
| where customDimensions["ProductName"] startswith "dab-"
| summarize
Total = count(),
Success = countif(success == true),
Failed = countif(success == false)
| extend SuccessRate = (Success * 100.0) / Total
Principales operaciones lentas de base de datos
dependencies
| where type == "SQL" or type == "Azure Cosmos DB"
| top 10 by duration desc
| project timestamp, name, duration, target, data
Métricas en Tiempo Real
Live Metrics proporciona supervisión en tiempo real con <una latencia de 1 segundo. Se habilita automáticamente cuando Application Insights está configurado.
Acceso a las métricas dinámicas
- Abra su recurso de Application Insights en Azure Portal.
- Vaya a Live Metrics en el menú de la izquierda.
- Inicie la aplicación DAB.
- En segundos, aparecen datos en tiempo real.
Lo que ve
| Métrica | Descripción |
|---|---|
| Solicitudes entrantes | Solicitudes REST/GraphQL por segundo |
| Solicitudes salientes | Llamadas de base de datos por segundo |
| Estado general | Tasa de éxito, errores por segundo |
| Memoria/CPU | Consumo de recursos |
| Tasa de excepciones | Excepciones por segundo |
Sugerencia
Use Live Metrics durante el desarrollo para ver comentarios inmediatos sobre las solicitudes de API y las operaciones de base de datos.
Muestreo y retención de datos
Muestreo adaptable
El SDK de Application Insights muestra automáticamente la telemetría cuando el volumen es alto para reducir los costos y mantenerse dentro de los límites de velocidad. La frecuencia de muestreo se muestra en la interfaz de usuario de Application Insights.
Comportamiento predeterminado:
- Tráfico bajo: toda la telemetría enviada (100%)
- Tráfico elevado: el muestreo automáticamente reduce el volumen.
- Datos representativos mantenidos
Retención de datos
| Planificación | Retención predeterminada | Retención máxima |
|---|---|---|
| Nivel gratuito | 90 días | 90 días |
| Pago por uso | 90 días | 730 días (2 años) |
Configurar retención: Application Insights → Uso y costos estimados → retención de datos.
Consideraciones sobre el rendimiento
Sobrecarga de telemetría
Application Insights agrega una sobrecarga mínima:
- Memoria: ~10-50 MB en función del tráfico
- CPU: <1% bajo carga normal
- Latencia: <1 ms por solicitud (asincrónico)
procedimientos recomendados
- Use variables de entorno para cadenas de conexión.
- Desactívelo en el desarrollo local si no es necesario.
- Controle la frecuencia de muestreo en producción.
- Establezca la retención de datos adecuada para administrar los costos.
Deshabilitación en el desarrollo
{
"runtime": {
"telemetry": {
"application-insights": {
"enabled": false
}
}
}
}
Exportación y visualización
La telemetría se exporta mediante el SDK de Application Insights. El SDK realiza lotes y envía datos periódicamente.
Nota:
El SDK controla el tiempo de exportación. El comportamiento predeterminado envía telemetría en lotes cada pocos segundos.
Advertencia
Los contenedores efímeros que se cierran rápidamente pueden salir antes de que se completen las exportaciones. Configure las ventanas de apagado correcto y evite la terminación agresiva para asegurarse de que la telemetría pendiente se vacía.
Cadena de conexión frente a clave de instrumentación
Uso de cadenas de conexión (recomendado)
{
"connection-string": "InstrumentationKey=...;IngestionEndpoint=https://eastus.in.applicationinsights.azure.com/"
}
Ventajas:
- Puntos de conexión específicos de la región (menor latencia)
- Admite nubes soberanas
- Preparado para el futuro (enfoque recomendado de Microsoft)
Clave de instrumentación heredada
Aunque Microsoft todavía admite su uso, recomienda cadenas de conexión para nuevas implementaciones.
{
"connection-string": "InstrumentationKey=00000000-0000-0000-0000-000000000000"
}
Nota:
Si solo proporciona una clave de instrumentación, Application Insights usa el punto de conexión de ingesta global, que puede tener una mayor latencia.
Solución de problemas
Error: "La cadena de conexión de Application Insights no puede ser nula ni estar vacía si está habilitada"
Causa: enabled está establecido en true pero connection-string falta o está vacío.
Solución: Proporcione una cadena de conexión válida al habilitar Application Insights, o establezca enabled en false.
{
"runtime": {
"telemetry": {
"application-insights": {
"enabled": true,
"connection-string": "@env('app-insights-connection-string')"
}
}
}
}
DAB se inicia, pero no aparece telemetría
Compruebe los registros de inicio de estos mensajes:
dab start --LogLevel Information
Mensaje de éxito:
Application Insights telemetry is enabled with connection string from config.
Mensajes de advertencia:
Logs won't be sent to Application Insights because an Application Insights connection string is not available in the runtime config.
Application Insights are disabled.
Mensaje de error:
Telemetry client is not initialized.
Comprobación de la variable de entorno
echo $app-insights-connection-string
Prueba con cadena de conexión directa
Use temporalmente una cadena de conexión directa (no variable de entorno) para comprobar que la cadena es válida:
{
"connection-string": "InstrumentationKey=...;IngestionEndpoint=..."
}
Si esto funciona, el problema es con la carga de variables de entorno.