Mapa de aplicación: evaluación de prioridades de las aplicaciones distribuidas

El mapa de aplicación le ayuda a detectar los cuellos de botella en el rendimiento o las zonas activas con error en todos los componentes de la aplicación distribuida. Cada nodo del mapa representa un componente de la aplicación o sus dependencias, e incluye el KPI de mantenimiento y el estado de alerta. Puede seleccionar cualquier componente para obtener diagnósticos más detallados, como eventos de Application Insights. Si su aplicación usa servicios de Azure, también puede seleccionar diagnósticos de Azure, como las recomendaciones de SQL Database Advisor.

Mapa de aplicación también incluye una Vista inteligente para ayudar en investigaciones rápidas de estado del servicio.

¿Qué es un componente?

Los componentes son partes que se pueden implementar independientemente de su aplicación de microservicio o distribuida. Los equipos de operaciones y los desarrolladores pueden ver el código o acceder a la telemetría que generan estos componentes de la aplicación. Por ejemplo:

  • Los componentes son diferentes de las dependencias externas "observadas", por ejemplo, Azure SQL e Event Hubs, a las que el equipo o la organización podrían no tener acceso (código o telemetría).
  • Los componentes se ejecutan en cualquier número de instancias de rol, servidor o contenedor.
  • Los componentes pueden ser recursos de Application Insights independientes, incluso si las suscripciones son diferentes. También pueden ser diferentes roles que informan a un único recurso de Application Insights. La experiencia de mapa de vista preliminar muestra los componentes independientemente de cómo se configuren.

Mapa de aplicación compuesta

Puede ver la topología de aplicación completa a lo largo de varios niveles de componentes de aplicación relacionados. Los componentes podrían ser diferentes recursos de Application Insights o distintos roles de un único recurso. Para encontrar componentes, el mapa de aplicación sigue las llamadas de dependencia HTTP entre los servidores con el SDK de Application Insights instalado.

Esta experiencia comienza con la detección progresiva de los componentes. La primera vez que cargue el Mapa de aplicación, se desencadenará un conjunto de consultas para detectar los componentes relacionados con este componente. Un botón en la esquina superior izquierda se actualiza con el número de componentes de la aplicación a medida que se detectan.

Al seleccionar Actualizar componentes de mapa, el mapa se actualiza con todos los componentes detectados hasta ese punto. Según la complejidad de la aplicación, esta actualización puede tardar un minuto en cargarse.

Si todos los componentes son roles dentro de un único recurso de Application Insights, este paso de detección no es necesario. La carga inicial para este tipo de aplicación tendrá todos sus componentes.

Captura de pantalla en la que se muestra un ejemplo de mapa de aplicación.

Uno de los objetivos principales de la experiencia es poder visualizar topologías complejas con cientos de componentes.

Seleccione cualquier componente para ver información detallada relacionada e ir a la experiencia de evaluación de prioridades de rendimiento y errores de ese componente.

Diagrama en el que se muestran los detalles del mapa de aplicación.

Investigar los errores

Seleccione Investigar los errores para abrir el panel Errores.

Captura de pantalla del botón Investigar los errores.

Captura de pantalla en la que se muestra la pantalla Errores.

Investigar el rendimiento

Para solucionar problemas de rendimiento, seleccione Investigar el rendimiento.

Captura de pantalla del botón Investigar el rendimiento.

Captura de pantalla en la que se muestra la pantalla de rendimiento.

Ir a los detalles

El botón Ir a detalles muestra la experiencia de transacción de un extremo a otro, que ofrece vistas en el nivel de la pila de llamadas.

Captura de pantalla del botón Ir a los detalles.

Captura de la pantalla Detalles de la transacción completa.

Ver en Registros (Analytics)

Para consultar e investigar aún más los datos de las aplicaciones, seleccione Ver en Registros (Analytics).

Captura de pantalla del botón Ver en Registros (Analytics).

Captura de la pantalla Registros con un grafo de líneas que resume la duración de la respuesta media de una solicitud en las últimas 12 horas.

Alertas

Para ver las alertas activas y las reglas subyacentes que provocan el desencadenamiento de estas, seleccione Alertas.

Captura de pantalla del botón Alertas.

Captura de pantalla de una lista de alertas.

