Envíe datos de telemetría desde y AWS Lambda OpenSearch para análisis y visualización en tiempo real - 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.

Envíe datos de telemetría desde y AWS Lambda OpenSearch para análisis y visualización en tiempo real

Creada por Tabby Ward (AWS), Guy Bachar (AWS) y David Kilzer (AWS)

Entorno: PoC o piloto

Tecnologías: sin servidor; modernización CloudNative

Servicios de AWS: AWS Lambda; Amazon Service OpenSearch

Resumen

Las aplicaciones modernas están cada vez más distribuidas y se basan cada vez más en eventos, lo que refuerza la necesidad de monitoreo y observabilidad en tiempo real. AWS Lambda es un servicio de computación sin servidor que desempeña un papel crucial en la creación de arquitecturas escalables y basadas en eventos. Sin embargo, la supervisión y la solución de problemas de las funciones de Lambda pueden resultar complicadas si se confía únicamente en Amazon CloudWatch Logs, que puede introducir latencia y períodos de retención limitados.

Para abordar este desafío, AWS presentó la API de telemetría Lambda, que permite a las funciones de Lambda enviar datos de telemetría directamente a herramientas de monitoreo y observabilidad de terceros. Esta API admite la transmisión en tiempo real de registros, métricas y seguimientos, y proporciona una visión completa y puntual del rendimiento y el estado de las funciones de Lambda.

Este patrón explica cómo integrar la API de telemetría Lambda con OpenSearchun motor de búsqueda y análisis distribuido de código abierto. OpenSearch ofrece una plataforma potente y escalable para la ingesta, el almacenamiento y el análisis de grandes volúmenes de datos, lo que la convierte en la opción ideal para los datos de telemetría Lambda. En concreto, este patrón muestra cómo enviar registros desde una función de Lambda escrita en Python directamente a un OpenSearch clúster mediante una extensión de Lambda proporcionada por. AWS Esta solución es flexible y personalizable, por lo que puede crear su propia extensión Lambda o modificar el código fuente del ejemplo para cambiar el formato de salida según lo desee.

El patrón explica cómo configurar y configurar la integración de la API de telemetría Lambda con OpenSearch la API de telemetría de Lambda e incluye las prácticas recomendadas en materia de seguridad, optimización de costes y escalabilidad. El objetivo es ayudarlo a obtener información más profunda sobre sus funciones Lambda y mejorar la observabilidad general de sus aplicaciones sin servidor.

Nota: Este patrón se centra en la integración de la API de telemetría Lambda con la gestionada. OpenSearch Sin embargo, los principios y las técnicas analizados también son aplicables a la búsqueda automática y a la búsqueda automática OpenSearch .

Requisitos previos y limitaciones

Antes de comenzar el proceso de integración, asegúrate de cumplir los siguientes requisitos previos:

Cuenta de AWS: Un activo Cuenta de AWS con los permisos adecuados para crear y administrar los siguientes AWS recursos:

  • AWS Lambda

  • AWS Identity and Access Management (IAM)

  • Amazon OpenSearch Service (si utilizas un OpenSearch clúster gestionado)

OpenSearch clúster:

  • Puede utilizar un OpenSearch clúster autogestionado existente o un servicio gestionado como OpenSearch Service.

  • Si utilizas el OpenSearch Servicio, configura el OpenSearch clúster siguiendo las instrucciones de Introducción a Amazon OpenSearch Service en la documentación del OpenSearch Servicio.

  • Asegúrese de que se pueda acceder al OpenSearch clúster desde la función Lambda y de que esté configurado con los ajustes de seguridad necesarios, como las políticas de acceso, el cifrado y la autenticación.

  • Configure el OpenSearch clúster con las asignaciones de índices y los ajustes necesarios para ingerir los datos de telemetría de Lambda. Para obtener más información, consulta Cómo cargar datos de streaming en Amazon OpenSearch Service en la documentación del OpenSearch servicio.

Conectividad de red:

  • Asegúrese de que la función Lambda tenga la conectividad de red necesaria para acceder al OpenSearch clúster. Para obtener orientación sobre cómo configurar los ajustes de la nube privada virtual (VPC), consulte Lanzar sus dominios de Amazon OpenSearch Service dentro de una VPC en la documentación del servicio. OpenSearch

