Creación automática de paneles de Amazon CloudWatch basados en etiquetas - Recomendaciones de AWS

Creación automática de paneles de Amazon CloudWatch basados en etiquetas

Janak Vadaria, Vinodkumar Mandalapu y RAJNEESH TYAGI, Amazon Web Services

Resumen

La creación manual de diferentes paneles de Amazon CloudWatch puede llevar mucho tiempo, especialmente cuando hay que crear y actualizar varios recursos para escalar automáticamente el entorno. Una solución que cree y actualice automáticamente sus paneles de CloudWatch puede ahorrarle tiempo. Este patrón lo ayuda a implementar una canalización de AWS Cloud Development Kit (AWS CDK) totalmente automatizada que crea y actualiza los paneles de CloudWatch para sus recursos de AWS en función de los eventos de cambio de etiquetas, a fin de mostrar las métricas de Golden Signals.

En la ingeniería de confiabilidad del sitio (SRE), Golden Signals se refiere a un conjunto integral de métricas que ofrecen una visión amplia de un servicio desde la perspectiva del usuario o del consumidor. Estas métricas se componen de la latencia, el tráfico, los errores y la saturación. Para obtener más información, consulte ¿Qué es la ingeniería de confiabilidad del sitio (SRE)? en el sitio web de AWS.

La solución que proporciona este patrón se basa en eventos. Una vez implementada, supervisa de forma continua los eventos de cambio de etiquetas y actualiza automáticamente los paneles y las alarmas de CloudWatch.

Requisitos previos y limitaciones

Requisitos previos

Limitaciones

Actualmente, esta solución crea paneles automatizados únicamente para los siguientes servicios de AWS:

Arquitectura

Pila de tecnología de destino

Arquitectura de destino

Arquitectura de destino para crear paneles de CloudWatch basados en etiquetas
  1. Un evento de cambio de etiqueta de AWS para las etiquetas de aplicación configuradas o los cambios de código inicia una canalización en AWS CodePipeline para crear e implementar paneles de CloudWatch actualizados.

  2. AWS CodeBuild ejecuta un script de Python para buscar los recursos que tienen etiquetas configuradas y almacena los ID de los recursos en un archivo local en un entorno de CodeBuild.

  3. CodeBuild ejecuta cdk synth para generar plantillas de CloudFormation que implementan paneles y alarmas de CloudWatch.

  4. CodePipeline implementa las plantillas de CloudFormation en la región y la Cuenta de AWS especificadas.

  5. Cuando la pila de CloudFormation se haya implementado correctamente, podrá ver los paneles y las alarmas de CloudWatch.

Automatizar y escalar

Esta solución se ha automatizado mediante AWS CDK. Puede encontrar el código en el repositorio de GitHub Paneles de Golden Signals en Amazon CloudWatch. Para un escalado adicional y para crear paneles personalizados, puede configurar varias claves y valores de etiquetas.

Herramientas

Servicios de Amazon

  • Amazon EventBridge es un servicio de bus de eventos sin servidor que le permite conectar sus aplicaciones con datos en tiempo real desde varios orígenes, entre los que se incluyen funciones de AWS Lambda, puntos de conexión de invocación HTTP con destinos de API o buses de eventos en otras Cuentas de AWS.

  • AWS CodePipeline permite diseñar y configurar rápidamente las diferentes etapas de un proceso de lanzamiento de software y automatizar los pasos necesarios para lanzar los cambios en el software de manera continua.

  • AWS CodeBuild es un servicio de compilación completamente administrado que le permite compilar código fuente, poner en marcha pruebas unitarias y producir artefactos listos para implementar.

  • La AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que le permite interactuar con los servicios de AWS mediante comandos en el intérprete de comandos de la línea de comandos.

  • AWS Identity and Access Management(IAM) lo ayuda a administrar de forma segura el acceso a sus recursos AWS al controlar quién está autenticado y autorizado a usarlos.

  • Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

Prácticas recomendadas

Como práctica recomendada, puede usar el cifrado y la autenticación para los repositorios de origen que se conectan a sus canalizaciones. Para obtener más prácticas recomendadas, consulte Prácticas recomendadas y casos de uso de CodePipeline en la documentación de CodePipeline.

Epics

TareaDescripciónHabilidades requeridas

