{"id":15412,"date":"2024-03-13T08:58:00","date_gmt":"2024-03-13T15:58:00","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=15412"},"modified":"2025-06-13T22:40:14","modified_gmt":"2025-06-14T05:40:14","slug":"maximizing-couchbase-capella-eventing-observability","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/maximizing-couchbase-capella-eventing-observability\/","title":{"rendered":"Maximizaci\u00f3n de la capacidad de observaci\u00f3n de eventos de Couchbase Capella"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">En esta entrada de blog, mostraremos c\u00f3mo utilizar Couchbase Capella junto con ElasticSearch y los servicios de AWS para el env\u00edo y an\u00e1lisis eficientes de registros de aplicaciones de Eventing.<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/capella\/\"><span style=\"font-weight: 400;\">Couchbase Capella<\/span><\/a><span style=\"font-weight: 400;\"> es una plataforma de datos en la nube NoSQL multimodelo. Ofrece una respuesta de datos en milisegundos a escala, con la mejor relaci\u00f3n calidad-precio de cualquier base de datos documental como servicio. Capella <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/eventing\/\"><span style=\"font-weight: 400;\">Servicio de concursos<\/span><\/a><span style=\"font-weight: 400;\">permite activar en tiempo real la l\u00f3gica empresarial definida por el usuario cuando se producen cambios en los datos de Capella. Los casos de uso t\u00edpicos incluyen el enriquecimiento de documentos, las eliminaciones en cascada, la propagaci\u00f3n de cambios de datos dentro de una base de datos, etc.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Elastic Stack (tambi\u00e9n conocido como ELK Stack) ofrece una potente soluci\u00f3n de registro centralizado para crear perspectivas, establecer alertas basadas en KPI y realizar un seguimiento del comportamiento de las aplicaciones.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Las funciones de Eventing de Capella son f\u00e1ciles 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\u00f3gica empresarial a trav\u00e9s de mensajes definidos por el usuario espec\u00edficos para cada funci\u00f3n de Eventing. Aunque los registros de la aplicaci\u00f3n pueden visualizarse en la interfaz de usuario de Capella, la gesti\u00f3n y el an\u00e1lisis centralizados de los registros mediante soluciones de registro especializadas pueden resultar \u00fatiles en muchos casos. Este blog muestra instrucciones paso a paso sobre c\u00f3mo llevar los registros de aplicaciones de Eventing a Elastic y ayudar con el almacenamiento centralizado de registros y an\u00e1lisis.<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image_2024-03-12_131411906.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-15418 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image_2024-03-12_131411906-1024x540.png\" alt=\"\" width=\"900\" height=\"475\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_131411906-1024x540.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_131411906-300x158.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_131411906-768x405.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_131411906.png 1100w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<h2>Requisito previo<\/h2>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Despliegue de Couchbase Capella con servicios de Datos y Eventing. <\/span><a href=\"https:\/\/cloud.couchbase.com\/sign-up\"><span style=\"font-weight: 400;\">Inscr\u00edbete<\/span><\/a><span style=\"font-weight: 400;\"> para una cuenta de prueba.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Despliegue en la nube de ElasticSearch. <\/span><a href=\"https:\/\/cloud.elastic.co\/registration\"><span style=\"font-weight: 400;\">Inscr\u00edbete<\/span><\/a><span style=\"font-weight: 400;\"> para una cuenta de prueba.<\/span><\/li>\n<li style=\"font-weight: 400;\"><a href=\"https:\/\/aws.amazon.com\/free\"><span style=\"font-weight: 400;\">Cuenta AWS<\/span><\/a><span style=\"font-weight: 400;\"> con una instancia EC2 para ejecutar <\/span><a href=\"https:\/\/docs.couchbase.com\/elasticsearch-connector\/current\/index.html\"><span style=\"font-weight: 400;\">Conector Couchbase ElasticSearch<\/span><\/a><span style=\"font-weight: 400;\"> que pueden descargarse <\/span><a href=\"https:\/\/docs.couchbase.com\/elasticsearch-connector\/current\/release-notes.html\"><span style=\"font-weight: 400;\">aqu\u00ed<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Resumen de los pasos necesarios<\/h2>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>Configuraci\u00f3n del cl\u00faster Capella<\/strong>: Comience por crear un cl\u00faster Capella con servicios de datos y eventos. <\/span><span style=\"font-weight: 400;\">Encontrar\u00e1 una gu\u00eda r\u00e1pida en <\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/get-started\/create-account.html\"><span style=\"font-weight: 400;\">Documentaci\u00f3n de Couchbase Capella<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>Creaci\u00f3n de cubos\/\u00e1mbitos\/colecciones<\/strong>: Crea los buckets, \u00e1mbitos y colecciones necesarios en Couchbase. Esto incluye 'data', 'eventing-logs', y sus respectivos \u00e1mbitos y colecciones.<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>Preparaci\u00f3n de las funciones<\/strong>: Preparar las funciones de eventing para la poblaci\u00f3n y transformaci\u00f3n de datos. Esto implica crear conjuntos de datos sint\u00e9ticos y modificarlos para crear registros.<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>Creaci\u00f3n de cl\u00fasteres e \u00edndices de ElasticSearch<\/strong>: Configure su cl\u00faster ElasticSearch y cree un \u00edndice para un manejo eficiente de los datos.<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>Configuraci\u00f3n de VPC y enlaces privados<\/strong>: Crea una nueva VPC para el Elastic Connector y establece un enlace privado desde Couchbase Capella a la VPC.<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>Filtro de tr\u00e1fico de ElasticSearch<\/strong>: Implemente el filtrado de tr\u00e1fico para una transferencia de datos segura.<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>Instalar y ejecutar el conector Couchbase ElasticSearch<\/strong>: Instala el conector Couchbase ElasticSearch en una m\u00e1quina EC2 y config\u00faralo para el env\u00edo de logs.<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>Visualizaci\u00f3n y an\u00e1lisis de datos<\/strong>: Utiliza la fuente de datos recopilados para visualizar y analizar los registros, explorando la informaci\u00f3n que proporcionan.<\/span><\/p>\n<h2>Configuraci\u00f3n detallada<\/h2>\n<h3>Entorno Couchbase<\/h3>\n<p><span style=\"font-weight: 400;\">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.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Los fundamentos de esta sencilla actividad se encuentran en el <\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/data-service\/about-buckets-scopes-collections.html\"><span style=\"font-weight: 400;\">Documentaci\u00f3n de Couchbase Capella<\/span><\/a><span style=\"font-weight: 400;\"> que ilustra los principios y las acciones implicadas. Tenga en cuenta que la creaci\u00f3n de cubos implica la configuraci\u00f3n de varios par\u00e1metros, de los cuales el m\u00e1s destacado es la Cuota de memoria. A efectos de prueba, puede elegir 100 MB; de lo contrario, se crear\u00e1 una <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/buckets-memory-and-storage\/storage-engines.html#couchstore-and-magma-at-a-glance\"><span style=\"font-weight: 400;\">evaluaci\u00f3n precisa<\/span><\/a><span style=\"font-weight: 400;\"> ser\u00e1 necesario.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Cree dos cubos con la siguiente estructura:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nombre: \"<\/span><b>datos<\/b><span style=\"font-weight: 400;\">\"<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nombre del \u00c1mbito: \"<\/span><b>concurso<\/b><span style=\"font-weight: 400;\">\"<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nombre de la colecci\u00f3n: \"<\/span><b>meta<\/b><span style=\"font-weight: 400;\">\"<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><i><span style=\"font-weight: 400;\">Almacenamiento de los puntos de control de las funciones de eventos<\/span><\/i><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nombre del \u00c1mbito: \"<\/span><b>inventario<\/b><span style=\"font-weight: 400;\">\"<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nombre de la colecci\u00f3n: \"<\/span><b>datos<\/b><span style=\"font-weight: 400;\">\"<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><i><span style=\"font-weight: 400;\">Almacenamiento de datos reales<\/span><\/i><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nombre: \"<\/span><b>eventing-logs<\/b><span style=\"font-weight: 400;\">\"<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nombre del \u00c1mbito: \"<\/span><b>concurso<\/b><span style=\"font-weight: 400;\">\"<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nombre de la colecci\u00f3n: \"<\/span><b>Registros<\/b><span style=\"font-weight: 400;\">\"<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><i><span style=\"font-weight: 400;\">Almacenamiento para logs. Opcionalmente podemos establecer un TTL para reducir la cantidad de almacenamiento.<\/span><\/i><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nombre del \u00c1mbito: \"<\/span><b>elastic-checkpoints<\/b><span style=\"font-weight: 400;\">\"<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nombre de la colecci\u00f3n: \"<\/span><b>conector<\/b><span style=\"font-weight: 400;\">\"<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><i><span style=\"font-weight: 400;\">Almacenamiento de los puntos de control del conector Couchbase-Elasticsearch<\/span><\/i><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Poblaci\u00f3n de datos<\/h3>\n<p><span style=\"font-weight: 400;\">A continuaci\u00f3n crearemos dos funciones eventing. Si es la primera vez que crea una funci\u00f3n eventing, puede familiarizarse con el entorno <\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/eventing-service\/manage-eventing-functions.html\"><span style=\"font-weight: 400;\">siguiendo esta gu\u00eda<\/span><\/a><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">El objetivo de estas funciones es:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\"><i><span style=\"font-weight: 400;\">Primera funci\u00f3n<\/span><\/i><span style=\"font-weight: 400;\">: crear datos sobre los que podamos trabajar. Un conjunto de datos que representa un cat\u00e1logo de productos.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">Esta funci\u00f3n crea documentos json simples, introduciendo cierta variabilidad a lo largo de 100000 iteraciones. Si bien esto no es un cat\u00e1logo de productos realista, establece un buen terreno para experimentar funciones de eventos que necesitan registrar la forma en que se est\u00e1 realizando. Tenga en cuenta que la funci\u00f3n se activa la primera vez mediante la creaci\u00f3n de un documento vac\u00edo.<\/span><\/li>\n<li style=\"font-weight: 400;\"><i><span style=\"font-weight: 400;\">Segunda funci\u00f3n<\/span><\/i><span style=\"font-weight: 400;\">la funci\u00f3n de eventos real con alguna l\u00f3gica de negocio que nos gustar\u00eda observar a trav\u00e9s de la pila ELK.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Mientras la funci\u00f3n eventing se ejecuta sin l\u00edmites en todo el nuevo conjunto de datos, sustituye la propiedad <\/span><span style=\"font-weight: 400;\">categor\u00eda<\/span><span style=\"font-weight: 400;\"> siempre que coincida con el valor \"<\/span><span style=\"font-weight: 400;\">Categor\u00eda 3<\/span><span style=\"font-weight: 400;\">\" y cambia este valor a \"<\/span><span style=\"font-weight: 400;\">vaqueros<\/span><span style=\"font-weight: 400;\">\". En varias partes de la funci\u00f3n podemos observar que se llama convenientemente una funci\u00f3n llamada <\/span><b>logStuff<\/b><span style=\"font-weight: 400;\">: Su prop\u00f3sito es guardar una l\u00ednea de registro en una colecci\u00f3n dedicada que posteriormente ser\u00e1 replicada a ElasticSearch e indexada.<\/span><\/p>\n<h3>Funci\u00f3n de poblaci\u00f3n de datos<\/h3>\n<p><span style=\"font-weight: 400;\">Cree una funci\u00f3n de eventos con las siguientes configuraciones:<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image_2024-03-12_130932355.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-15414 size-large\" style=\"border: solid black 1px;\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image_2024-03-12_130932355-1024x797.png\" alt=\"\" width=\"900\" height=\"700\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_130932355-1024x797.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_130932355-300x234.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_130932355-768x598.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_130932355.png 1256w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Y el siguiente cubo vinculante:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-15415\" style=\"border: solid black 1px;\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image_2024-03-12_131012849-1024x400.png\" alt=\"\" width=\"900\" height=\"352\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_131012849-1024x400.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_131012849-300x117.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_131012849-768x300.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_131012849.png 1267w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Esta es la funci\u00f3n:<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<pre class=\"nums:false lang:js decode:true\">function OnUpdate(doc, meta) {\r\n\u00a0\u00a0\u00a0\u00a0\/\/ Placeholder function for handling document updates\r\n\u00a0\u00a0\u00a0\u00a0if(meta.id == 'start') {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0for(let i = 1; i &lt;= 100000; i++) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var item = {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"type\": \"inventoryItem\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"itemId\": i,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"name\": \"Item \" + i,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"price\": Math.random() * 100, \/\/ Random price between 0 and 100\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"inStock\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"category\": \"Category \" + (i % 10) \/\/ 10 different categories\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0};\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var key = \"item_\" + i;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0dst[key] = item;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0}\r\n}\r\n\r\nfunction OnDelete(meta) {\r\n\u00a0\u00a0\u00a0\u00a0\/\/ Placeholder function for handling document deletions\r\n}<\/pre>\n<p>En el momento en que la funci\u00f3n obtiene un documento en <em>datos.inventario.datos<\/em> con el ID <em>iniciar<\/em>generar\u00e1 100000 documentos aleatorios.<\/p>\n<p><span style=\"font-weight: 400;\">Nota: para generar este documento basta con ir a la p\u00e1gina <\/span><b>Herramientas de datos<\/b><span style=\"font-weight: 400;\"> seleccione <\/span><b>Documentos<\/b><span style=\"font-weight: 400;\"> y, a continuaci\u00f3n, haga clic en el bot\u00f3n <\/span><b>Crear nuevo documento <\/b><span style=\"font-weight: 400;\">(\u00a1recuerde seleccionar la colecci\u00f3n correcta! <\/span><span style=\"font-weight: 400;\">Datos -&gt; Inventario -&gt; Datos<\/span><span style=\"font-weight: 400;\">).\u00a0<\/span><\/p>\n<h3>Funci\u00f3n de transformaci\u00f3n de datos<\/h3>\n<p><span style=\"font-weight: 400;\">Esta segunda funci\u00f3n demostrar\u00e1 c\u00f3mo persistir los registros en el almacenamiento temporal para ser utilizado m\u00e1s tarde en la pila ELK. Mientras realiza su l\u00f3gica de negocio en el <\/span><em>datos.inventario.datos<\/em><span style=\"font-weight: 400;\"> guardar\u00e1 algunos registros de la aplicaci\u00f3n en el archivo <\/span><em>eventing-logs.eventing.logs<\/em> <span style=\"font-weight: 400;\">para poder exportarlos posteriormente a ElasticSearch.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">La configuraci\u00f3n:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-15416\" style=\"border: solid black 1px;\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image_2024-03-12_131106111.png\" alt=\"\" width=\"932\" height=\"769\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_131106111.png 932w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_131106111-300x248.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_131106111-768x634.png 768w\" sizes=\"auto, (max-width: 932px) 100vw, 932px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Las ataduras:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-15417\" style=\"border: solid black 1px;\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image_2024-03-12_131126299.png\" alt=\"\" width=\"909\" height=\"626\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_131126299.png 909w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_131126299-300x207.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_131126299-768x529.png 768w\" sizes=\"auto, (max-width: 909px) 100vw, 909px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">La funci\u00f3n:<\/span><\/p>\n<pre class=\"nums:false lang:js decode:true\">function OnUpdate(doc, meta) {\r\n\u00a0\u00a0\u00a0\u00a0logStuff(\"debug\", \"start evaluating \" + meta.id);\r\n\u00a0\u00a0\u00a0\u00a0if(doc.category == \"Category 3\") {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0logStuff(\"info\", \"start modifying \" + meta.id);\r\n \u00a0\u00a0\u00a0\u00a0\u00a0doc.category = \"jeans\";\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0inventoryScope[meta.id] = doc;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0logStuff(\"info\", \"end modifying \" + meta.id);\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0logStuff(\"debug\", \"end evaluating \" + meta.id);\r\n}\r\n\r\nfunction OnDelete(meta, options) {\r\n}\r\n\r\nfunction simpleHash(str) {\r\n\u00a0\u00a0let hash = 0;\r\n\u00a0\u00a0for (let i = 0; i &lt; str.length; i++) {\r\n\u00a0\u00a0\u00a0\u00a0const char = str.charCodeAt(i);\r\n\u00a0\u00a0\u00a0\u00a0hash = (hash &lt;&lt; 5) - hash + char;\r\n\u00a0\u00a0\u00a0\u00a0hash &amp;= hash; \/\/ Convert to 32bit integer\r\n\u00a0\u00a0}\r\n\u00a0\u00a0return new Uint32Array([hash])[0].toString(36);\r\n}\r\n\r\nfunction logStuff(level, message) {\r\n\u00a0\u00a0var date = new Date();\r\n\u00a0\u00a0date.toISOString();\r\n\u00a0\u00a0var logLine = {\r\n\u00a0\u00a0\u00a0\u00a0\"@timestamp\": date,\r\n\u00a0\u00a0\u00a0\u00a0\"log\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"level\": level,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"logger\": \"couchbase.eventing\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"origin\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"function\": \"data-transformation-cat-3-to-tee\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"original\": message\r\n\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\"message\": message,\r\n\u00a0\u00a0\u00a0\u00a0\"ecs\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"version\": \"1.6.0\"\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0}\r\n\u00a0\u00a0var logEntryId = \"data-transformation-\" + Math.floor(Math.random() * 10000000) + date;\r\n\u00a0\u00a0logCollectionScope[simpleHash(logEntryId)] = logLine;\r\n}<\/pre>\n<p><span style=\"font-weight: 400;\">La funci\u00f3n se encarga de modificar una determinada categor\u00eda de datos y transformar su etiqueta. Para ello, necesitamos hacer un seguimiento de c\u00f3mo se est\u00e1 comportando la funci\u00f3n a trav\u00e9s de registros que posteriormente ser\u00e1n analizados con la pila ELK.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">En <\/span><em>logStuff<\/em><span style=\"font-weight: 400;\"> crea un documento JSON con un formato compatible con ECS y lo persiste en un bucket separado.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Una vez creada la funci\u00f3n eventing, recuerde <\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/eventing-service\/deploy-eventing-functions.html\"><b>despliegue<\/b><\/a><span style=\"font-weight: 400;\"> eso.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Una vez creado el conjunto de datos y ejecutada la funci\u00f3n de transformaci\u00f3n, deber\u00edamos tener un cubo lleno de registros listo para ser enviado a ElasticSearch.<\/span><\/p>\n<p><em><span style=\"font-weight: 400;\">Nota: Para evitar colisiones, las l\u00edneas de registro se crean con marcas de tiempo y n\u00fameros aleatorios a los que posteriormente se les aplica un hash para ahorrar espacio.<\/span><\/em><\/p>\n<h3>Configuraci\u00f3n de Elastic Cloud<\/h3>\n<p><span style=\"font-weight: 400;\">Antes de empezar a sincronizar los datos necesitamos crear un \u00edndice en ElasticSearch. Aseg\u00farate de modificar la directiva Elasticsearch <\/span><a href=\"https:\/\/www.elastic.co\/guide\/en\/cloud-enterprise\/current\/ece-connect.html\"><span style=\"font-weight: 400;\">URL del punto final<\/span><\/a><span style=\"font-weight: 400;\"> y crear un <\/span><a href=\"https:\/\/www.elastic.co\/guide\/en\/kibana\/current\/api-keys.html\"><span style=\"font-weight: 400;\">Clave API<\/span><\/a><span style=\"font-weight: 400;\"> con derechos administrativos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">He aqu\u00ed un ejemplo de CURL:<\/span><\/p>\n<pre class=\"nums:false lang:js decode:true\">curl -X PUT \"https:\/\/&lt;your ElasticSearch endpoint here&gt;:443\/couchbase-ecs\" \\\r\n-H \"Authorization: ApiKey \"&lt;your API key&gt;\"\" \\\r\n-H \"Content-Type: application\/json\" \\\r\n-d '\r\n{\r\n\u00a0\u00a0\"settings\": {\r\n\u00a0\u00a0\u00a0\u00a0\"number_of_shards\": 1,\r\n\u00a0\u00a0\u00a0\u00a0\"number_of_replicas\": 1\r\n\u00a0\u00a0},\r\n\u00a0\u00a0\"mappings\": {\r\n\u00a0\u00a0\u00a0\u00a0\"properties\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"@timestamp\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"type\": \"date\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"log\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"properties\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"level\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"type\": \"keyword\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"logger\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"type\": \"keyword\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"origin\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"properties\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"function\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"type\": \"keyword\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"original\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"type\": \"text\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"message\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"type\": \"text\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"ecs\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"properties\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"version\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"type\": \"keyword\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0}\r\n}'<\/pre>\n<p><span style=\"font-weight: 400;\">El \u00edndice asigna el tipo de datos del registrador para que pueda buscarse de forma eficiente.<\/span><\/p>\n<h3>Conector ElasticSearch<\/h3>\n<h4>Configuraci\u00f3n de la red<\/h4>\n<p><span style=\"font-weight: 400;\">Necesitamos crear una VPC con una m\u00e1quina EC2 <\/span><span style=\"font-weight: 400;\">con una direcci\u00f3n IP p\u00fablica<\/span><span style=\"font-weight: 400;\"> que alojar\u00e1 el conector ElasticSearch. Una instancia EC2 normal con 2-4 cpus har\u00e1 el trabajo para esta prueba (nosotros usamos una t2.medium). Por supuesto, si esto va a ser un entorno de producci\u00f3n, una evaluaci\u00f3n del dimensionamiento de esta m\u00e1quina ser\u00eda un paso importante para este despliegue.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">El siguiente paso es asegurar la conectividad entre la VPC reci\u00e9n creada y:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Couchbase Capella, y<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nube el\u00e1stica<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">La forma m\u00e1s pr\u00e1ctica (\u00a1s\u00f3lo con fines de prueba!) es a trav\u00e9s de la conectividad p\u00fablica. En la configuraci\u00f3n del cluster Capella necesitamos <\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/allow-ip-address.html\"><span style=\"font-weight: 400;\">Lista blanca de la IP p\u00fablica de la instancia EC2<\/span><\/a><span style=\"font-weight: 400;\"> para que Elasticsearch Connector pueda establecer una conexi\u00f3n con la base de datos. Para Elastic Cloud, en cambio, necesitamos crear un <\/span><a href=\"https:\/\/www.elastic.co\/guide\/en\/cloud\/current\/ec-api-keys.html\"><span style=\"font-weight: 400;\">Clave API<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tambi\u00e9n existe la alternativa de ir a trav\u00e9s de enlaces privados y se puede encontrar amplia documentaci\u00f3n aqu\u00ed:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\"><a href=\"https:\/\/docs.couchbase.com\/cloud\/security\/add-aws-private-link.html\">Couchbase Capella<\/a><\/span><\/li>\n<li style=\"font-weight: 400;\"><a href=\"https:\/\/www.elastic.co\/blog\/secure-elastic-cloud-deployment-aws-privatelink-traffic-filter\"><span style=\"font-weight: 400;\">Nube el\u00e1stica<\/span><\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>Conector Couchbase-ElasticSearch<\/h4>\n<p><span style=\"font-weight: 400;\">Despu\u00e9s de haber aprovisionado la instancia EC2 necesitamos descargar los ejecutables desde el sitio web de Couchbase. Antes de eso, por favor echa un vistazo <a href=\"https:\/\/docs.couchbase.com\/elasticsearch-connector\/current\/index.html\">en los requisitos, aqu\u00ed<\/a> y <a href=\"https:\/\/docs.couchbase.com\/elasticsearch-connector\/current\/release-notes.html\">descargar aqu\u00ed<\/a>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ahora tenemos que configurarlo modificando la directiva <\/span><em><span style=\"font-weight: 400;\">$CBES_HOME\/config\/default-connector.toml <\/span><\/em><span style=\"font-weight: 400;\">archivo.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">He aqu\u00ed algunas secciones que le resonar\u00e1n, algunas secciones eliminadas para que sea breve:<\/span><\/p>\n<pre class=\"nums:false lang:default decode:true\">[group]\r\nname = 'example-group'\r\n\r\n[group.static]\r\nmemberNumber = 1 # A value from 1 to 'totalMembers', inclusive.\r\ntotalMembers = 1\r\n\r\n[...]\r\n\r\n[couchbase]\r\nhosts = ['&lt;your Capella private endpoint&gt;']\r\nnetwork = 'auto'\r\nbucket = 'eventing-logs'\r\nmetadataBucket = 'eventing-logs'\r\nmetadataCollection = 'elastic-checkpoints.connector'\r\n\r\n# your Capella username\r\nusername = 'hello'\r\n\r\n# Remember to go to modify this file with the password\r\npathToPassword = 'secrets\/couchbase-password.toml'\r\n\r\n#Capella environment is always secured\r\nsecureConnection = true\r\n\r\n[...]\r\n\r\n[elasticsearch]\r\nhosts = ['https:\/\/&lt;your ElasticSearch endpoint here&gt;:443']\r\nusername = 'elastic'\r\n\r\n# Remember to go to modify this file with your ElasticSearch ApiKey\r\npathToPassword = 'secrets\/elasticsearch-password.toml'\r\nsecureConnection = true\r\n\r\n[...]\r\n\r\n[elasticsearch.elasticCloud]\r\nenabled = true\r\n\r\n[...]\r\n\r\n# If true, never delete matching documents from Elasticsearch.\r\nignoreDeletes = true\r\n[[elasticsearch.type]]\r\nmatchOnQualifiedKey = true\r\nprefix = 'eventing.logs.'\r\nindex = 'couchbase-ecs'\r\n\r\n[...]<\/pre>\n<h2>Buenas pr\u00e1cticas y consejos<\/h2>\n<p><span style=\"font-weight: 400;\">He aqu\u00ed algunas cosas que puede ser \u00fatil tener en cuenta:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Conector Couchbase ElasticSearch - <\/span>Aseg\u00farate de que el tipo de datos es correcto, <em><span style=\"font-weight: 400;\">[[elasticsearch.type]]<\/span>. <\/em><span style=\"font-weight: 400;\">Su conector no alimentar\u00e1 datos a menos que esto se haga correctamente.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Couchbase Capella - <\/span><span style=\"font-weight: 400;\">No olvides crear las credenciales de la base de datos para el conector.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">ElasticSearch<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Una vez creado un \u00edndice, puedes crear una fuente de datos a partir de la cual podr\u00e1s construir tus insights.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Las ApiKeys pueden crearse con fines administrativos (por ejemplo, para crear \u00edndices) o para aplicaciones (por ejemplo, para enviar los datos a trav\u00e9s del Conector). Aseg\u00farate de que est\u00e1s utilizando las correctas.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Conservaci\u00f3n de datos<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Guardar registros puede consumir mucho disco. Evite esto:<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Excluir las notificaciones de eliminaci\u00f3n del conector ElasticSearch con la opci\u00f3n <\/span><em><span style=\"font-weight: 400;\">ignoreDeletes = true<\/span><\/em> <span style=\"font-weight: 400;\">bandera<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Establecer un TTL para la colecci\u00f3n que contiene sus registros, de modo que Couchbase Capella limpie autom\u00e1ticamente los registros que sean demasiado antiguos.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-15421\" style=\"border: solid black 1px;\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image_2024-03-13_095458683-1024x621.png\" alt=\"\" width=\"900\" height=\"546\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-13_095458683-1024x621.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-13_095458683-300x182.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-13_095458683-768x466.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-13_095458683-1320x801.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-13_095458683.png 1380w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p><span style=\"font-weight: 400;\">A trav\u00e9s de este tutorial hemos visto c\u00f3mo implementar la observabilidad para nuestras Funciones de Eventos desplegadas en Capella. Como siguiente paso puedes <\/span><a href=\"https:\/\/cloud.couchbase.com\/sign-up\"><span style=\"font-weight: 400;\">inscr\u00edbete<\/span><\/a><span style=\"font-weight: 400;\"> para obtener una versi\u00f3n de prueba de Capella y experimentar por s\u00ed mismo las numerosas funciones que ofrece la base de datos NoSQL m\u00e1s potente que existe. Para ayudarte a orientarte, tambi\u00e9n puedes utilizar <\/span><a href=\"https:\/\/cloud.couchbase.com\/sign-up\"><span style=\"font-weight: 400;\">nuestro patio de recreo<\/span><\/a><span style=\"font-weight: 400;\"> y nuestro <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/introducing-couchbase-capella-iq\/\"><span style=\"font-weight: 400;\">Capella iQ<\/span><\/a><span style=\"font-weight: 400;\">nuestro asistente de IA generativa, para aprender a desarrollar y experimentar en un entorno seguro. <\/span><\/p>","protected":false},"excerpt":{"rendered":"<p>In this blog post, we&#8217;ll show how to use Couchbase Capella in conjunction with ElasticSearch and AWS services for efficient Eventing application log shipping and analytics. Couchbase Capella is a multi-model NoSQL cloud data platform. It delivers millisecond data response [&hellip;]<\/p>","protected":false},"author":85143,"featured_media":15413,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2242,2225,2273],"tags":[8622,1292],"ppma_author":[9933,9932],"class_list":["post-15412","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-connectors","category-cloud","category-eventing","tag-distributed-search","tag-elasticsearch"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase Capella &amp; AWS Services for Eventing Tutorial<\/title>\n<meta name=\"description\" content=\"Learn how to use Couchbase Capella in conjunction with ElasticSearch and AWS services for efficient Eventing application log shipping and analytics here.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/maximizing-couchbase-capella-eventing-observability\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Maximizing Couchbase Capella Eventing Observability\" \/>\n<meta property=\"og:description\" content=\"Learn how to use Couchbase Capella in conjunction with ElasticSearch and AWS services for efficient Eventing application log shipping and analytics here.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/maximizing-couchbase-capella-eventing-observability\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-13T15:58:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T05:40:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_130813634.png\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"380\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Davide Pellegatta, Senior Solutions Engineer, Ravi Kesarwani, Principal Product Manager\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Davide Pellegatta, Senior Solutions Engineer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/\"},\"author\":{\"name\":\"Davide Pellegatta, Senior Solutions Engineer\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/569b58d05762e8b34ede47f1f9f218d4\"},\"headline\":\"Maximizing Couchbase Capella Eventing Observability\",\"datePublished\":\"2024-03-13T15:58:00+00:00\",\"dateModified\":\"2025-06-14T05:40:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/\"},\"wordCount\":1536,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_130813634.png\",\"keywords\":[\"distributed search\",\"elasticsearch\"],\"articleSection\":[\"Connectors\",\"Couchbase Capella\",\"Eventing\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/\",\"name\":\"Couchbase Capella & AWS Services for Eventing Tutorial\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_130813634.png\",\"datePublished\":\"2024-03-13T15:58:00+00:00\",\"dateModified\":\"2025-06-14T05:40:14+00:00\",\"description\":\"Learn how to use Couchbase Capella in conjunction with ElasticSearch and AWS services for efficient Eventing application log shipping and analytics here.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_130813634.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_130813634.png\",\"width\":720,\"height\":380},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Maximizing Couchbase Capella Eventing Observability\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/569b58d05762e8b34ede47f1f9f218d4\",\"name\":\"Davide Pellegatta, Senior Solutions Engineer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/329400f1c06c79fd4b18acdd262be436\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_132345390.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_132345390.png\",\"caption\":\"Davide Pellegatta, Senior Solutions Engineer\"},\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/davidepellegatta\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase Capella & AWS Services for Eventing Tutorial","description":"Aprenda a utilizar Couchbase Capella junto con ElasticSearch y los servicios de AWS para el env\u00edo y an\u00e1lisis eficientes de registros de aplicaciones de Eventing aqu\u00ed.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/maximizing-couchbase-capella-eventing-observability\/","og_locale":"es_MX","og_type":"article","og_title":"Maximizing Couchbase Capella Eventing Observability","og_description":"Learn how to use Couchbase Capella in conjunction with ElasticSearch and AWS services for efficient Eventing application log shipping and analytics here.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/maximizing-couchbase-capella-eventing-observability\/","og_site_name":"The Couchbase Blog","article_published_time":"2024-03-13T15:58:00+00:00","article_modified_time":"2025-06-14T05:40:14+00:00","og_image":[{"width":720,"height":380,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_130813634.png","type":"image\/png"}],"author":"Davide Pellegatta, Senior Solutions Engineer, Ravi Kesarwani, Principal Product Manager","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Davide Pellegatta, Senior Solutions Engineer","Est. reading time":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/"},"author":{"name":"Davide Pellegatta, Senior Solutions Engineer","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/569b58d05762e8b34ede47f1f9f218d4"},"headline":"Maximizing Couchbase Capella Eventing Observability","datePublished":"2024-03-13T15:58:00+00:00","dateModified":"2025-06-14T05:40:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/"},"wordCount":1536,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_130813634.png","keywords":["distributed search","elasticsearch"],"articleSection":["Connectors","Couchbase Capella","Eventing"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/","url":"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/","name":"Couchbase Capella & AWS Services for Eventing Tutorial","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_130813634.png","datePublished":"2024-03-13T15:58:00+00:00","dateModified":"2025-06-14T05:40:14+00:00","description":"Aprenda a utilizar Couchbase Capella junto con ElasticSearch y los servicios de AWS para el env\u00edo y an\u00e1lisis eficientes de registros de aplicaciones de Eventing aqu\u00ed.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_130813634.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_130813634.png","width":720,"height":380},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Maximizing Couchbase Capella Eventing Observability"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/569b58d05762e8b34ede47f1f9f218d4","name":"Davide Pellegatta, Ingeniero Superior de Soluciones","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/329400f1c06c79fd4b18acdd262be436","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_132345390.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_132345390.png","caption":"Davide Pellegatta, Senior Solutions Engineer"},"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/davidepellegatta\/"}]}},"authors":[{"term_id":9933,"user_id":85143,"is_guest":0,"slug":"davidepellegatta","display_name":"Davide Pellegatta, Senior Solutions Engineer","avatar_url":{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_132345390.png","url2x":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_132345390.png"},"author_category":"","last_name":"Pellegatta, Senior Solutions Engineer","first_name":"Davide","job_title":"","user_url":"","description":""},{"term_id":9932,"user_id":85142,"is_guest":0,"slug":"ravikesarwani","display_name":"Ravi Kesarwani, Principal Product Manager","avatar_url":{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_132216963.png","url2x":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-12_132216963.png"},"author_category":"","last_name":"Kesarwani, Principal Product Manager","first_name":"Ravi","job_title":"","user_url":"","description":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/15412","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/85143"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=15412"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/15412\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/15413"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=15412"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=15412"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=15412"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=15412"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}