View a markdown version of this page

Automatización de la ingesta y visualización de métricas personalizadas de Amazon MWAA en Amazon Managed Grafana mediante Terraform - Recomendaciones de AWS

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.

Automatización de la ingesta y visualización de métricas personalizadas de Amazon MWAA en Amazon Managed Grafana mediante Terraform

Faisal Abdullah y Satya Vajrapu, Amazon Web Services

Resumen

En este patrón se explica cómo usar Amazon Managed Grafana para crear y supervisar métricas personalizadas que Amazon Managed Workflows para Apache Airflow (Amazon MWAA) incorpora. Amazon MWAA actúa como orquestador de los flujos de trabajo y emplea gráficos acíclicos dirigidos (DAGs) que se escriben en Python. Este patrón se centra en la supervisión de métricas personalizadas, como el número total de ejecuciones en la última hora, el recuento de aprobaciones y errores en DAGs cada hora y la DAGs duración media de estos procesos. Este análisis muestra cómo Amazon Managed Grafana se integra con Amazon MWAA para permitir una supervisión exhaustiva y obtener información sobre la orquestación de los flujos de trabajo en este entorno.

Requisitos previos y limitaciones

Requisitos previos 

  • Un activo Cuenta de AWS con los permisos de usuario necesarios para crear y gestionar lo siguiente Servicios de AWS:

    • AWS Identity and Access Management Funciones y políticas (IAM)

    • AWS Lambda

    • Amazon Managed Grafana

    • Flujos de trabajo administrados de Amazon para Apache Airflow (Amazon MWAA)

    • Amazon Simple Storage Service (Amazon S3)

    • Amazon Timestream

  • Acceso a un entorno del intérprete de comandos que puede ser un terminal en su máquina local o AWS CloudShell.

  • Un entorno de shell con Git instalado y la última versión de AWS Command Line Interface (AWS CLI) instalada y configurada. Para obtener más información, consulta Instalar o actualizar a la última versión de AWS CLI en la AWS CLI documentación.

  • La siguiente versión de Terraform instalada: required_version = ">= 1.6.1, < 2.0.0". Puede usar tfswitch para cambiar entre diferentes versiones de Terraform.

  • La fuente de identidad configurada es AWS IAM Identity Center para su Cuenta de AWS. Para más información, consulte Confirmación de los orígenes de identidad en IAM Identity Center en la documentación de IAM Identity Center. Puede elegir entre el Active Directory predeterminado Directorio de IAM Identity Center o un proveedor de identidad (IdP) externo, como Okta. Para más información, consulte Recursos relacionados.

Limitaciones

  • Algunos Servicios de AWS no están disponibles en todos. Regiones de AWS Para obtener información sobre la disponibilidad en regiones, consulte Servicios de AWS by Region. Para ver los puntos de conexión específicos, consulte Service endpoints and quotas y elija el enlace del servicio.

Versiones de producto

  • Terraform required_version = ">= 1.6.1, < 2.0.0"

  • Amazon Managed Grafana, versión 9.4 o posterior. Este patrón se probó en la versión 9.4.

Arquitectura

El siguiente diagrama de arquitectura destaca lo que se Servicios de AWS utiliza en la solución.

Flujo de trabajo para la automatización de la ingesta de métricas personalizadas de Amazon MWAA

En el anterior diagrama se muestra el flujo de trabajo siguiente:

  1. Las métricas personalizadas de Amazon MWAA se originan en las DAGs que se ejecutan en el entorno. Las métricas se cargan en el bucket de Amazon S3 en un formato de archivo CSV. A continuación, se DAGs utilizan las funciones de consulta de bases de datos de Amazon MWAA:

    • run-example-dag: este DAG contiene un ejemplo de código de Python que define una o más tareas. Se ejecuta cada 7 minutos e imprime la fecha. Tras imprimir la fecha, el DAG incluye una tarea para suspender o pausar la ejecución durante un período específico.

    • other-sample-dag: este DAG se ejecuta cada 10 minutos e imprime la fecha. Tras imprimir la fecha, el DAG incluye una tarea para suspender o pausar la ejecución durante un período específico.

    • data-extract: este DAG se ejecuta cada hora y consulta la base de datos de Amazon MWAA y recopila métricas. Una vez recopiladas las métricas, este DAG las escribe en un bucket de Amazon S3 para poder realizar un procesamiento y análisis posterior.

  2. Para agilizar el procesamiento de datos, las funciones de Lambda se ejecutan cuando las activan eventos de Amazon S3, lo que facilita la carga de métricas en Timestream.

  3. Timestream se integra como origen de datos en Amazon Managed Grafana, donde se almacenan todas las métricas personalizadas de Amazon MWAA.

  4. Los usuarios pueden consultar los datos y crear paneles personalizados para visualizar los indicadores clave de rendimiento y obtener información sobre la orquestación de los flujos de trabajo de Amazon MWAA.

