Eventos

Maximización de la capacidad de observación de eventos de Couchbase Capella

En esta entrada de blog, mostraremos cómo utilizar Couchbase Capella junto con ElasticSearch y los servicios de AWS para el envío y análisis eficientes de registros de aplicaciones de Eventing.

Couchbase Capella es una plataforma de datos en la nube NoSQL multimodelo. Ofrece una respuesta de datos en milisegundos a escala, con la mejor relación calidad-precio de cualquier base de datos documental como servicio. Capella Servicio de concursospermite activar en tiempo real la lógica empresarial definida por el usuario cuando se producen cambios en los datos de Capella. Los casos de uso típicos incluyen el enriquecimiento de documentos, las eliminaciones en cascada, la propagación de cambios de datos dentro de una base de datos, etc. 

Elastic Stack (también conocido como ELK Stack) ofrece una potente solución de registro centralizado para crear perspectivas, establecer alertas basadas en KPI y realizar un seguimiento del comportamiento de las aplicaciones.

Las funciones de Eventing de Capella son fáciles de crear utilizando el editor de Eventing de Data Tools en la interfaz de usuario. Los registros de aplicaciones de Eventing permiten a los usuarios identificar y capturar diversas actividades y errores relacionados con la lógica empresarial a través de mensajes definidos por el usuario específicos para cada función de Eventing. Aunque los registros de la aplicación pueden visualizarse en la interfaz de usuario de Capella, la gestión y el análisis centralizados de los registros mediante soluciones de registro especializadas pueden resultar útiles en muchos casos. Este blog muestra instrucciones paso a paso sobre cómo llevar los registros de aplicaciones de Eventing a Elastic y ayudar con el almacenamiento centralizado de registros y análisis.

Requisito previo

Resumen de los pasos necesarios

Configuración del clúster Capella: Comience por crear un clúster Capella con servicios de datos y eventos. Encontrará una guía rápida en Documentación de Couchbase Capella.

Creación de cubos/ámbitos/colecciones: Crea los buckets, ámbitos y colecciones necesarios en Couchbase. Esto incluye 'data', 'eventing-logs', y sus respectivos ámbitos y colecciones.

Preparación de las funciones: Preparar las funciones de eventing para la población y transformación de datos. Esto implica crear conjuntos de datos sintéticos y modificarlos para crear registros.

Creación de clústeres e índices de ElasticSearch: Configure su clúster ElasticSearch y cree un índice para un manejo eficiente de los datos.

Configuración de VPC y enlaces privados: Crea una nueva VPC para el Elastic Connector y establece un enlace privado desde Couchbase Capella a la VPC.

Filtro de tráfico de ElasticSearch: Implemente el filtrado de tráfico para una transferencia de datos segura.

Instalar y ejecutar el conector Couchbase ElasticSearch: Instala el conector Couchbase ElasticSearch en una máquina EC2 y configúralo para el envío de logs.

Visualización y análisis de datos: Utiliza la fuente de datos recopilados para visualizar y analizar los registros, explorando la información que proporcionan.

Configuración detallada

Entorno Couchbase

Necesitamos crear dos buckets y sus scopes y collection. En uno crearemos todo lo necesario para gestionar los datos y las funciones de eventing. En el otro crearemos un segundo dedicado a los logs generados por las funciones de eventing.

Los fundamentos de esta sencilla actividad se encuentran en el Documentación de Couchbase Capella que ilustra los principios y las acciones implicadas. Tenga en cuenta que la creación de cubos implica la configuración de varios parámetros, de los cuales el más destacado es la Cuota de memoria. A efectos de prueba, puede elegir 100 MB; de lo contrario, se creará una evaluación precisa será necesario.

Cree dos cubos con la siguiente estructura:

    • Nombre: "datos"
      • Nombre del Ámbito: "concurso"
        • Nombre de la colección: "meta"
          Almacenamiento de los puntos de control de las funciones de eventos
      • Nombre del Ámbito: "inventario"
        • Nombre de la colección: "datos"
          Almacenamiento de datos reales
    • Nombre: "eventing-logs"
      • Nombre del Ámbito: "concurso"
        • Nombre de la colección: "Registros"
          Almacenamiento para logs. Opcionalmente podemos establecer un TTL para reducir la cantidad de almacenamiento.
      • Nombre del Ámbito: "elastic-checkpoints"
        • Nombre de la colección: "conector"
          Almacenamiento de los puntos de control del conector Couchbase-Elasticsearch

Población de datos

A continuación crearemos dos funciones eventing. Si es la primera vez que crea una función eventing, puede familiarizarse con el entorno siguiendo esta guía

El objetivo de estas funciones es:

    • Primera función: crear datos sobre los que podamos trabajar. Un conjunto de datos que representa un catálogo de productos.

      Esta función crea documentos json simples, introduciendo cierta variabilidad a lo largo de 100000 iteraciones. Si bien esto no es un catálogo de productos realista, establece un buen terreno para experimentar funciones de eventos que necesitan registrar la forma en que se está realizando. Tenga en cuenta que la función se activa la primera vez mediante la creación de un documento vacío.
    • Segunda funciónla función de eventos real con alguna lógica de negocio que nos gustaría observar a través de la pila ELK.

