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.
En esta guía se muestra cómo habilitar Azure Monitor Application Insights para cargas de trabajo de Azure Kubernetes Service (AKS) sin modificar el código fuente.
Trata la preparación de un clúster, las implementaciones de incorporación, el reinicio de las implementaciones y la visualización de las métricas de rendimiento de la aplicación. Estos pasos instrumentan automáticamente los pods de la aplicación insertando la Distribución de OpenTelemetry de Azure Monitor para generar telemetría. Para obtener más información sobre la implementación automática y sus ventajas, consulte ¿Qué es la implementación automática para Azure Monitor Application Insights?
Nota:
Para participar en la versión preliminar pública limitada de Autoinstrumentation para .NET o Python, consulte Enable AKS autoinstrumentation for Python and .NET (versión preliminar limitada).
Prerrequisitos
- Un clúster AKS que ejecuta una implementación de Kubernetes que usa Java o Node.js en la nube pública de Azure
- Un recurso de Application Insights basado en el área de trabajo.
- CLI de Azure 2.60.0 o posterior. Para más información, consulte Instalación de la CLI de Azure, ¿Qué versión de la CLI de Azure está instalada? y Actualización de la CLI de Azure.
Advertencia
Esta característica solo admite grupos de nodos de Linux. No se admiten los grupos de nodos de Windows.
Preparación de un clúster
Puede preparar un clúster mediante el portal de Azure o CLI de Azure.
Use Azure Portal para preparar un clúster.
Incorporación de implementaciones
Puede incorporar despliegues de dos formas: en todo el espacio de nombres o por despliegue. Use el método en todo el espacio de nombres para incorporar todas las implementaciones dentro de un espacio de nombres. Para la incorporación selectiva o configurada de forma variable en varias implementaciones, utilice el enfoque por implementación.
Incorporación en todo el espacio de nombres
Use Azure Portal para la incorporación de la implementación a nivel de espacio de nombres.
- En el panel Espacios de nombres , seleccione el espacio de nombres que se va a instrumentar.
- Seleccione Supervisión de aplicaciones.
- Seleccione los idiomas que se van a instrumentar.
- Deje desactivada la casilla Realizar reinicio del lanzamiento de todas las implementaciones . Debe reiniciar manualmente las implementaciones más adelante.
- Seleccione Configurar.
- Observe el progreso de la monitorización de la aplicación y espere a que se complete.
Nota:
- Las implementaciones afectadas deben reiniciarse antes de que los cambios surtan efecto.
- Reinicie manualmente las implementaciones si observa errores de progreso.
- Vuelva a consultar la sección Supervisión de aplicaciones.
- Compruebe el estado "instrumentado" de cada espacio de nombres de la implementación.
Incorporación por implementación
Use la incorporación por implementación para asegurarse de que las implementaciones se instrumentan con lenguajes específicos o para dirigir la telemetría para separar los recursos de Application Insights.
Cree un recurso personalizado de instrumentación único para cada escenario. Evite usar el nombre
default, que se usa para la incorporación en todo el espacio de nombres.Cree recursos personalizados de instrumentación para configurar Application Insights en cada espacio de nombres. Actualice
applicationInsightsConnectionStringpara tener la cadena de conexión del recurso de Application Insights.Sugerencia
Puede recuperar la cadena de conexión en la página de resumen del recurso de Application Insights.
apiVersion: monitor.azure.com/v1 kind: Instrumentation metadata: name: cr1 namespace: mynamespace1 spec: settings: autoInstrumentationPlatforms: [] destination: # required applicationInsightsConnectionString: "InstrumentationKey=11111111-1111-1111-1111-111111111111;IngestionEndpoint=https://eastus2-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus2.livediagnostics.monitor.azure.com/"Como mínimo, se requiere la siguiente configuración:
-
spec.destination.applicationInsightsConnectionString: La cadena de conexión de un recurso de Application Insights.
-
Asocie cada implementación con el recurso personalizado adecuado mediante anotaciones. La anotación invalida el idioma establecido en el recurso personalizado.
Importante
Para evitar agregarlas a las anotaciones de la implementación por error, agregue anotaciones en el
spec.template.metadata.annotationsnivel de la implementación.Ejemplos:
- Java:
instrumentation.opentelemetry.io/inject-java: "cr1" - Node.js:
instrumentation.opentelemetry.io/inject-nodejs: "cr1"
Coloque las anotaciones como se indica a continuación.
apiVersion: apps/v1 kind: Deployment ... spec: template: metadata: annotations: instrumentation.opentelemetry.io/inject-nodejs: "cr1"Sugerencia
Reinicie las implementaciones para que la configuración surta efecto.
- Java:
Incorporación de modo mixto
Use el modo mixto cuando la mayoría de las implementaciones usen una configuración predeterminada y algunas implementaciones necesitan configuraciones diferentes.
- Implemente la incorporación en todo el espacio de nombres para definir la configuración predeterminada.
- Cree configuraciones de incorporación por implementación para invalidar la configuración predeterminada para recursos específicos.
Reinicio de la implementación
Puede reiniciar una implementación mediante el portal de Azure o la herramienta de línea de comandos de Kubernetes (kubectl).
Ejecute el siguiente comando después de crear todos los recursos personalizados y, opcionalmente, anotar las implementaciones.
kubectl rollout restart deployment <deployment-name> -n mynamespace1
Este comando hace que la autoinstrumentación tenga efecto, habilitando Application Insights. Para comprobar que Application Insights está habilitado, genere tráfico y vaya al recurso. Tu aplicación se representa como un rol en la nube en las experiencias de usuario de Application Insights. Puede usar todas las experiencias de Application Insights, excepto Live Metrics y Code Analysis. Para más información sobre las experiencias de Application Insights disponibles, consulte Experiencias de Application Insights.
Visualización de métricas de rendimiento de aplicaciones en AKS
Al instrumentar automáticamente las cargas de trabajo, las métricas de rendimiento de la aplicación aparecen directamente en las hojas de recursos de AKS. Puede ver cómo funciona la aplicación sin salir del clúster. Estas vistas muestran un pequeño conjunto de métricas muy relevantes para la priorización inicial. Use Application Insights para la supervisión completa del rendimiento de las aplicaciones (APM).
Cada ámbito muestra tres métricas:
- Tiempo de respuesta del servidor: latencia y capacidad de respuesta de las solicitudes entrantes.
- Solicitudes de servidor: carga de aplicaciones y volumen de tráfico.
- Errores: errores y solicitudes con errores.
Estas métricas aparecen en tres ámbitos:
- Espacio de nombres: el icono Métricas de rendimiento de la aplicación en la información general del espacio de nombres se agrega por carga de trabajo, con el tiempo medio medio de respuesta del servidor, las solicitudes principales del servidor y las principales solicitudes con errores.
- Workload (Deployment)Carga de trabajo (implementación)Carga de trabajo (implementación): The deployment overview shows time series across all pods in the workload, with a : La información general de la implementación muestra series temporales en todos los pods de la carga de trabajo, con un vínculo profundo a View in Application InsightsVer en Application InsightsVer en Application Insights deep link for full APM. para el APM completo. para el APM completo.
- Pod: La vista general del pod muestra los mismos gráficos de series temporales limitados a un único pod.
Visualización de métricas en el ámbito del espacio de nombres
- En el clúster de AKS, seleccione Recursos de Kubernetes>Namespaces en la navegación de la izquierda.
- Seleccione el espacio de nombres que contiene las cargas de trabajo instrumentadas.
- Busque el icono Métricas de rendimiento de la aplicación en la información general del espacio de nombres.
Visualización de métricas en el ámbito de la carga de trabajo
- En su clúster de AKS, seleccione Cargas de trabajo>Implementaciones en el panel de navegación izquierdo.
- Seleccione una implementación instrumentada.
- Revise los gráficos de series temporales en la introducción a la implementación: Tiempo medio de respuesta del servidor, Solicitudes de servidor y Solicitudes con error.
- Seleccione Ver en Application Insights para abrir la carga de trabajo en la experiencia completa de Application Insights.
Ver métricas en el ámbito del pod
- En la información general de implementación, desplácese hasta la sección Cargas de trabajo y seleccione la pestaña Pods .
- Seleccione un nombre de pod para abrir la información general del pod.
- Revise los gráficos de series temporales en el resumen del pod, limitados únicamente a ese pod: tiempo medio de respuesta del servidor, solicitudes del servidor y solicitudes fallidas.
- Seleccione Ver en Application Insights en cualquier gráfico para abrir el panel en la interfaz completa de Application Insights.
Para realizar un análisis completo de APM, incluidos seguimientos distribuidos, transacciones de extremo a extremo y las hojas Errores y Rendimiento, use Application Insights overviewInformación general de Application InsightsInformación general de Application Insights...
Quitar instrumentación automática para AKS
Puede quitar la autoinstrumentación de AKS mediante CLI de Azure.
Sugerencia
- Eliminar la autoinstrumentación de AKS utilizando CLI de Azure la elimina de todo el clúster.
- Para quitar la instrumentación automática de un único espacio de nombres, elimine el recurso personalizado de instrumentación (CR) asociado. Por ejemplo:
kubectl delete instrumentation <instrumentation-name> -n <namespace-name>.
Asegúrese de que no tiene ninguna implementación instrumentada. Para desinstrumentar una implementación instrumentada, quite el recurso personalizado de instrumentación asociado y ejecute el comando kubectl rollout restart en la implementación. A continuación, ejecute el siguiente comando.
az aks update --resource-group={resource_group} --name={cluster_name} --disable-azure-monitor-app-monitoring
Nota:
Si las implementaciones instrumentadas permanecen después de deshabilitar la característica, seguirán instrumentadas hasta que se vuelvan a implementar en su estado original no instrumentado o se eliminen.
Annotations
Las anotaciones permiten personalizar el comportamiento de la implementación automática en el nivel de implementación, incluida la deshabilitación de la instrumentación para implementaciones específicas y la habilitación de la recopilación de registros de aplicaciones en Application Insights.
Deshabilitación de la autoinstrumentación
Las siguientes anotaciones deshabilitan la instrumentación automática.
Java:
instrumentation.opentelemetry.io/inject-javaNode.js:
instrumentation.opentelemetry.io/inject-nodejsinstrumentation.opentelemetry.io/inject-java: "false"
Para volver a activar la instrumentación automática una vez deshabilitada, añada las anotaciones.
instrumentation.opentelemetry.io/inject-java: "true"
Coloque las anotaciones como se indica a continuación.
apiVersion: apps/v1
kind: Deployment
...
spec:
template:
metadata:
annotations:
instrumentation.opentelemetry.io/inject-java: "false"
Habilitación de registros en Application Insights
Puede recopilar registros en Application Insights como adición o reemplazo de los registros de Container Insights.
Al habilitar los registros en Application Insights, obtiene registros correlacionados, por lo que puede ver fácilmente los seguimientos distribuidos junto con sus registros relacionados. Algunos microservicios no escriben registros en la consola, por lo que Container Insights no puede recopilarlos. Solo la instrumentación de Application Insights captura estos registros.
Por el contrario, Es posible que Application Insights no pueda instrumentar todos los microservicios. Por ejemplo, no puede instrumentar los que usan NGINX o idiomas no admitidos. Es posible que prefiera confiar solo en los registros de contenedor para dichos microservicios.
Si tiene varios equipos de observabilidad, como ingenieros de infraestructura que usan Container Insights y desarrolladores mediante Application Insights, puede optar por habilitar ambos orígenes para los registros.
Revise las configuraciones de registro de la consola en el código de la aplicación para determinar si desea habilitar registros de Application Insights, registros de contenedor o ambos. Para deshabilitar la recopilación de registros de contenedor, consulte Filtrado de la recopilación de registros de contenedor con ConfigMap.
Importante
Para evitar duplicaciones innecesarias y un mayor costo, habilite los registros de Application Insights para permitir que la característica recopile registros de aplicaciones de marcos de registro estándar y envíelos a Application Insights.
Use la anotación siguiente para habilitar los registros en Application Insights:
monitor.azure.com/enable-application-logs
Importante
Para evitar agregarlas a las anotaciones de la implementación por error, agregue anotaciones en el spec.template.metadata.annotations nivel de la implementación.
monitor.azure.com/enable-application-logs: "true"
Preparación de un clúster durante la creación de un clúster de AKS
Puede preparar clústeres de AKS para esta característica durante la creación del clúster. Ejecute el siguiente comando de la CLI de Azure si prefiere que el clúster esté listo en el momento de la creación. La supervisión de aplicaciones no está habilitada solo porque el clúster está preparado. Debe implementar una aplicación e incorporarla a esta característica.
az aks create --resource-group={resource_group} --name={cluster_name} --enable-azure-monitor-app-monitoring --generate-ssh-keys
Preguntas más frecuentes sobre la autoinstrumentación de AKS
Las siguientes preguntas abordan escenarios y consideraciones comunes al usar la implementación automática de AKS, incluida la compatibilidad de métricas personalizadas, la compatibilidad con los SDK existentes y los procedimientos recomendados de seguridad.
¿Admite Azure Kubernetes Service (AKS) la implementación automática de métricas personalizadas?
Si desea métricas personalizadas en Node.js, instrumenta las aplicaciones manualmente con el Azure Monitor OpenTelemetry Distro.
Java admite métricas personalizadas con la instrumentación automática. Puede recopilar métricas personalizadas actualizando el código y habilitando esta característica. Si el código ya tiene métricas personalizadas, fluyen cuando se habilita la instrumentación automática.
¿Funciona la autoinstrumentación de AKS con aplicaciones instrumentadas mediante un SDK de OpenTelemetry de software de código abierto (OSS)?
La instrumentación automática de AKS puede interrumpir la telemetría enviada a terceros por un SDK de OpenTelemetry de OSS.
¿La autoinstrumentación de AKS puede coexistir con la instrumentación manual?
La instrumentación automática de AKS está diseñada para coexistir con ambas opciones de instrumentación manual: el SDK de la API clásica de Application Insights y Distribución de OpenTelemetry de Azure Monitor.
Siempre evita los datos duplicados y garantiza que las métricas personalizadas funcionen.
Consulte este gráfico para determinar cuándo tiene prioridad la implementación automática o la instrumentación manual.
| Language | Precedence |
|---|---|
| Node.js. | Instrumentación manual |
| Java | Instrumentación automática |
¿Cómo puedo asegurarme de que uso las versiones más recientes y seguras de la distribución de OpenTelemetry de Azure Monitor?
El equipo de desarrollo prioriza, corrige y libera vulnerabilidades detectadas en la Distribución de OpenTelemetry de Azure Monitor en la versión siguiente.
La instrumentación automática de AKS inserta la versión más reciente de la Distribución de OpenTelemetry de Azure Monitor en los pods de aplicación cada vez que cambia o reinicia su implementación.
La distribución de OpenTelemetry puede ser vulnerable en las implementaciones que no se cambian ni se reinician durante períodos prolongados de tiempo. Por este motivo, actualice o reinicie las implementaciones semanalmente para asegurarse de que usa una versión reciente de la distribución.
¿Cómo puedo obtener más información sobre la distribución openTelemetry de Azure Monitor?
Esta característica logra la instrumentación automática mediante la inserción de la distribución de OpenTelemetry de Azure Monitor en pods de aplicación.
Para Java, esta característica integra la distribución de OpenTelemetry de Azure Monitor independiente para Java. Consulte la documentación de distribución Java para obtener más información sobre el binario de instrumentación de Java.
Para Node.js, la característica inserta un binario de instrumentación automática basado en la Distribución de OpenTelemetry de Azure Monitor para Node.js. Para obtener más información, consulte Node.js documentación de distribución. Tenga en cuenta que no hay ninguna instalación automática independiente para Node.js, por lo que la documentación de distribución está orientada a la instrumentación manual. Puede omitir los pasos de configuración basados en código relacionados con la instrumentación manual. Sin embargo, todo lo demás de la documentación de distribución, como la configuración predeterminada y las configuraciones de variables de entorno, es aplicable a esta característica.