Tools (Herramientas)

Servicios de AWS

  • AWS IAM Identity Centerle ayuda a gestionar de forma centralizada el acceso mediante el inicio de sesión único (SSO) a todas sus aplicaciones y a las de la nube. Cuentas de AWS

  • AWS Lambda es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice. En este patrón, AWS Lambda ejecuta el código de Python en respuesta a los eventos de Amazon S3 y administra los recursos informáticos automáticamente.

  • Amazon Managed Grafana es un servicio de visualización de datos seguro y completamente administrado que puede utilizar para consultar, correlacionar, visualizar y recibir al instante alertas sobre métricas operativas, registros y seguimientos de varios orígenes. Este patrón utiliza Amazon Managed Grafana para crear un panel que le permita ver las métricas y alertas.

  • Amazon Managed Workflows para Apache Airflow (Amazon MWAA) es un servicio de orquestación administrada de Apache Airflow que puede usar para configurar y usar canalizaciones de datos en la nube a escala. Apache Airflow es una herramienta de código abierto que se utiliza para crear, programar y supervisar secuencias de procesos y tareas denominadas flujos de trabajo mediante programación. En este patrón, se implementan una muestra DAGs y un extractor de métricas DAG en Amazon MWAA.

  • 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. En este patrón, Amazon S3 se utiliza para almacenar DAGs scripts y métricas personalizadas en formato CSV.

  • Amazon Timestream LiveAnalytics for is es una base de datos de series temporales rápida, escalable, totalmente administrada y diseñada específicamente que facilita el almacenamiento y el análisis de billones de puntos de datos de series temporales por día. Timestream for LiveAnalytics también se integra con los servicios más utilizados para la recopilación de datos, la visualización y el aprendizaje automático. En este patrón, se utiliza para ingerir las métricas personalizadas de Amazon MWAA que se hayan generado.

Otras herramientas

  • HashiCorp Terraform es una herramienta de infraestructura como código (IaC) que facilita usar el código para aprovisionar y administrar los recursos y la infraestructura en la nube. Este patrón utiliza un módulo de Terraform para automatizar el aprovisionamiento de la infraestructura en AWS.

Repositorio de código

El código de este patrón está disponible GitHub en el repositorio visualize-amazon-mwaa-custom-metrics-grafana. La carpeta stacks/Infra contiene los siguientes elementos:

  • Archivos de configuración de Terraform para todos los recursos AWS

  • Archivo .json del panel de control de Grafana en la carpeta grafana

  • Amazon Managed Workflows para Apache Airflow DAGs en la carpeta mwaa/dags

  • Código de Lambda para analizar el archivo.csv y almacenar las métricas en la base de datos de Timestream de la carpeta src

  • Los archivos .json de la política de IAM están en la carpeta templates

Prácticas recomendadas

Terraform debe almacenar el estado de su infraestructura y configuración administradas para poder asignar recursos del mundo real a su configuración. De forma predeterminada, Terraform almacena el estado de forma local en un archivo denominado terraform.tfstate. Es imprescindible garantizar la seguridad e integridad de su archivo de estado de Terraform, ya que mantiene el estado actual de su infraestructura. Para más información, consulte Estado remoto en la documentación de Terraform.

Epics

TareaDescripciónHabilidades requeridas

Implemente la infraestructura.

Para implementar la infraestructura de la solución, haga lo siguiente:

  1. Abra un terminal o una línea de comandos en su ordenador local o mediante AWS CloudShell.

  2. Desplácese hasta el directorio en el que desee clonar el repositorio.

  3. Para clonar el repositorio, ejecute el siguiente comando:

    git clone https://github.com/aws-samples/visualize-amazon-mwaa-custom-metrics-grafana
  4. Una vez finalizado el proceso de clonación, ejecute el siguiente comando para ir al directorio del repositorio clonado:

    cd visualize-amazon-mwaa-custom-metrics-grafana/stacks/infra
  5. Ejecute el siguiente comando para descargar e inicializar los proveedores necesarios:

    terraform init
  6. Para obtener una visión completa de todos los recursos que Terraform creará, ejecute el siguiente comando:

    terraform plan

    Terraform aprovisiona los siguientes recursos:

    • Amazon Virtual Private Cloud (Amazon VPC) y componentes de red asociados

    • Recursos de Amazon S3

    • AWS Lambda funciones

    • Recursos de Amazon Managed Grafana (espacio de trabajo, paneles, origen de datos)

    • Recursos de IAM de soporte (roles y políticas)

  7. Para crear los AWS recursos a partir del resultado del plan, ejecute el siguiente comando:

    terraform apply -auto-approve

    El aprovisionamiento de la infraestructura debería completarse en 20 minutos, aproximadamente.

  8. Para crear los AWS recursos especificados de acuerdo con la configuración definida en sus archivos de Terraform, ejecute el siguiente comando:

    terraform apply