Funciones y políticas de IAM:

  • Cree un rol de IAM con los permisos necesarios para que su función Lambda pueda acceder al clúster y acceder a OpenSearch las credenciales almacenadas en él. AWS Secrets Manager

  • Adjunte las políticas de IAM adecuadas al rol, como la AWSLambdaBasicExecutionRole política y cualquier permiso adicional necesario para interactuar con él. OpenSearch

  • Compruebe que los permisos de IAM concedidos a la función Lambda le permiten escribir datos en el clúster. OpenSearch Para obtener información sobre la administración de los permisos de IAM, consulte Definir los permisos de funciones de Lambda con un rol de ejecución en la documentación de Lambda.

Conocimientos del lenguaje de programación:

  • Necesitará conocimientos básicos de Python (o del lenguaje de programación que prefiera) para comprender y modificar el código de ejemplo de la función Lambda y la extensión Lambda.

Entorno de desarrollo:

AWS CLI o AWS Management Console:

Supervisión y registro:

  • Familiarícese con las mejores prácticas de monitoreo y registro AWS, incluidos servicios como Amazon, CloudWatch y AWS CloudTrail con fines de monitoreo y auditoría.

  • Compruebe CloudWatch los registros de su función de Lambda para identificar cualquier error o excepción relacionados con la integración de la API de telemetría de Lambda. Para obtener orientación sobre la solución de problemas, consulte la documentación de la API de telemetría Lambda.

Arquitectura

Este patrón usa OpenSearch Service para almacenar registros y datos de telemetría generados por las funciones de Lambda. Este enfoque le permite transmitir rápidamente los registros directamente a su OpenSearch clúster, lo que reduce la latencia y los costes asociados al uso de CloudWatch Logs como intermediario.

Nota: El código de extensión de Lambda puede enviar telemetría a OpenSearch Service, ya sea directamente mediante la OpenSearch API o mediante una biblioteca cliente. OpenSearch La extensión Lambda puede usar las operaciones masivas compatibles con la OpenSearch API para agrupar eventos de telemetría y enviarlos a OpenSearch Service en una sola solicitud.

El siguiente diagrama de flujo de trabajo ilustra el flujo de trabajo de registro para las funciones de Lambda cuando se utiliza un OpenSearch clúster como punto final.

Flujo de trabajo para enviar datos de telemetría a un clúster. OpenSearch

La arquitectura incluye los siguientes componentes:

  • Función Lambda: función sin servidor que genera registros y datos de telemetría durante la ejecución.

  • Extensión Lambda: extensión basada en Python que usa la API de telemetría de Lambda para integrarse directamente con el clúster. OpenSearch Esta extensión se ejecuta junto con la función Lambda en el mismo entorno de ejecución.

  • API de telemetría Lambda: la API que permite a las extensiones de Lambda enviar datos de telemetría, incluidos registros, métricas y trazas, directamente a herramientas de monitoreo y observabilidad de terceros.

  • Clúster de Amazon OpenSearch Service: OpenSearch clúster gestionado que se aloja en AWS. Este clúster es responsable de ingerir, almacenar e indexar los datos de registro transmitidos desde la función Lambda a través de la extensión Lambda.

El flujo de trabajo consta de los siguientes pasos:

  1. Se llama a la función Lambda y genera registros y datos de telemetría durante su ejecución.

  2. La extensión Lambda se ejecuta junto con la función para capturar los registros y los datos de telemetría mediante la API de telemetría de Lambda.

  3. La extensión Lambda establece una conexión segura con el clúster de OpenSearch servicios y transmite los datos de registro en tiempo real.

  4. El clúster de OpenSearch servicios ingiere, indexa y almacena los datos de registro para que estén disponibles para su búsqueda, análisis y visualización mediante el uso de herramientas como Kibana u otras aplicaciones compatibles.

Al evitar los CloudWatch registros y enviar los datos de registro directamente al OpenSearch clúster, esta solución ofrece varias ventajas:

  • Transmisión y análisis de registros en tiempo real, lo que permite una resolución de problemas más rápida y una mejor observabilidad.

  • Reducción de la latencia y posibles limitaciones de retención asociadas a CloudWatch los registros.

  • Flexibilidad para personalizar la extensión Lambda o crear su propia extensión para formatos de salida específicos o procesamiento adicional.

  • Integración con las capacidades de búsqueda, análisis y visualización de OpenSearch Service para el análisis y la supervisión de registros.

