Supervisión - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Supervisión

La supervisión es el proceso de recopilar diferentes métricas, como la CPU y la memoria, y almacenarlas en una base de datos de series temporales, como Amazon Managed Service for Prometheus. El sistema de monitorización puede estar basado en el empuje o en el arrastre. En los sistemas basados en la inserción, la fuente envía las métricas periódicamente a la base de datos de series temporales. En los sistemas basados en la extracción, el rastreador extrae métricas de varias fuentes y las almacena en la base de datos de series temporales. Los desarrolladores pueden analizar las métricas, filtrarlas y graficarlas a lo largo del tiempo para visualizar el rendimiento. La implementación exitosa de la supervisión se puede dividir en dos áreas amplias: aplicaciones e infraestructura.

Para los desarrolladores de aplicaciones, las siguientes métricas son fundamentales:

  • Latencia: el tiempo que se tarda en recibir una respuesta

  • Rendimiento de solicitudes: el número total de solicitudes gestionadas por segundo

  • Porcentaje de errores de solicitud: el número total de errores

Registre la utilización de los recursos, la saturación y los recuentos de errores de cada recurso (como el contenedor de aplicaciones o la base de datos) que interviene en la transacción comercial. Por ejemplo, al supervisar el uso de la CPU, puede realizar un seguimiento del uso medio de la CPU, la carga media y la carga máxima durante la ejecución de la prueba de rendimiento. Cuando un recurso alcanza la saturación durante una prueba de stress, pero es posible que no alcance la saturación durante una ejecución de rendimiento durante un período de tiempo más corto.

Métricas

Las aplicaciones pueden usar diferentes actuadores, como los actuadores con resorte, para monitorear sus aplicaciones. Estas bibliotecas de nivel de producción suelen incluir un punto final REST para supervisar la información sobre las aplicaciones en ejecución. Las bibliotecas pueden monitorear la infraestructura subyacente, las plataformas de aplicaciones y otros recursos. Si alguna de las métricas predeterminadas no cumple los requisitos, el desarrollador debe implementar métricas personalizadas. Las métricas personalizadas pueden ayudar a realizar un seguimiento de los indicadores clave de rendimiento (KPI) empresariales que no se pueden rastrear a través de los datos de las implementaciones predeterminadas. Por ejemplo, es posible que desees realizar un seguimiento de una operación empresarial, como la latencia de la integración de una API de terceros o el número total de transacciones completadas.

Cardinalidad

La cardinalidad se refiere al número de series temporales únicas de una métrica. Las métricas están etiquetadas para proporcionar información adicional. Por ejemplo, una aplicación basada en REST que rastrea el recuento de solicitudes de una API determinada indica una cardinalidad de 1. Si agregas una etiqueta de usuario para identificar el recuento de solicitudes por usuario, la cardinalidad aumenta proporcionalmente al número de usuarios. Al añadir etiquetas que creen cardinalidad, puede dividir las métricas en varios grupos. Es importante utilizar las etiquetas adecuadas para cada caso de uso adecuado, ya que la cardinalidad aumenta el número de series de métricas en la base de datos de series temporales que monitorea el backend.

Resolución

En una configuración de monitoreo típica, la aplicación de monitoreo está configurada para extraer las métricas de la aplicación periódicamente. La periodicidad del rastreo define la granularidad de los datos de monitoreo. Las métricas recopiladas en intervalos más cortos tienden a proporcionar una visión más precisa del rendimiento porque hay más puntos de datos disponibles. Sin embargo, la carga de la base de datos de series temporales aumenta a medida que se almacenan más entradas. Normalmente, una granularidad de 60 segundos es la resolución estándar y 1 segundo es la resolución alta.

DevOps equipo

Los desarrolladores de aplicaciones suelen pedir a los DevOps ingenieros que configuren un entorno de supervisión para visualizar las métricas de la infraestructura y las aplicaciones. El DevOps ingeniero debe configurar un entorno que sea escalable y compatible con las herramientas de visualización de datos que utiliza el desarrollador de la aplicación. Esto implica extraer datos de monitoreo de diferentes fuentes y enviarlos a una base de datos central de series temporales, como Amazon Managed Service for Prometheus.