Mientras la función eventing se ejecuta sin límites en todo el nuevo conjunto de datos, sustituye la propiedad categoría siempre que coincida con el valor "Categoría 3" y cambia este valor a "vaqueros". En varias partes de la función podemos observar que se llama convenientemente una función llamada logStuff: Su propósito es guardar una línea de registro en una colección dedicada que posteriormente será replicada a ElasticSearch e indexada.

Función de población de datos

Cree una función de eventos con las siguientes configuraciones:

Y el siguiente cubo vinculante:

Esta es la función:

En el momento en que la función obtiene un documento en datos.inventario.datos con el ID iniciargenerará 100000 documentos aleatorios.

Nota: para generar este documento basta con ir a la página Herramientas de datos seleccione Documentos y, a continuación, haga clic en el botón Crear nuevo documento (¡recuerde seleccionar la colección correcta! Datos -> Inventario -> Datos). 

Función de transformación de datos

Esta segunda función demostrará cómo persistir los registros en el almacenamiento temporal para ser utilizado más tarde en la pila ELK. Mientras realiza su lógica de negocio en el datos.inventario.datos guardará algunos registros de la aplicación en el archivo eventing-logs.eventing.logs para poder exportarlos posteriormente a ElasticSearch. 

La configuración:

Las ataduras:

La función:

La función se encarga de modificar una determinada categoría de datos y transformar su etiqueta. Para ello, necesitamos hacer un seguimiento de cómo se está comportando la función a través de registros que posteriormente serán analizados con la pila ELK.

En logStuff crea un documento JSON con un formato compatible con ECS y lo persiste en un bucket separado. 

Una vez creada la función eventing, recuerde despliegue eso. 

Una vez creado el conjunto de datos y ejecutada la función de transformación, deberíamos tener un cubo lleno de registros listo para ser enviado a ElasticSearch.

Nota: Para evitar colisiones, las líneas de registro se crean con marcas de tiempo y números aleatorios a los que posteriormente se les aplica un hash para ahorrar espacio.

Configuración de Elastic Cloud

Antes de empezar a sincronizar los datos necesitamos crear un índice en ElasticSearch. Asegúrate de modificar la directiva Elasticsearch URL del punto final y crear un Clave API con derechos administrativos.

He aquí un ejemplo de CURL:

El índice asigna el tipo de datos del registrador para que pueda buscarse de forma eficiente.

Conector ElasticSearch

Configuración de la red

Necesitamos crear una VPC con una máquina EC2 con una dirección IP pública que alojará el conector ElasticSearch. Una instancia EC2 normal con 2-4 cpus hará el trabajo para esta prueba (nosotros usamos una t2.medium). Por supuesto, si esto va a ser un entorno de producción, una evaluación del dimensionamiento de esta máquina sería un paso importante para este despliegue.

El siguiente paso es asegurar la conectividad entre la VPC recién creada y:

    • Couchbase Capella, y
    • Nube elástica

La forma más práctica (¡sólo con fines de prueba!) es a través de la conectividad pública. En la configuración del cluster Capella necesitamos Lista blanca de la IP pública de la instancia EC2 para que Elasticsearch Connector pueda establecer una conexión con la base de datos. Para Elastic Cloud, en cambio, necesitamos crear un Clave API.

También existe la alternativa de ir a través de enlaces privados y se puede encontrar amplia documentación aquí:

Conector Couchbase-ElasticSearch

Después de haber aprovisionado la instancia EC2 necesitamos descargar los ejecutables desde el sitio web de Couchbase. Antes de eso, por favor echa un vistazo en los requisitos, aquí y descargar aquí.

Ahora tenemos que configurarlo modificando la directiva $CBES_HOME/config/default-connector.toml archivo.

He aquí algunas secciones que le resonarán, algunas secciones eliminadas para que sea breve:

Buenas prácticas y consejos

He aquí algunas cosas que puede ser útil tener en cuenta:

    • Conector Couchbase ElasticSearch - Asegúrate de que el tipo de datos es correcto, [[elasticsearch.type]]. Su conector no alimentará datos a menos que esto se haga correctamente.
    • Couchbase Capella - No olvides crear las credenciales de la base de datos para el conector. 
    • ElasticSearch
      • Una vez creado un índice, puedes crear una fuente de datos a partir de la cual podrás construir tus insights.
      • Las ApiKeys pueden crearse con fines administrativos (por ejemplo, para crear índices) o para aplicaciones (por ejemplo, para enviar los datos a través del Conector). Asegúrate de que estás utilizando las correctas.
    • Conservación de datos
      • Guardar registros puede consumir mucho disco. Evite esto:
        • Excluir las notificaciones de eliminación del conector ElasticSearch con la opción ignoreDeletes = true bandera
        • Establecer un TTL para la colección que contiene sus registros, de modo que Couchbase Capella limpie automáticamente los registros que sean demasiado antiguos.

Conclusión

A través de este tutorial hemos visto cómo implementar la observabilidad para nuestras Funciones de Eventos desplegadas en Capella. Como siguiente paso puedes inscríbete para obtener una versión de prueba de Capella y experimentar por sí mismo las numerosas funciones que ofrece la base de datos NoSQL más potente que existe. Para ayudarte a orientarte, también puedes utilizar nuestro patio de recreo y nuestro Capella iQnuestro asistente de IA generativa, para aprender a desarrollar y experimentar en un entorno seguro.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Davide Pellegatta, Ingeniero Superior de Soluciones

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.