Un momento… ¿Elastic Observability monitorea métricas para servicios de AWS en solo minutos?

blog-charts-packages.png

La transición a aplicaciones distribuidas está en pleno auge, impulsada principalmente por nuestra necesidad de estar “siempre activos” como consumidores y empresas dinámicas. Esa necesidad está llevando a los despliegues a tener requisitos más complejos, además de la capacidad de ser globalmente diversos e innovar con rapidez.

El cloud se está convirtiendo en la opción de despliegue de hecho para las aplicaciones actuales. Muchos despliegues en el cloud optan por hospedar sus aplicaciones en AWS por el conjunto globalmente diverso de regiones que abarca y la gran cantidad de servicios (para innovación y despliegue más rápido) disponibles, y por reducir los costos operativos y de capital. En AWS, los equipos de desarrollo encuentran valor adicional en migrar a Kubernetes en Amazon EKS, probar las opciones sin servidor más recientes y mejorar las aplicaciones tradicionales con niveles con mejores servicios.

Elastic Observability ofrece 30 integraciones listas para usar para servicios de AWS y se agregarán más próximamente.

Puedes encontrar un resumen en el que se destacan algunas de las integraciones y capacidades en una publicación anterior:

Algunas publicaciones adicionales sobre integraciones de servicios clave de AWS en Elastic:

Puedes encontrar una lista completa de las integraciones de AWS en la documentación en línea de Elastic:

Además de nuestras integraciones de AWS nativas, Elastic Observability agrega no solo logs, sino también métricas de los servicios de AWS y las aplicaciones que se ejecutan en los servicios informáticos de AWS (EC2, Lambda, EKS/ECS/Fargate). Todos estos datos pueden analizarse visualmente y de forma más intuitiva usando las capacidades de machine learning avanzadas de Elastic, que ayudan a detectar problemas de rendimiento y revelar causas raíz antes de que los usuarios se vean afectados.

Para obtener más detalles sobre cómo Elastic Observability proporciona capacidades de monitoreo de rendimiento de aplicaciones (APM), como mapas de servicios, rastreos, dependencias y correlaciones de métricas basadas en ML:

Así es, Elastic ofrece la ingesta, agregación y análisis de métricas para las aplicaciones y los servicios de AWS en servicios informáticos de AWS (EC2, Lambda, EKS/ECS/Fargate). Elastic es más que logs; ofrece una solución de observabilidad unificada para los entornos de AWS.

En este blog, revisaremos cómo Elastic Observability puede monitorear las métricas de una aplicación de AWS simple que se ejecuta en servicios de AWS, lo que incluye:

  • AWS EC2
  • AWS ELB
  • AWS RDS (AuroraDB)
  • AWS NAT Gateways

Como verás, una vez que la integración está instalada, las métricas llegarán de forma instantánea y puedes comenzar de inmediato a revisar las métricas.

Requisitos previos y configuración

Si tienes pensado seguir este blog, estos son algunos de los componentes y detalles que usamos para configurar esta demostración:

Resumen de la aplicación de tres niveles

Antes de adentrarnos en la configuración de Elastic, repasemos qué estamos monitoreando. Si sigues las instrucciones para aws-three-tier-web-architecture-workshop, se desplegará lo siguiente.

Qué se despliega:

  • 1 VPC con 6 subredes
  • 2 AZ
  • 2 servidores web por AZ
  • 2 servidores de aplicaciones por AZ
  • 1 balanceador de carga de aplicaciones orientado al exterior
  • 1 balanceador de carga de aplicaciones orientado al interior
  • 2 puertas de enlaces de NAT para gestionar el tráfico a la capa de aplicaciones
  • 1 puerta de enlace de internet
  • 1 RDS Aurora DB con una réplica de lectura

Al final de este blog, también proporcionaremos un script de Playwright para implementar a fin de cargar esta app. Esto ayudará que las métricas "iluminen" los dashboards.

Configuración general

Repasemos los detalles de cómo obtener la aplicación, la integración de AWS en Elastic y qué se ingesta.

Paso 0: Cargar la aplicación de tres niveles de AWS y obtener las credenciales

Sigue las instrucciones incluidas en la app de tres niveles de AWS y las instrucciones en el enlace del taller en git. El taller se incluye aquí.

Una vez instalada la app, obtén las credenciales de AWS. Las necesitarás para la integración de AWS de Elastic.

Existen varias opciones para las credenciales:

  • Usar directamente claves de acceso
  • Usar credenciales de seguridad temporales
  • Usar un archivo de credenciales compartido
  • Usar un nombre de recurso de Amazon (ARN) de rol de IAM

Obtén más detalles sobre cuestiones específicas de las credenciales y permisos necesarios.