Monitorear el backend

Un servicio back-end de monitoreo permite la recopilación, el almacenamiento, la consulta y la visualización de datos de métricas. Suele ser una base de datos de series temporales, como Amazon Managed Service for Prometheus o InfluxData InfluxDB. Mediante un mecanismo de descubrimiento de servicios, el recopilador de monitoreo puede recopilar métricas de diferentes fuentes y almacenarlas. Durante las pruebas de rendimiento, es importante almacenar los datos de las métricas para poder buscarlos más adelante. Te recomendamos guardar al menos 15 días de datos para las métricas. Sin embargo, almacenar las métricas durante más tiempo no aporta beneficios significativos y genera costes de almacenamiento innecesarios. Como la prueba de rendimiento puede generar un gran volumen de métricas, es importante que la infraestructura de métricas se amplíe y, al mismo tiempo, proporcione un rendimiento de consultas rápido. El servicio backend de supervisión proporciona un lenguaje de consulta que se puede utilizar para ver los datos de las métricas.

Visualización

Proporcione herramientas de visualización que puedan mostrar los datos de la aplicación para proporcionar información significativa. El DevOps ingeniero y el desarrollador de la aplicación deben aprender el lenguaje de consulta del backend de supervisión y trabajar en estrecha colaboración para generar una plantilla de panel que pueda reutilizarse. En los paneles, incluya la latencia y los errores y, al mismo tiempo, muestre la utilización y la saturación de los recursos en la infraestructura y los recursos de la aplicación.

Automatizar la infraestructura de monitoreo

Al igual que el registro, es importante automatizar la instalación y el funcionamiento de la infraestructura de monitoreo para poder adaptarse a los diferentes requisitos de las diferentes aplicaciones. Utilice las herramientas de IaC para aprovisionar el backend de la infraestructura de monitoreo. Luego, puede aprovisionar la infraestructura de monitoreo como un servicio compartido o como una implementación independiente a medida para una aplicación en particular.

Utilice las canalizaciones de CD para automatizar lo siguiente:

  • Implemente la infraestructura de monitoreo a pedido y destrúyala cuando no sea necesaria.

  • Actualice la configuración de monitoreo para filtrar o agregar métricas.

  • Implemente paneles de aplicaciones.

Herramientas de monitoreo

Amazon Managed Service for Prometheus es un servicio de monitorización compatible con Prometheus para la infraestructura de contenedores y las métricas de aplicaciones de contenedores que puede utilizar para supervisar de forma segura los entornos de contenedores a escala. Para obtener más información, consulta la entrada del blog Cómo empezar con Amazon Managed Service for Prometheus.

Amazon CloudWatch proporciona una supervisión completa en AWS. CloudWatch admite soluciones AWS nativas y de código abierto para que pueda comprender lo que sucede en su conjunto de tecnologías en cualquier momento.

Entre AWS las herramientas nativas se incluyen las siguientes:

Amazon CloudWatch ofrece funciones diseñadas específicamente para casos de uso específicos, como la supervisión de contenedores a través CloudWatch de Container Insights. Estas funciones están integradas CloudWatch para que puedas configurar los registros, la recopilación de métricas y la supervisión.

Para sus aplicaciones y microservicios en contenedores, utilice Container Insights para recopilar, agregar y resumir métricas y registros. Container Insights está disponible para las plataformas Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Kubernetes Service (Amazon EKS) y Kubernetes en Amazon Elastic Compute Cloud (Amazon EC2). Container Insights recopila datos como eventos de registro de rendimiento en el formato métrico integrado. Estas entradas de eventos del registro de rendimiento utilizan un esquema JSON estructurado que admite la ingesta y el almacenamiento de datos de alta cardinalidad a escala.

Para obtener información sobre la implementación de Container Insights con Amazon EKS, consulte la entrada del blog Introducing Amazon CloudWatch Container Insights for Amazon EKS Fargate using AWS Distro for. OpenTelemetry