AWS DevOps
TareaDescripciónHabilidades requeridas

Valide el entorno de Amazon MWAA

Para validar el entorno de Amazon MWAA, haga lo siguiente:

  1. Inicie sesión en Consola de administración de AWS, vaya a la consola del panel de control de Amazon MWAA y seleccione Open Airflow UI.

  2. Deberás ver los tres siguientes DAGs en estado activo:

    • data-extract

    • run-example-dag

    • other-sample-dag

  3. Si un DAG no está activo, puede activarlo mediante el conmutador situado junto al nombre del DAG.

AWS DevOps, ingeniero de datos

Compruebe los programas de DAG.

Para ver cada programa del DAG, vaya a la pestaña Programación de la interfaz de usuario de Airflow.

Cada una de las siguientes DAGs opciones tiene una programación preconfigurada, que se ejecuta en el entorno Amazon MWAA y genera métricas personalizadas:

  • run-example-dag- Se ejecuta cada 7 minutos

  • other-sample-dag- Se ejecuta cada 10 minutos

  • data-extract: se ejecuta cada hora

También puede ver las ejecuciones correctas de cada DAG en la columna Ejecuciones.

Ingeniero de datos, AWS DevOps
TareaDescripciónHabilidades requeridas

Configure el acceso al espacio de trabajo de Amazon Managed Grafana.

Los scripts de Terraform crearon el espacio de trabajo, los paneles y la página de métricas de Amazon Managed Grafana necesarios. Para configurar el acceso de forma que pueda verlos, haga lo siguiente:

  1. Abra la consola de Amazon Managed Grafana.

  2. En Espacios de trabajo, seleccione el espacio de trabajo grafana-ws-dev y vaya a la pestaña Autenticación en el panel inferior.

  3. Seleccione el botón Asignar nuevo usuario o grupo.

  4. Añada su grupo en la pestaña Grupos o un usuario en la pestaña Usuarios y, a continuación, pulse el botón Asignar usuarios y grupos.

  5. Una vez agregado el usuario (o grupo), conviértalo en administrador. Seleccione el usuario en Usuarios o grupos asignados en la pestaña Grupo de usuarios asignados y elija Convertir en administrador en el menú desplegable. Para obtener más información, consulta Uso AWS IAM Identity Center con tu espacio de trabajo de Grafana gestionado por Amazon en la documentación de Amazon Managed Grafana.

  6. Vaya a Espacios de trabajo y, a continuación, elija la URL del espacio de trabajo de Grafana. Para iniciar sesión en Amazon Managed Grafana como administrador, selecciona Iniciar sesión con. AWS IAM Identity Center

AWS DevOps

Instalación del complemento de Amazon Timestream.

Las métricas personalizadas de Amazon MWAA se cargan en la base de datos de Timestream. Use el complemento de Timestream para visualizar las métricas con los paneles de Amazon Managed Grafana.

Para instalar el complemento de Timestream, siga este procedimiento:

  1. En la consola de Amazon Managed Grafana, amplíe el menú del panel de navegación izquierdo y vaya a Administración, Complementos.

  2. Busque e instale la última versión del complemento de Amazon Timestream.

  3. Una vez instalado el complemento, vaya a Administración y Orígenes de datos para ver el origen de datos de Timestream. Si el origen de datos no aparece en la lista, actualice la página.

Para más información, consulte Ampliación del espacio de trabajo con complementos en la documentación de Amazon Managed Grafana.

AWS DevOps, DevOps ingeniero
TareaDescripciónHabilidades requeridas

Consulte el panel de Amazon Managed Grafana.

Para ver las métricas que se incorporaron al espacio de trabajo de Amazon Managed Grafana, haga lo siguiente:

  1. En la consola de Amazon Managed Grafana, seleccione Paneles en el panel de navegación izquierdo.

  2. Para ver las métricas, elija los paneles de eventos de MWAA y, a continuación, seleccione mwaa_metrics.