Paso 1: Obtener una cuenta en Elastic Cloud

Sigue las instrucciones para dar los primeros pasos en Elastic Cloud.

Paso 2: Instalar la integración de AWS de Elastic

Navega a la integración de AWS en Elastic.

Selecciona la integración Add AWS (Agregar AWS).

Aquí es donde agregarás tus credenciales, y se almacenarán como política en Elastic. Esta política se usará como parte de la instalación para el agente en el paso siguiente.

Como puedes ver, la Integración de AWS de Elastic general recopilará una gran cantidad de datos de 30 servicios de AWS. Si no deseas instalar esta Integración de AWS de Elastic, puedes seleccionar integraciones individuales para instalar.

Paso 3: Instalar Elastic Agent con integración de AWS

Ahora que creaste una política de integración, navega a la sección Fleet en Management (Gestión) en Elastic.

Selecciona el nombre de la política que creaste en el último paso.

Sigue el paso 3 en las instrucciones en la ventana Add agent (Agregar agente). Para esto, deberás:

1: Activar una instancia de EC2

  • t2.medium es mínimo
  • Linux - tú eliges cuál
  • Asegúrate de permitir la reservación abierta en la instancia de EC2 cuando la inicies

2: Iniciar sesión en la instancia y ejecutar los comandos en la pestaña Linux Tar (a continuación se muestra un ejemplo)

curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.5.0-linux-x86_64.tar.gz
tar xzvf elastic-agent-8.5.0-linux-x86_64.tar.gz
cd elastic-agent-8.5.0-linux-x86_64
sudo ./elastic-agent install --url=https://37845638732625692c8ee914d88951dd96.fleet.us-central1.gcp.cloud.es.io:443 --enrollment-token=jkhfglkuwyvrquevuytqoeiyri

Paso 4: Ejecutar el tráfico en la aplicación

Este es un script simple que también puedes ejecutar con Playwright a fin de agregar tráfico al sitio web para la aplicación de tres niveles de AWS:

import { test, expect } from '@playwright/test';

test('homepage for AWS Threetierapp', async ({ page }) => {
  await page.goto('http://web-tier-external-lb-1897463036.us-west-1.elb.amazonaws.com/#/db');

   await page.fill('#transactions > tbody > tr > td:nth-child(2) > input', (Math.random()*100).toString())
  await page.fill('#transactions > tbody > tr > td:nth-child(3) > input', (Math.random()*100).toString())
  await page.waitForTimeout(1000)
  await page.click('#transactions > tbody > tr:nth-child(2) > td:nth-child(1) > input[type=button]')
  await page.waitForTimeout(4000)

});

Este script iniciará tres navegadores, pero puedes limitar esta carga a un navegador en el archivo playwright.config.ts.

Para este ejercicio, ejecutamos este tráfico durante aproximadamente cinco horas con un intervalo de cinco minutos mientras probamos el sitio web.

Paso 5: Ir a los dashboards de AWS

Ahora que tu Elastic Agent se está ejecutando, puedes ir a los dashboards de AWS relacionados para ver qué se está ingestando.

Para buscar los dashboards de Integración de AWS, simplemente búscalos en la barra de búsqueda de Elastic. Los relevantes para este blog son los siguientes:

  • [Metrics AWS] EC2 Overview
  • [Metrics AWS] ELB Overview
  • [Metrics AWS] RDS Overview
  • [Metrics AWS] NAT Gateway

Veamos qué aparece.

Todos estos dashboards vienen listos para usar y aplican a todas las imágenes siguientes, acotamos las vistas a solo los elementos relevantes de nuestra app.

En todos los dashboards, limitamos el plazo al momento en que ejecutamos el generador de tráfico.

Dashboard EC2 Overview de Elastic Observability
Dashboard EC2 Overview de Elastic Observability

Una vez que filtramos nuestras 4 instancias de EC2 (2 servidores web y 2 servidores de aplicaciones), podemos ver lo siguiente:

1: las 4 instancias están en marcha sin errores en las comprobaciones de estado.

2: vemos el uso de CPU promedio en todo el plazo, y nada parece inusual.

3: vemos el flujo de bytes de la red, de entrada y salida, que se agregan con el tiempo a medida que se cargan filas en la base de datos.

Si bien este ejercicio muestra una pequeña porción de las métricas que pueden visualizarse, hay más disponibles de AWS EC2. Las métricas enumeradas en la documentación de AWS están todas disponibles, incluidas las dimensiones para ayudar a acotar la búsqueda a instancias específicas, etc.

Dashboard ELB Overview de Elastic Observability
Dashboard ELB Overview de Elastic Observability

En el dashboard de ELB, filtramos nuestros 2 balanceadores de carga (balanceador de carga web externo y balanceador de carga de aplicaciones interno).