La sección Epics proporciona step-by-step instrucciones para configurar la extensión Lambda, configurar la función Lambda e integrarla con el clúster de servicios. OpenSearch Para conocer las consideraciones de seguridad, las estrategias de optimización de costes y los consejos para supervisar y solucionar problemas de la solución, consulte la sección de prácticas recomendadas.

Herramientas

Servicios de AWS

  • AWS Lambda es un servicio automático que permite ejecutar código sin aprovisionar ni administrar servidores. Lambda ejecuta su código solo cuando es necesario y escala de manera automática, desde unas pocas solicitudes por día hasta miles por segundo.

  • Amazon OpenSearch Service es un servicio totalmente gestionado que proporciona y AWS que facilita la implementación, el funcionamiento y el escalado de OpenSearch clústeres en la nube.

  • Las extensiones Lambda amplían la funcionalidad de las funciones de Lambda al ejecutar código personalizado junto con ellas. Puede utilizar las extensiones de Lambda para integrar Lambda con diversas herramientas de supervisión, observabilidad, seguridad y gobierno.

  • AWS Lambda La API de telemetría le permite usar extensiones para capturar datos mejorados de monitoreo y observabilidad directamente desde Lambda y enviarlos al destino que elija.

  • AWS CloudFormationle ayuda a modelar y configurar sus AWS recursos para que pueda dedicar menos tiempo a gestionarlos y más tiempo a centrarse en sus aplicaciones.

Repositorios de código

Otras herramientas

  • OpenSearches un motor de búsqueda y análisis distribuido de código abierto que proporciona una plataforma potente para la ingesta, el almacenamiento y el análisis de grandes volúmenes de datos.

  • Kibana es una herramienta de exploración y visualización de datos de código abierto con la que puedes usarla. OpenSearch Ten en cuenta que la implementación de la visualización y el análisis va más allá del alcance de este patrón. Para obtener más información, consulta la documentación de Kibana y otros recursos.

Prácticas recomendadas

Al integrar la API de telemetría Lambda con OpenSearch, tenga en cuenta las siguientes prácticas recomendadas.

Seguridad y control de acceso

  • Comunicación segura: cifre todas las comunicaciones entre las funciones de Lambda y OpenSearch el clúster mediante HTTPS. Configure los ajustes de SSL/TLS necesarios en la extensión y configuración de Lambda. OpenSearch

  • Permisos de IAM:

    • Las extensiones se ejecutan en el mismo entorno de ejecución que la función Lambda, por lo que heredan el mismo nivel de acceso a los recursos, como el sistema de archivos, las redes y las variables de entorno.

    • Otorgue los permisos de IAM mínimos necesarios a sus funciones de Lambda para acceder a la API de telemetría de Lambda y escribir datos en el clúster. OpenSearch Utilice el principio del privilegio mínimo para limitar el alcance de los permisos.

  • OpenSearch control de acceso: implemente un control de acceso detallado en su OpenSearch clúster para restringir el acceso a los datos confidenciales. Utilice las funciones de seguridad integradas, como la autenticación de usuarios, el control de acceso basado en roles y los permisos a nivel de índice, en. OpenSearch

  • Extensiones de confianza: instale siempre las extensiones únicamente de una fuente de confianza. Utilice herramientas de infraestructura como código (IaC) AWS CloudFormation para simplificar el proceso de adjuntar la misma configuración de extensión, incluidos los permisos de IAM, a varias funciones de Lambda. Las herramientas de IaC también proporcionan un registro de auditoría de las extensiones y versiones utilizadas anteriormente.

  • Manejo de datos confidenciales: al crear extensiones, evite registrar datos confidenciales. Desinfecte las cargas útiles y los metadatos antes de registrarlos o conservarlos con fines de auditoría.