Las métricas del panel muestran la siguiente información:

  • El total de ejecuciones de DAG en la última hora

  • Número total de ejecuciones de DAG correctas, con errores y en ejecución en la última hora

  • Duración media de todas las ejecuciones de DAG correctas y con errores

AWS DevOps

Personalice el panel de Amazon Managed Grafana.

Para personalizar los paneles para futuras mejoras, siga este procedimiento:

  1. En la página mwaa_metrics del panel de Amazon Managed Grafana, seleccione el icono Configuración del panel.

  2. Para ver la estructura de datos que define el panel, elija el modelo JSON. Puede personalizar el panel mediante modificaciones que podrá hacer en este modelo de JSON directamente en la consola.

Como alternativa, el código fuente de este panel está disponible en el dashboard.json archivo de la stacks/infra/grafana carpeta del GitHub repositorio.

AWS DevOps
TareaDescripciónHabilidades requeridas

Pause las ejecuciones de DAG en Amazon MWAA.

Para pausar las ejecuciones de DAG, siga este procedimiento:

  1. En la consola de Amazon MWAA, vaya a los entornos de Airflow y elija Abrir interfaz de usuario de Airflow.

  2. Para pausar los DAG, utilice el conmutador situado junto a cada DAG.

  3. Actualice la página de la interfaz de usuario de Airflow, que debería incluir tres DAGs en la sección En pausa.

AWS DevOps, ingeniero de datos

Elimine todos los objetos de los buckets de Amazon S3.

Para eliminar los buckets de Amazon S3 mwaa-events-bucket-* y mwaa-metrics-bucket-*, siga las instrucciones de uso de la consola de Amazon S3 que se encuentran en Eliminar un bucket en la documentación de Amazon S3.

AWS DevOps

Elimine los recursos creados por Terraform.

Para eliminar los recursos creados por Terraform y el archivo de estado local de Terraform asociado, haga lo siguiente:

  1. (Opcional) Antes de eliminar los recursos, puede previsualizar los cambios que realizará Terraform. Para generar un plan, ejecute el siguiente comando:

    terraform plan -destroy

    El resultado del comando muestra que el destroy comando eliminará todos los AWS recursos que se crearon anteriormente.

  2. terraform destroy -auto-approve

    Este comando tarda aproximadamente 20 minutos en eliminar la infraestructura.

    nota

    Use el siguiente comando para eliminar todos los recursos administrados por Terraform. : la etiqueta -auto-approve no espera la confirmación del usuario para empezar a eliminar los recursos.

  3. Use los siguientes comandos para eliminar el archivo de estado de Terraform local:

    rm .terraform.lock.hcl rm -rf .terraform rm terraform.tfstate*
AWS DevOps

Resolución de problemas

ProblemaSolución

null_resource.plugin_mgmt (local-exec): aws: error: argument operation: Invalid choice, valid choices are:

Actualice la AWS CLI suya a la versión más reciente.

Error al cargar los orígenes de datos -

Fetch error: 404 Not Found Instantiating…

El error es intermitente. Espere unos minutos y, a continuación, actualice los orígenes de datos para ver el origen de datos de Timestream de la lista.

Recursos relacionados

AWS documentación

AWS vídeos

  • Configure el Centro de identidades de IAM con Amazon Managed Grafana para realizar la autenticación, tal como se muestra en el siguiente video.

https://www.youtube-nocookie.com/embed/XX2¿Xcz-Ps9U? controles = 0

https://www.youtube-nocookie.com/embed/A4 Og? JHxl2xp controles = 0

Información adicional

Puede crear una solución integral de supervisión y alertas para su entorno de Amazon MWAA, que permita realizar una administración proactiva y obtener una respuesta rápida a posibles problemas o anomalías. Amazon Managed Grafana incluye las siguientes funciones:

Alertas: puede configurar alertas en Amazon Managed Grafana en función de los umbrales o condiciones predefinidos. Configure notificaciones por correo electrónico para alertar a las partes interesadas pertinentes cuando determinadas métricas superen o estén por debajo de los umbrales especificados. Para más información, consulte Alertas de Grafana en la documentación de Amazon Managed Grafana.

Integración: puedes integrar Grafana gestionada por Amazon con varias herramientas de terceros OpsGenie, como o Slack PagerDuty, para mejorar las capacidades de notificación. Por ejemplo, puedes configurar webhooks o integrarlos APIs para activar incidentes y notificaciones en estas plataformas en función de las alertas generadas en Grafana gestionado por Amazon. Además, este patrón proporciona un GitHub repositorio para crear AWS recursos. Puede integrar aún más este código con los flujos de trabajo de implementación de su infraestructura.