Configure implemente la aplicación de ejemplo.

  1. Clone el repositorio de código de muestra de GitHub mediante el comando:

    git clone https://github.com/aws-samples/golden-signals-dashboards-sample-app
  2. Navegue hasta el repositorio clonado de su equipo y abra el archivo src/project-settings.ts con el editor que elija.

  3. Cambie el valor constante projectSettings de acuerdo con las etiquetas de sus recursos de AWS y las asignaciones de aplicaciones.

  4. Establezca las variables de entorno AWS_ACCOUNT, AWS_REGION y GS_DASHBOARD_INSTANCE.

    • Establezca AWS_ACCOUNT en el ID de cuenta de su cuenta de AWS.

    • Establezca AWS_REGION en la región en donde desea implementar la aplicación de ejemplo.

    • Configure GS_DASHBOARD_INSTANCE en dev, test o prod, en función de su entorno de desarrollo. (Se recomienda test para el procedimiento de prueba descrito en este patrón).

  5. Configure la AWS CLI con las credenciales de acceso de AWS. Para obtener más información, consulte Establecer y ver los valores de configuración mediante los comandos en la documentación de AWS CLI.

  6. Ejecute el siguiente comando para implementar la aplicación de ejemplo de panel de Golden Signals:

    sh deploy.sh
DevOps de AWS

Cree paneles y alarmas de forma automática.

Tras implementar la aplicación de ejemplo, puede crear cualquiera de los recursos compatibles con esta solución con los valores de etiqueta esperados, lo que creará automáticamente los paneles y las alarmas especificados.

Para probar esta solución, cree una función de AWS Lambda:

  1. Inicie sesión en Consola de administración de AWS en la Región de AWS donde implementó la aplicación de ejemplo.

  2. Abra la consola en https://console.aws.amazon.com/lambda/.

  3. Elija Crear una función y luego introduzca un nombre de función.

  4. En el panel Configuración avanzada, seleccione Habilitar etiquetas y, a continuación, Añadir nueva etiqueta. Introduzca la clave y el valor siguientes:

    • Clave: AutoDashboard

    • Valor: True

  5. Seleccione Creación de función.

    La función de Lambda inicia inmediatamente una canalización de código, que crea automáticamente los paneles y las alarmas para esa función de Lambda concreta.

  6. Para ver los paneles y las alarmas automatizados, abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/. Puede ver los paneles y las alarmas personalizados de la función que especificó en la constante projectSettings (APP1-lambda de forma predeterminada).

  7. Seleccione el panel de la función de Lambda para ver los paneles automatizados adicionales que se crearon como parte de esta solución.

  8. Repita estos pasos para otros servicios, como Amazon RDS, Amazon SNS, AWS Auto Scaling y DynamoDB, para generar los paneles asociados. Para obtener un ejemplo de Amazon RDS, consulte la sección Información adicional.

DevOps de AWS
TareaDescripciónHabilidades requeridas

Elimine el constructo golden-signals-dashboard.

  1. Para eliminar todas las pilas de CloudFormation creadas por la aplicación de ejemplo, debe volver a configurar las variables de entorno AWS_ACCOUNT, AWS_REGION y GS_DASHBOARD_INSTANCE. El comando destroy.sh requiere estas configuraciones.

    • AWS_ACCOUNT es el ID de cuenta de su cuenta de AWS.

    • AWS_REGION es la región en la que implementó la aplicación de ejemplo.

    • GS_DASHBOARD_INSTANCE es dev, test o prod, en función de su configuración anterior.

  2. Configure la AWS CLI con las credenciales de AWS.

  3. Ejecute el siguiente comando para eliminar la aplicación de ejemplo y todas las pilas de CloudFormation asociadas:

    sh destroy.sh
DevOps de AWS

Solución de problemas

ProblemaSolución

No se encontró el comando de Python (en referencia a findresources.sh, línea 8).

Compruebe la versión de la instalación de Python. Si ha instalado la versión 3 de Python, sustituya python por python3 en la línea 8 del archivo resources.sh y vuelva a ejecutar el comando sh deploy.sh para implementar la solución.

Recursos relacionados

Información adicional

En la siguiente ilustración se muestra un panel de ejemplo para Amazon RDS que se crea como parte de esta solución.

Ejemplo de panel para Amazon RDS