Optimización de costos

  • Supervisión y alertas: configure mecanismos de supervisión y alerta para realizar un seguimiento del volumen de datos que se envían OpenSearch desde las funciones de Lambda. Esto le ayudará a identificar y abordar cualquier posible sobrecoste.

  • Retención de datos: considere detenidamente el período de retención de datos adecuado para sus datos de telemetría Lambda en. OpenSearch Los períodos de retención más prolongados pueden aumentar los costos de almacenamiento, por lo que debe equilibrar sus necesidades de observabilidad con la optimización de costos.

  • Compresión e indexación: habilite la compresión de datos y optimice su estrategia de OpenSearch indexación para reducir el espacio de almacenamiento de sus datos de telemetría Lambda.

  • Menor dependencia de CloudWatch: al integrar directamente la API de telemetría Lambda con ella OpenSearch, puede reducir potencialmente su dependencia de los CloudWatch registros, lo que puede suponer un ahorro de costes. Esto se debe a que la API de telemetría Lambda le permite enviar registros directamente a OpenSearch, lo que evita la necesidad de almacenar y procesar los datos en ella. CloudWatch

Escalabilidad y confiabilidad

  • Procesamiento asíncrono: utilice patrones de procesamiento asíncrono, como Amazon Simple Queue Service (Amazon SQS) o Amazon Kinesis, para desacoplar la ejecución de la función Lambda de la ingesta de datos. OpenSearch Esto ayuda a mantener la capacidad de respuesta de las funciones Lambda y mejora la confiabilidad general del sistema.

  • OpenSearch escalado de clústeres: supervise el rendimiento y la utilización de los recursos de su OpenSearch clúster y amplíelo o reduzca según sea necesario para gestionar el creciente volumen de datos de telemetría de Lambda.

  • Conmutación por error y recuperación ante desastres: implemente una estrategia sólida de recuperación ante desastres para su OpenSearch clúster, que incluya copias de seguridad periódicas y la capacidad de restaurar los datos rápidamente en caso de que se produzca un error.

Observabilidad y supervisión

  • Paneles y visualizaciones: utilice Kibana u otras herramientas de paneles para crear paneles y visualizaciones personalizados que proporcionen información sobre el rendimiento y el estado de sus funciones de Lambda en función de los datos de telemetría incluidos. OpenSearch

  • Alertas y notificaciones: configure alertas y notificaciones para supervisar de forma proactiva cualquier anomalía, error o problema de rendimiento en las funciones de Lambda. Integre estas alertas y notificaciones con sus procesos de gestión de incidentes existentes.

  • Rastreo y correlación: asegúrese de que sus datos de telemetría Lambda incluyan información de seguimiento relevante, como los identificadores de solicitud o los identificadores de correlación, para end-to-end permitir la observabilidad y la solución de problemas en sus aplicaciones distribuidas sin servidor.

Si sigue estas prácticas recomendadas, puede asegurarse de que la integración de la API de telemetría Lambda con OpenSearch es segura, rentable y escalable, y proporciona una capacidad de observación completa para sus aplicaciones sin servidor.

Epics

TareaDescripciónHabilidades requeridas

Descargue el código fuente.

Descarga las extensiones de muestra del repositorio AWS Lambda de extensiones.

Desarrollador de aplicaciones, arquitecto de la nube

Vaya a la carpeta python-example-telemetry-opensearch-extension.

El repositorio AWS Lambda de extensiones que descargó contiene numerosos ejemplos de varios casos de uso y tiempos de ejecución de varios idiomas. Navegue hasta la carpeta python-example-telemetry-opensearch-extension para usar la OpenSearch extensión Python, que envía los registros a OpenSearch.

Desarrollador de aplicaciones, arquitecto de la nube

Añada permisos para ejecutar el punto final de la extensión.

Ejecute el siguiente comando para hacer que el punto final de la extensión sea ejecutable:

chmod +x python-example-telemetry-opensearch-extension/extension.py
Desarrollador de aplicaciones, arquitecto de la nube

Instale las dependencias de la extensión de forma local.

Ejecute el siguiente comando para instalar las dependencias locales para el código de Python:

pip3 install -r python-example-telemetry-opensearch-extension/requirements.txt -t ./python-example-telemetry-opensearch-extension/

Estas dependencias se montarán junto con el código de extensión.

Desarrollador de aplicaciones, arquitecto de la nube

Cree un paquete.zip para que la extensión se despliegue como una capa.

El archivo .zip de la extensión debe contener un directorio raíz denominadoextensions/, donde se encuentra el ejecutable de la extensión, y otro directorio raíz denominadopython-example-telemetry-opensearch-extension/, donde se encuentran la lógica central de la extensión y sus dependencias.

Cree el paquete .zip para la extensión:

chmod +x extensions/python-example-telemetry-opensearch-extension zip -r extension.zip extensions python-example-telemetry-opensearch-extension
Desarrollador de aplicaciones, arquitecto de la nube

Implemente la extensión como una capa Lambda.

Publique la capa mediante el archivo.zip de su extensión y el siguiente comando:

aws lambda publish-layer-version \ --layer-name "python-example-telemetry-opensearch-extension" \ --zip-file "fileb://extension.zip"
Desarrollador de aplicaciones, arquitecto de la nube
TareaDescripciónHabilidades requeridas

Agregue la capa a la función.

  1. Inicie sesión en la página de funciones de la AWS Lambda consola AWS Management Console y ábrala.

  2. Selecciona tu función.

  3. En Layers (Capas), elija Add a layer (Añadir una capa).

  4. En Elegir una capa, selecciona Capas personalizadas como fuente de capa y añade tu capa.

Para obtener más información sobre cómo añadir una capa a la función Lambda, consulte la documentación de Lambda.

Desarrollador de aplicaciones, arquitecto de la nube

Defina las variables de entorno de la función.

En la página de la función, seleccione la pestaña Configuración y añada las siguientes variables de entorno a la función:

  • URL— El URI del OpenSearch punto final al que se enviarán los registros.

  • AUTH_SECRET— El ARN de sus OpenSearch credenciales almacenadas en. AWS Secrets Manager Debe almacenarse como un par clave-valor y tener dos claves: y. username password

  • PLATFORM_INDEXFUNCTION_INDEX, y EXTENSION_INDEX — Los nombres de los índices que almacenarán los datos de telemetría, los registros de funciones y los registros de extensiones. Asegúrese de que cumplen con los criterios de nomenclatura adecuados. De lo contrario, no se crearán los índices.

  • DISPATCH_MIN_BATCH_SIZE— El número de eventos de registro que desea agrupar. Sin embargo, cuando la función se cierre, sus registros se enviarán independientemente de esta configuración.

Desarrollador de aplicaciones, arquitecto de la nube
TareaDescripciónHabilidades requeridas

Añada declaraciones de registro a su función.

Añada instrucciones de registro a su función mediante uno de los mecanismos de registro integrados o el módulo de registro que prefiera.

Estos son algunos ejemplos de mensajes de registro en Python:

print("Your Log Message Here") logger = logging.getLogger(__name__) logger.info("Test Info Log.") logger.error("Test Error Log.")
Desarrollador de aplicaciones, arquitecto de la nube

Comprobación de la función de .

  1. En la página de la función, seleccione la pestaña Prueba.

  2. Cree un evento de prueba para su función y ejecute la prueba. Para obtener más información, consulte Probar las funciones de Lambda en la consola en la documentación de Lambda.

Debería ver Ejecutar la función: se realizó correctamente si todo funciona correctamente.

Desarrollador de aplicaciones, arquitecto de la nube
TareaDescripciónHabilidades requeridas

Consulta tus índices.

En OpenSearch, ejecute el siguiente comando para consultar los índices:

SELECT * FROM index-name

Sus registros deberían mostrarse en los resultados de la consulta.

Arquitecto de la nube

Resolución de problemas

ProblemaSolución

Problemas de conectividad

  • Confirme que la función Lambda tenga la conectividad de red necesaria para acceder al OpenSearch clúster. Consulte la documentación del OpenSearch servicio para obtener instrucciones sobre cómo configurar los ajustes de la VPC.

  • Compruebe que los permisos de IAM concedidos a la función Lambda le permiten escribir datos en el clúster. OpenSearch Consulte la documentación de Lambda para obtener información sobre la administración de los permisos de IAM.

Errores en la ingesta de datos

Recursos relacionados

Información adicional

Alterar la estructura del registro

La extensión envía los registros como un documento anidado de forma OpenSearch predeterminada. Esto le permite realizar consultas anidadas para recuperar valores de columnas individuales.

Si la salida de registro predeterminada no se ajusta a sus necesidades específicas, puede personalizarla modificando el código fuente de la extensión Lambda proporcionada por. AWS AWS anima a los clientes a adaptar la producción a los requisitos de su empresa. Para cambiar la salida del registro, localice la dispatch_to_opensearch función en el telemetry_dispatcher.py archivo dentro del código fuente de la extensión y realice las modificaciones necesarias.