Establecimiento o reemplazo del nombre del rol en la nube

El mapa de aplicación usa la propiedad nombre de rol en la nube para identificar los componentes en el mapa.

Siga esta guía para establecer o reemplazar manualmente los nombres de los roles en la nube y cambiar lo que se muestra en el mapa de aplicación.

Nota

El Agente o SDK de Application Insights agregan de forma automática la propiedad de nombre de rol en la nube a la telemetría emitida por los componentes en un entorno de Azure App Service.

TelemetryInitializer personalizado

using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;

namespace CustomInitializer.Telemetry
{
    public class MyTelemetryInitializer : ITelemetryInitializer
    {
        public void Initialize(ITelemetry telemetry)
        {
            if (string.IsNullOrEmpty(telemetry.Context.Cloud.RoleName))
            {
                //set custom role name here
                telemetry.Context.Cloud.RoleName = "Custom RoleName";
                telemetry.Context.Cloud.RoleInstance = "Custom RoleInstance";
            }
        }
    }
}

Aplicaciones ASP.NET: cargue el inicializador en el elemento TelemetryConfiguration activo

En ApplicationInsights.config:

    <ApplicationInsights>
      <TelemetryInitializers>
        <!-- Fully qualified type name, assembly name: -->
        <Add Type="CustomInitializer.Telemetry.MyTelemetryInitializer, CustomInitializer"/>
        ...
      </TelemetryInitializers>
    </ApplicationInsights>

Un método alternativo para las aplicaciones web de ASP.NET consiste en crear una instancia del inicializador en el código, por ejemplo, en Global.aspx.cs:

 using Microsoft.ApplicationInsights.Extensibility;
 using CustomInitializer.Telemetry;

    protected void Application_Start()
    {
        // ...
        TelemetryConfiguration.Active.TelemetryInitializers.Add(new MyTelemetryInitializer());
    }

Nota

La incorporación del inicializador mediante ApplicationInsights.config o TelemetryConfiguration.Active no es válida para las aplicaciones de ASP.NET Core.

Aplicaciones de ASP.NET Core: cargue un inicializador en TelemetryConfiguration

Para aplicaciones de ASP.NET Core, para agregar una nueva instancia de TelemetryInitializer, debe agregarla al contenedor de inserción de dependencias, como se muestra. Este paso se hace en el método ConfigureServices de la clase Startup.cs.

 using Microsoft.ApplicationInsights.Extensibility;
 using CustomInitializer.Telemetry;
 public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
}

Descripción del nombre del rol en la nube en el contexto de un mapa de aplicación

Para ayudarle a comprender el concepto de nombres de roles en la nube, examine un mapa de aplicación con varios nombres de roles en la nube.

Captura de pantalla de un ejemplo de mapa de aplicación.

En el mapa de aplicación mostrado, cada uno de los nombres de los cuadros verdes son valores de nombre de rol en la nube para distintos aspectos de esta aplicación distribuida. Para esta aplicación, sus roles constan de Authentication, acmefrontend, Inventory Management y Payment Processing Worker Role.

En esta aplicación, cada uno de esos nombres de rol en la nube además representa un único recurso de Application Insights diferente con sus propias claves de instrumentación. Puesto que el propietario de esta aplicación tiene acceso a los cuatro recursos de Application Insights, el mapa de aplicación crea un mapa de las relaciones subyacentes.

Para las definiciones oficiales:

   [Description("Name of the role the application is a part of. Maps directly to the role name in azure.")]
    [MaxStringLength("256")]
    705: string      CloudRole = "ai.cloud.role";

    [Description("Name of the instance where the application is running. Computer name for on-premises, instance name for Azure.")]
    [MaxStringLength("256")]
    715: string      CloudRoleInstance = "ai.cloud.roleInstance";

Como alternativa, la instancia de rol en la nube puede ser útil para escenarios en los que un nombre de rol en la nube indica que el problema está en algún lugar del front-end web. Pero es posible que esté ejecutando varios servidores con equilibrio de carga en el front-end web. Ser capaz de profundizar en las capas mediante consultas de Kusto y saber si el problema afecta a todos los servidores front-end web o instancias o solo a uno puede ser importante.

