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
Tabby Ward, Guy Bachar y David Kilzer, Amazon Web Services
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 OpenSearch
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 que pueda obtener información más detallada sobre las funciones de 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úrese de que cumple los requisitos previos que se indican a continuación:
Cuenta de AWS: Un activo Cuenta de AWS con los permisos adecuados para crear y administrar los siguientes recursos: AWS
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
Roles 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
AWSLambdaBasicExecutionRolepolítica y cualquier permiso adicional necesario para interactuar con él. OpenSearchCompruebe 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 Definición de 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 de Lambda y la extensión de Lambda.
Entorno de desarrollo:
Configure un entorno de desarrollo local con las herramientas y dependencias necesarias para crear e implementar funciones y extensiones de Lambda.
AWS CLI o: Consola de administración de AWS
Instale y configure el AWS Command Line Interface (AWS CLI) o utilícelo Consola de administración de AWS con las credenciales adecuadas para interactuar con lo requerido Servicios de AWS.
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 de Lambda.
Arquitectura
Este patrón utiliza 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.
notaEl código de extensión de Lambda puede enviar la telemetría al OpenSearch Servicio, ya sea directamente mediante la OpenSearch API o mediante una biblioteca cliente. OpenSearch |
|---|
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.

La arquitectura incluye los siguientes componentes:
Función de Lambda: función sin servidor que genera registros y datos de telemetría durante la puesta en marcha.
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 Las extensiones se ponen en marcha en el mismo entorno de ejecución que la función de Lambda.
API de telemetría de Lambda: la API que permite a las extensiones de Lambda enviar datos de telemetría, como registros, métricas y trazas, directamente a herramientas de supervisión 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 de Lambda a través de la extensión de Lambda.
El flujo de trabajo consta de los pasos siguientes:
Se llama a la función de Lambda y genera registros y datos de telemetría durante su puesta en marcha.
La extensión de Lambda se pone en marcha junto con la función para capturar los registros y los datos de telemetría mediante la API de telemetría de Lambda.
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.
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 CloudWatch a los registros.
Flexibilidad para personalizar la extensión de 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 del OpenSearch Servicio para el análisis y la supervisión de los 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 ver las consideraciones de seguridad, las estrategias de optimización de costos y los consejos para supervisar y solucionar problemas de la solución, consulte la sección Prácticas recomendadas.
Tools (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 de Lambda amplían la funcionalidad de las funciones de Lambda al poner en marcha código personalizado junto con ellas. Puede utilizar extensiones de Lambda para integrar Lambda con varias herramientas de supervisión, observabilidad, seguridad y gobernanza.
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.
CloudFormation
le 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
AWS Lambda Extensions
incluye demostraciones y proyectos de AWS muestra de AWS socios que le ayudarán a empezar a crear sus propias extensiones. Ejemplo de integraciones de telemetría Lambda para proporciona OpenSearch
un ejemplo de extensión de Lambda que muestra cómo enviar registros desde una función de Lambda a un clúster. OpenSearch
Otras herramientas
OpenSearch
es 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 Tenga en cuenta que la implementación de la visualización y el análisis están fuera del alcance de este patrón. Para obtener más información, consulte 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 SSL/TLS ajustes necesarios en la extensión y OpenSearch configuración de Lambda.
Permisos de IAM:
Las extensiones se ponen en marcha en el mismo entorno de ejecución que la función de 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 Aplique el principio de 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 fiables: instale siempre las extensiones que provengan únicamente de una fuente fiable. Utilice herramientas de infraestructura como código (IaC) 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.
Gestión de información confidencial: al crear extensiones, evite registrar información confidencial. Limpie 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 permitirá identificar y abordar cualquier posible sobrecosto.
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 periodos de retención más prolongados pueden aumentar los costos de almacenamiento, así que equilibre 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 fiabilidad
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 de Lambda y mejora la fiabilidad 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 administració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 la IDs solicitud o la IDs 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
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Descargue el código fuente. | Descargue las extensiones de ejemplo del repositorio AWS Lambda Extensions | Desarrollador de aplicaciones, arquitecto de la nube |
Vaya a la carpeta | El repositorio AWS Lambda Extensions | Desarrollador de aplicaciones, arquitecto de la nube |
Agregue permisos para poner en marcha el punto de conexión de la extensión. | Use el siguiente comando para poner en marcha el punto de conexión de la extensión.
| Desarrollador de aplicaciones, arquitecto de la nube |
Instale las dependencias de la extensión de forma local. | Use el siguiente comando para instalar manualmente las dependencias para el código en Python:
Estas dependencias se montarán junto con el código de la extensión. | Desarrollador de aplicaciones, arquitecto de la nube |
Cree un paquete .zip para que la extensión se implemente como una capa. | El archivo .zip de la extensión debe contener un directorio raíz denominado Cree el paquete .zip para la extensión:
| Desarrollador de aplicaciones, arquitecto de la nube |
Implemente la extensión como una capa de Lambda. | Publique la capa mediante el archivo .zip de su extensión y el siguiente comando:
| Desarrollador de aplicaciones, arquitecto de la nube |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Agregue la capa a la función. |
Para obtener más información sobre la adición de una capa a su función de Lambda, consulte la documentación de Lambda. | Desarrollador de aplicaciones, arquitecto de la nube |
Configure las variables de entorno para la función. | En la página de funciones, seleccione la pestaña Configuración y agregue las siguientes variables de entorno a la función:
| Desarrollador de aplicaciones, arquitecto de la nube |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Agregue declaraciones de registro a la función. | Agregue declaraciones de registro a su función mediante uno de los mecanismos de registro integrados o el módulo de registro que prefiera. A continuación, se muestran ejemplos de registro de mensajes en Python:
| Desarrollador de aplicaciones, arquitecto de la nube |
Comprobación de la función de . |
Debería ver Ejecutando la función: listo si todo funciona correctamente. | Desarrollador de aplicaciones, arquitecto de la nube |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Consulte sus índices. | En OpenSearch, ejecuta el siguiente comando para consultar tus índices:
Sus registros deberían mostrarse en los resultados de la consulta. | Arquitecto de la nube |
Resolución de problemas
| Problema | Solución |
|---|---|
Problemas de conectividad |
|
Errores de ingesta de datos |
|
Recursos relacionados
Ejemplo de integraciones de telemetría Lambda
para (repositorio) OpenSearch GitHub Aumente las funciones de Lambda utilizando extensiones de Lambda (documentación de Lambda)
API de telemetría de Lambda (documentación de Lambda)
Presentamos la API de AWS Lambda telemetría
(entrada de blog)AWS Integración de la API de AWS Lambda telemetría con Prometheus
y (entrada del blog) OpenSearch AWS
Información adicional
Alteración de la estructura de los registros
De forma predeterminada, la extensión envía los registros como un documento anidado. OpenSearch Esto le permite realizar consultas anidadas para recuperar valores de columnas individuales.
Si la salida de registro predeterminada no satisface 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, busque la función dispatch_to_opensearch en el archivo telemetry_dispatcher.py dentro del código fuente de la extensión y realice las modificaciones necesarias.