Con el dashboard listo para usar, puedes ver las métricas específicas de ELB de las aplicaciones. Una buena parte de las métricas específicas de ELB de las aplicaciones incluidas en la documentación de AWS están disponibles para agregar grafos.

Para nuestros dos balanceadores de carga, podemos ver lo siguiente:

1: ambos hosts (instancias de EC2 conectadas a ELB) están en buen estado.

2: las unidades de capacidad del balanceador de cargas (cuánto usas) y los recuentos de solicitudes aumentaron conforme a lo esperado durante el plazo de generación de tráfico.

3: elegimos mostrar los recuentos 4XX y 2XX. 4XX ayudará a identificar problemas con la aplicación o conectividad con los servidores de aplicaciones.

Dashboard RDS Overview de Elastic Observability
Dashboard RDS Overview de Elastic Observability

Para AuroraDB, que se despliega en RDS, filtramos solo las instancias primarias y secundarias de Aurora en el dashboard.

Al igual que con EC2 y ELB, la mayoría de las métricas de Cloudwatch también están disponibles para crear nuevos gráficos y grafos. Acotamos este dashboard para mostrar lo siguiente:

1: rendimiento de insertar y rendimiento de seleccionar

2: latencia de escritura

3: uso de CPU

4: cantidad general de conexiones durante el plazo

Dashboard AWS NAT de Elastic Observability
Dashboard AWS NAT de Elastic Observability

Aplicamos filtros para ver solo nuestras 2 instancias de NAT, al frente de los servidores de aplicaciones. Tal como con los otros dashboards, hay otras métricas disponibles para crear grafos y gráficos según sea necesario.

Para el dashboard de NAT podemos ver lo siguiente:

1: las NAT Gateways están bien debido a que no se perdieron paquetes

2: una cantidad esperada de conexiones activas desde el servidor web

3: un conjunto bastante normal de métricas para bytes de entrada y salida

¡Felicitaciones! Comenzaste a monitorear métricas de servicios de AWS clave para tu aplicación.

¿Qué más puedes monitorear con AWS?

Agregar logs de servicios de AWS

Ahora que las métricas se están monitoreando, también puedes agregar logging. Existen varias opciones para ingestar logs.

1. La Integración de AWS en Elastic Agent tiene configuraciones de logs. Solo asegúrate de activar lo que deseas recibir. Ingestemos los logs de Aurora de RDS. En la política de Elastic Agent, simplemente activamos Collect logs from CloudWatch (Recopilar logs de CloudWatch) (consulta a continuación). Luego, actualiza el agente a través de la UI de gestión de Fleet.

2. Puedes instalar el reenviador de logs de Lambda. Esta opción extraerá logs de varias ubicaciones. Ve el diagrama de la arquitectura a continuación.

También puedes encontrar una revisión de esta opción en este blog.

Analizar los datos con Elastic Machine Learning

Una vez que las métricas y los logs (o uno de ellos) se encuentren en Elastic, comienza a analizar tus datos a través de las capacidades de ML de Elastic. Puedes encontrar una buena revisión de estas características aquí:

Y hay muchos más videos y blogs en el blog de Elastic.

Conclusión: Monitorear las métricas de servicio de AWS con Elastic Observability es fácil

Espero que hayas podido apreciar cómo Elastic Observability puede ayudarte a monitorear las métricas de servicios de AWS, aquí hay un breve resumen de las lecciones y lo que aprendiste:

  • Elastic Observability ofrece soporte para la ingesta y el análisis de las métricas de servicios de AWS.
  • Es fácil configurar la ingesta de los servicios de AWS a través de Elastic Agent.
  • Elastic Observability tiene varios dashboards de servicios de AWS listos para usar (OOTB) que puedes utilizar para revisar de forma preliminar la información y, luego, modificar conforme a tus necesidades.
  • Se brinda soporte para más de 30 servicios de AWS como parte de la Integración de AWS en Elastic Observability, y más servicios se agregan con regularidad.
  • Como se menciona en los blogs relacionados, puedes analizar las métricas de servicios de AWS con las capacidades de machine learning de Elastic.

comienza tu propia prueba gratuita de 7 días registrándote a través de AWS Marketplace y activa rápidamente un despliegue en minutos en cualquiera de las regiones de Elastic Cloud en AWS en todo el mundo. Tu compra en AWS Marketplace de Elastic se incluirá en tu facturación consolidada mensual y se tendrá en cuenta para el gasto acordado con AWS.

El lanzamiento y la sincronización de cualquier característica o funcionalidad descrita en este blog quedan a la entera discreción de Elastic. Cualquier característica o funcionalidad que no esté disponible actualmente puede no entregarse a tiempo o no entregarse en absoluto.