Un escenario el que podría querer invalidar el valor de la instancia de rol en la nube sería si la aplicación se ejecutara en un entorno con contenedores. En este caso, es posible que solo conocer el servidor individual no fuera suficiente información para localizar un problema determinado.

Para obtener más información sobre cómo reemplazar la propiedad de nombre de rol en la nube con inicializadores de telemetría, vea Agregar propiedades: ITelemetryInitializer.

Vista inteligente del Mapa de aplicación (versión preliminar pública)

En las secciones siguientes se describe la Vista inteligente.

Resumen de Vista inteligente

Vista inteligente de Mapa de aplicación está diseñada para ayudar en las investigaciones de estado del servicio. Aplica aprendizaje automático para identificar rápidamente las posibles causas principales de los problemas mediante la filtración del ruido. El modelo de Machine Learning aprende del comportamiento histórico del Mapa de aplicación para identificar los patrones dominantes y las anomalías que indiquen posibles causas de un incidente.

En las aplicaciones distribuidas de gran tamaño siempre hay cierto grado de ruido procedente de errores "benignos", lo que puede hacer que el mapa de aplicación sea ruidoso y muestre muchos bordes rojos. Vista inteligente muestra solo las causas más probables de error del servicio y quita los bordes rojos de nodo a nodo (comunicación de servicio a servicio) de los servicios correctos. Vista inteligente resalta los bordes en rojo que se deben investigar. También ofrece información práctica para el borde resaltado.

Ventajas de Vista inteligente

  • Reduce el tiempo de resolución al resaltar solo los errores que deben investigarse.
  • Proporciona información procesable sobre por qué se ha resaltado un borde rojo determinado.
  • Permite el uso de Mapa de aplicación con aplicaciones distribuidas de gran tamaño sin problemas (con el foco solo en los bordes marcados en rojo).

Habilitación de Vista inteligente en Mapa de aplicación

Habilite el botón de alternancia Vista inteligente. Opcionalmente, para cambiar la sensibilidad de las detecciones, seleccione Bajo, Medio o Alto. Para más información, consulte la pregunta de solución de problemas sobre la confidencialidad.

Captura de pantalla de la interfaz de usuario de Mapa de aplicación para activar Vista inteligente y proporcionar comentarios.

Después de habilitar Vista inteligente, seleccione uno de los bordes resaltados para ver la "información práctica". La información aparece en el panel de la derecha y explica por qué se ha resaltado el borde.

Captura de pantalla con la sección de información práctica de la interfaz de usuario de Mapa de aplicación.

Para empezar a solucionar los problemas, seleccione Investigar los errores. En el panel Errores que se abre, investigue si el problema detectado es la causa principal. Si no hay bordes rojos, el modelo de Machine Learning no ha encontrado posibles incidentes en las dependencias de la aplicación.

Para proporcionar comentarios, seleccione el botón Comentarios en el mapa.

¿Cómo determina Vista inteligente dónde se resaltan los bordes rojos?

La vista inteligente usa el modelo de aprendizaje automático patentado de AIOps para resaltar lo que es verdaderamente importante en un mapa de aplicación.

Ejemplos de consideraciones:

  • Tasas de errores
  • Recuentos de solicitudes
  • Duraciones
  • Anomalías en los datos
  • Tipos de dependencia

En comparación, la vista normal solo emplea la tasa de errores sin procesar.

¿Cómo funciona la sensibilidad de Vista inteligente?

La sensibilidad de Vista inteligente ajusta la probabilidad de que se detecte un problema del servicio.

Ajuste la sensibilidad para lograr el nivel de confianza deseado en los bordes resaltados.

Opción de sensibilidad Resultado
Alto Se resaltan menos bordes.
Media (valor predeterminado) Se resalta un número equilibrado de bordes.
Bajo Se resaltan más bordes.

Limitaciones de Vista inteligente

Vista inteligente tiene algunas limitaciones:

  • Las aplicaciones distribuidas de gran tamaño pueden tardar un minuto en cargar Vista inteligente.
  • Se admiten períodos de tiempo de hasta siete días.

Para proporcionar comentarios, consulte Comentarios del portal.

Solucionar problemas

Si tiene dificultades para conseguir que Mapa de aplicación funcione según lo esperado, siga estos pasos.

General

  1. Asegúrese de que usa un SDK oficialmente compatible. Es posible que los SDK no compatibles o de la comunidad no admitan la correlación.

    Para una lista de los SDK admitidos, consulte Application Insights: lenguajes, plataformas e integraciones.

  2. Actualice todos los componentes a la versión más reciente del SDK.

  3. Si usa Azure Functions con C#, actualice a Functions V2.

  4. Confirme que el nombre de rol en la nube está configurado correctamente.

  5. Si falta una dependencia, asegúrese de que se encuentra en la lista de dependencias recopiladas automáticamente. De lo contrario, todavía puede realizar su seguimiento de forma manual con una llamada de seguimiento de dependencia.

Hay demasiados nodos en el mapa

El mapa de aplicación construye un nodo de aplicación para cada nombre de rol en la nube presente en la telemetría de la solicitud. Además, se construye un nodo de dependencia para cada combinación única de tipo, destino y nombre de rol en la nube.

Si hay más de 10 000 nodos en la telemetría, Mapa de aplicación no podrá capturar todos los nodos y vínculos, por lo que la asignación será incompleta. Si se produce este escenario, aparece un mensaje de advertencia al visualizar el mapa.

El mapa de aplicación solo admite hasta 1000 nodos independientes sin agrupar representados a la vez. El mapa de aplicación reduce la complejidad visual mediante la agrupación de dependencias que tienen el mismo tipo y autores de llamada.

Si la telemetría tiene demasiados nombres de rol en la nube únicos o demasiados tipos de dependencias, esa agrupación es insuficiente y el mapa no se puede representar.

Para solucionar este problema, debe cambiar la instrumentación para establecer correctamente el nombre de rol en la nube, el tipo de dependencia y los campos de destino de dependencia.

  • El destino de dependencia debe representar el nombre lógico de una dependencia. En muchos casos, es equivalente al nombre del servidor o del recurso de la dependencia. Por ejemplo, si hay dependencias HTTP, se establece en el nombre de host. No debe contener id. exclusivos o parámetros que cambian de una solicitud a otra.

  • El tipo de dependencia debe representar el tipo lógico de una dependencia. Por ejemplo, HTTP, SQL o Azure Blob son tipos de dependencia típicos. No debe contener id. exclusivos.

  • El propósito del nombre de rol en la nube se describe en la sección Establecimiento o reemplazo del nombre del rol en la nube.

Vista inteligente

Preguntas comunes de solución de problemas sobre la vista inteligente.

¿Por qué no está resaltado este borde, incluso con baja sensibilidad?

Si parece que se produce un error en una dependencia pero el modelo no indica que se trate de un posible incidente:

  • Si esta dependencia viene generando el error desde hace tiempo, el modelo puede creer que se trata de un estado normal y no resaltar el borde automáticamente. Se centra en la resolución de problemas en RT.
  • Si esta dependencia tiene un impacto mínimo en el rendimiento general de la aplicación, eso también puede hacer que el modelo lo ignore.
  • Si ninguna de las afirmaciones anteriores es correcta, use la opción Comentarios y describa su experiencia. Puede ayudarnos a mejorar las versiones futuras del modelo.

¿Por qué está resaltado el borde?

Si hay un borde resaltado, la explicación del modelo debe apuntar a las características más importantes que han hecho que el modelo otorgue a esta dependencia una puntuación de probabilidad alta. La recomendación no se basa únicamente en los errores, sino en otros indicadores, como la latencia inesperada en los flujos dominantes.

¿Por qué no se carga la vista inteligente?

Si Vista inteligente no se carga:

  1. Establezca el período de tiempo configurado en seis días o menos.

  2. Se debe seleccionar el botón Probar la versión preliminar para participar.

    Captura de pantalla del botón Probar la versión preliminar en la interfaz de usuario de Mapa de aplicación.

¿Por qué Vista inteligente tarda tanto en cargarse?

Evite seleccionar Actualizar componentes de mapa.

Habilite Vista inteligente solo en un recurso de Application Insights.

Captura de pantalla del botón Actualizar componentes de mapa en la interfaz de usuario de Mapa de aplicación.

Comentarios del portal

Para proporcionar comentarios, use la opción de comentarios.

Captura de pantalla con la opción Comentarios.

Pasos siguientes