{"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\/pt\/maximizing-couchbase-capella-eventing-observability\/","title":{"rendered":"Maximizando a observabilidade de eventos do Couchbase Capella"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Nesta postagem do blog, mostraremos como usar o Couchbase Capella em conjunto com o ElasticSearch e os servi\u00e7os do AWS para envio e an\u00e1lise eficientes de logs de aplicativos de eventos.<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/capella\/\"><span style=\"font-weight: 400;\">Couchbase Capella<\/span><\/a><span style=\"font-weight: 400;\"> \u00e9 uma plataforma de dados em nuvem NoSQL de v\u00e1rios modelos. Ela oferece resposta de dados em milissegundos em escala, com o melhor pre\u00e7o-desempenho de qualquer banco de dados como servi\u00e7o de documentos. Capella <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/eventing\/\"><span style=\"font-weight: 400;\">Servi\u00e7o de eventos<\/span><\/a><span style=\"font-weight: 400;\">O Capella\u00ae , permite que a l\u00f3gica comercial definida pelo usu\u00e1rio seja acionada em tempo real quando houver altera\u00e7\u00f5es nos dados do Capella. Os casos de uso t\u00edpicos incluem enriquecimento de documentos, exclus\u00f5es em cascata, propaga\u00e7\u00e3o de altera\u00e7\u00f5es de dados em um banco de dados e muito mais.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">O Elastic Stack (tamb\u00e9m conhecido como ELK Stack) oferece uma solu\u00e7\u00e3o avan\u00e7ada de registro centralizado para criar insights, definir alertas com base em KPIs e acompanhar o comportamento dos aplicativos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">As fun\u00e7\u00f5es do Capella Eventing s\u00e3o f\u00e1ceis de criar usando o editor Data Tools Eventing na interface do usu\u00e1rio. Os logs de aplicativos de eventos permitem que os usu\u00e1rios identifiquem e capturem v\u00e1rias atividades e erros relacionados \u00e0 l\u00f3gica comercial por meio de mensagens definidas pelo usu\u00e1rio espec\u00edficas para cada fun\u00e7\u00e3o de eventos. Embora os logs de aplicativos possam ser visualizados na interface do usu\u00e1rio do Capella, o gerenciamento e a an\u00e1lise centralizados de logs usando solu\u00e7\u00f5es especializadas de logs podem ser \u00fateis em muitos cen\u00e1rios. Este blog mostra instru\u00e7\u00f5es passo a passo sobre como trazer os logs de aplica\u00e7\u00e3o do Eventing para a Elastic e ajudar com o armazenamento e a an\u00e1lise centralizados de logs.<\/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>Pr\u00e9-requisito<\/h2>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Implanta\u00e7\u00e3o do Couchbase Capella com servi\u00e7os de dados e eventos. <\/span><a href=\"https:\/\/cloud.couchbase.com\/sign-up\"><span style=\"font-weight: 400;\">Registrar-se<\/span><\/a><span style=\"font-weight: 400;\"> para uma conta de avalia\u00e7\u00e3o.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Implanta\u00e7\u00e3o do ElasticSearch Cloud. <\/span><a href=\"https:\/\/cloud.elastic.co\/registration\"><span style=\"font-weight: 400;\">Registrar-se<\/span><\/a><span style=\"font-weight: 400;\"> para uma conta de avalia\u00e7\u00e3o.<\/span><\/li>\n<li style=\"font-weight: 400;\"><a href=\"https:\/\/aws.amazon.com\/free\"><span style=\"font-weight: 400;\">Conta AWS<\/span><\/a><span style=\"font-weight: 400;\"> com uma inst\u00e2ncia do EC2 para executar <\/span><a href=\"https:\/\/docs.couchbase.com\/elasticsearch-connector\/current\/index.html\"><span style=\"font-weight: 400;\">Conector do Couchbase ElasticSearch<\/span><\/a><span style=\"font-weight: 400;\"> que pode ser baixado <\/span><a href=\"https:\/\/docs.couchbase.com\/elasticsearch-connector\/current\/release-notes.html\"><span style=\"font-weight: 400;\">aqui<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Vis\u00e3o geral das etapas necess\u00e1rias<\/h2>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>Configura\u00e7\u00e3o do cluster Capella<\/strong>: Comece criando um Capella Cluster com servi\u00e7os de dados e eventos. <\/span><span style=\"font-weight: 400;\">Um guia r\u00e1pido pode ser encontrado em <\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/get-started\/create-account.html\"><span style=\"font-weight: 400;\">Documenta\u00e7\u00e3o do Couchbase Capella<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>Cria\u00e7\u00e3o de balde\/escopo\/cole\u00e7\u00e3o<\/strong>: Crie os buckets, escopos e cole\u00e7\u00f5es necess\u00e1rios no Couchbase. Isso inclui \"data\", \"eventing-logs\" e seus respectivos escopos e cole\u00e7\u00f5es.<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>Prepara\u00e7\u00e3o para fun\u00e7\u00f5es de eventos<\/strong>: Preparar as fun\u00e7\u00f5es de eventos para a popula\u00e7\u00e3o e transforma\u00e7\u00e3o de dados. Isso envolve a cria\u00e7\u00e3o de conjuntos de dados sint\u00e9ticos e sua modifica\u00e7\u00e3o para criar registros.<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>Cria\u00e7\u00e3o de cluster e \u00edndice do ElasticSearch<\/strong>: Configure seu cluster do ElasticSearch e crie um \u00edndice para o manuseio eficiente dos dados.<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>Configura\u00e7\u00e3o de VPC e link privado<\/strong>: Crie uma nova VPC para o Elastic Connector e estabele\u00e7a um link privado do Couchbase Capella para a VPC.<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>Filtro de tr\u00e1fego do ElasticSearch<\/strong>: Implementar filtragem de tr\u00e1fego para transfer\u00eancia segura de dados.<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>Instalar e executar o conector ElasticSearch do Couchbase<\/strong>: Instale o Conector ElasticSearch do Couchbase em um computador EC2 e configure-o para envio de logs.<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\"><strong>Visualiza\u00e7\u00e3o e an\u00e1lise de dados<\/strong>: Use a fonte de dados coletados para visualizar e analisar os registros, explorando os insights que eles fornecem.<\/span><\/p>\n<h2>Configura\u00e7\u00e3o detalhada<\/h2>\n<h3>Ambiente do Couchbase<\/h3>\n<p><span style=\"font-weight: 400;\">Precisamos criar dois buckets, seus escopos e cole\u00e7\u00f5es. Em um lado, criaremos tudo o que precisamos para gerenciar dados e fun\u00e7\u00f5es de eventos. No outro, criaremos um segundo dedicado aos logs gerados pelas fun\u00e7\u00f5es de eventos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Os fundamentos dessa atividade simples podem ser encontrados no site <\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/data-service\/about-buckets-scopes-collections.html\"><span style=\"font-weight: 400;\">Documenta\u00e7\u00e3o do Couchbase Capella<\/span><\/a><span style=\"font-weight: 400;\"> que ilustra os princ\u00edpios e as a\u00e7\u00f5es envolvidas. Observe que a cria\u00e7\u00e3o do bucket envolve a configura\u00e7\u00e3o de v\u00e1rias defini\u00e7\u00f5es, das quais a mais proeminente \u00e9 a cota de mem\u00f3ria. Para fins de teste, voc\u00ea pode escolher 100 MB; caso contr\u00e1rio, um <\/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;\">avalia\u00e7\u00e3o precisa<\/span><\/a><span style=\"font-weight: 400;\"> ser\u00e1 necess\u00e1rio.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Crie dois buckets com a seguinte estrutura:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nome: \"<\/span><b>dados<\/b><span style=\"font-weight: 400;\">\"<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nome do escopo: \"<\/span><b>eventos<\/b><span style=\"font-weight: 400;\">\"<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nome da cole\u00e7\u00e3o: \"<\/span><b>meta<\/b><span style=\"font-weight: 400;\">\"<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><i><span style=\"font-weight: 400;\">Armazenamento para pontos de verifica\u00e7\u00e3o de fun\u00e7\u00f5es 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;\">Nome do escopo: \"<\/span><b>invent\u00e1rio<\/b><span style=\"font-weight: 400;\">\"<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nome da cole\u00e7\u00e3o: \"<\/span><b>dados<\/b><span style=\"font-weight: 400;\">\"<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><i><span style=\"font-weight: 400;\">Armazenamento de dados reais<\/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;\">Nome: \"<\/span><b>registros de eventos<\/b><span style=\"font-weight: 400;\">\"<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nome do escopo: \"<\/span><b>eventos<\/b><span style=\"font-weight: 400;\">\"<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nome da cole\u00e7\u00e3o: \"<\/span><b>registros<\/b><span style=\"font-weight: 400;\">\"<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><i><span style=\"font-weight: 400;\">Armazenamento para registros. Opcionalmente, podemos definir um TTL para reduzir a quantidade de armazenamento.<\/span><\/i><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nome do escopo: \"<\/span><b>pontos de controle el\u00e1sticos<\/b><span style=\"font-weight: 400;\">\"<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nome da cole\u00e7\u00e3o: \"<\/span><b>conector<\/b><span style=\"font-weight: 400;\">\"<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><i><span style=\"font-weight: 400;\">Armazenamento para pontos de verifica\u00e7\u00e3o do Conector Couchbase-Elasticsearch<\/span><\/i><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Popula\u00e7\u00e3o de dados<\/h3>\n<p><span style=\"font-weight: 400;\">Agora, criaremos duas fun\u00e7\u00f5es de eventos. Se esta \u00e9 a primeira vez que voc\u00ea cria uma fun\u00e7\u00e3o de evento, pode se familiarizar com o ambiente <\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/eventing-service\/manage-eventing-functions.html\"><span style=\"font-weight: 400;\">seguindo este guia<\/span><\/a><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">O objetivo dessas fun\u00e7\u00f5es \u00e9:<\/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;\">Primeira fun\u00e7\u00e3o<\/span><\/i><span style=\"font-weight: 400;\">Criar dados nos quais podemos trabalhar. Um conjunto de dados que representa um cat\u00e1logo de produtos.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">Essa fun\u00e7\u00e3o cria documentos json simples, introduzindo alguma variabilidade em 100.000 itera\u00e7\u00f5es. Embora esse n\u00e3o seja um cat\u00e1logo de produtos realista, ele estabelece uma boa base para experimentar fun\u00e7\u00f5es de eventos que precisam registrar o desempenho. Observe que a fun\u00e7\u00e3o \u00e9 acionada pela primeira vez ao criar um documento vazio.<\/span><\/li>\n<li style=\"font-weight: 400;\"><i><span style=\"font-weight: 400;\">Segunda fun\u00e7\u00e3o<\/span><\/i><span style=\"font-weight: 400;\">Fun\u00e7\u00e3o de eventos: a fun\u00e7\u00e3o de eventos real com alguma l\u00f3gica comercial que gostar\u00edamos de observar por meio da pilha ELK.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Enquanto a fun\u00e7\u00e3o de eventos \u00e9 executada sem limites em todo o novo conjunto de dados, ela substitui a propriedade <\/span><span style=\"font-weight: 400;\">categoria<\/span><span style=\"font-weight: 400;\"> sempre que corresponder ao valor \"<\/span><span style=\"font-weight: 400;\">Categoria 3<\/span><span style=\"font-weight: 400;\">\" e altera esse valor para \"<\/span><span style=\"font-weight: 400;\">jeans<\/span><span style=\"font-weight: 400;\">\". Em v\u00e1rias partes da fun\u00e7\u00e3o, podemos observar que ela \u00e9 convenientemente chamada de uma fun\u00e7\u00e3o chamada <\/span><b>logStuff<\/b><span style=\"font-weight: 400;\">: Sua finalidade \u00e9 salvar uma linha de log em uma cole\u00e7\u00e3o dedicada que ser\u00e1 posteriormente replicada para o ElasticSearch e indexada.<\/span><\/p>\n<h3>Fun\u00e7\u00e3o de popula\u00e7\u00e3o de dados<\/h3>\n<p><span style=\"font-weight: 400;\">Crie uma fun\u00e7\u00e3o de eventos com as seguintes configura\u00e7\u00f5es:<\/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;\">E a seguinte amarra\u00e7\u00e3o de balde:<\/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;\">Aqui est\u00e1 a fun\u00e7\u00e3o:<\/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>No momento em que a fun\u00e7\u00e3o obt\u00e9m um documento em <em>dados.invent\u00e1rio.dados<\/em> com a ID <em>iniciar<\/em>ele gerar\u00e1 100.000 documentos aleat\u00f3rios.<\/p>\n<p><span style=\"font-weight: 400;\">Observa\u00e7\u00e3o: para gerar esse documento, voc\u00ea s\u00f3 precisa acessar o <\/span><b>Ferramentas de dados<\/b><span style=\"font-weight: 400;\"> selecione <\/span><b>Documentos<\/b><span style=\"font-weight: 400;\"> e, em seguida, clique no bot\u00e3o <\/span><b>Criar novo documento <\/b><span style=\"font-weight: 400;\">(lembre-se de selecionar a cole\u00e7\u00e3o correta! <\/span><span style=\"font-weight: 400;\">Dados -&gt; Invent\u00e1rio -&gt; Dados<\/span><span style=\"font-weight: 400;\">).\u00a0<\/span><\/p>\n<h3>Fun\u00e7\u00e3o de transforma\u00e7\u00e3o de dados<\/h3>\n<p><span style=\"font-weight: 400;\">Essa segunda fun\u00e7\u00e3o demonstrar\u00e1 como manter os registros no armazenamento tempor\u00e1rio para serem usados posteriormente no ELK Stack. Enquanto executa sua l\u00f3gica comercial no <\/span><em>dados.invent\u00e1rio.dados<\/em><span style=\"font-weight: 400;\"> ele salvar\u00e1 alguns registros de aplicativos no <\/span><em>eventing-logs.eventing.logs<\/em> <span style=\"font-weight: 400;\">para que ele possa export\u00e1-los posteriormente para o ElasticSearch.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A configura\u00e7\u00e3o:<\/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;\">As encaderna\u00e7\u00f5es:<\/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;\">A fun\u00e7\u00e3o:<\/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;\">A fun\u00e7\u00e3o \u00e9 respons\u00e1vel por modificar uma determinada categoria de dados e transformar seu r\u00f3tulo. Ao fazer isso, precisamos acompanhar o desempenho da fun\u00e7\u00e3o por meio de logs que ser\u00e3o analisados posteriormente com a pilha ELK.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">O <\/span><em>logStuff<\/em><span style=\"font-weight: 400;\"> cria um documento JSON com um formato compat\u00edvel com o ECS e o persiste em um bucket separado.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Depois que a fun\u00e7\u00e3o de eventos for criada, lembre-se de <\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/eventing-service\/deploy-eventing-functions.html\"><b>implanta\u00e7\u00e3o<\/b><\/a><span style=\"font-weight: 400;\"> isso.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Depois que o conjunto de dados for criado e a fun\u00e7\u00e3o de transforma\u00e7\u00e3o for executada, deveremos ter um bucket preenchido de logs pronto para ser enviado ao ElasticSearch.<\/span><\/p>\n<p><em><span style=\"font-weight: 400;\">Observa\u00e7\u00e3o: para evitar colis\u00f5es, as linhas de registros s\u00e3o criadas com carimbos de data e hora e n\u00fameros aleat\u00f3rios, que s\u00e3o posteriormente transformados em hash para economizar espa\u00e7o.<\/span><\/em><\/p>\n<h3>Configura\u00e7\u00e3o do Elastic Cloud<\/h3>\n<p><span style=\"font-weight: 400;\">Antes de come\u00e7ar a sincronizar os dados, precisamos criar um \u00edndice no ElasticSearch. Certifique-se de modificar a vari\u00e1vel Elasticsearch <\/span><a href=\"https:\/\/www.elastic.co\/guide\/en\/cloud-enterprise\/current\/ece-connect.html\"><span style=\"font-weight: 400;\">URL do ponto de extremidade<\/span><\/a><span style=\"font-weight: 400;\"> e para criar um <\/span><a href=\"https:\/\/www.elastic.co\/guide\/en\/kibana\/current\/api-keys.html\"><span style=\"font-weight: 400;\">Chave da API<\/span><\/a><span style=\"font-weight: 400;\"> com direitos administrativos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Aqui est\u00e1 um exemplo 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;\">O \u00edndice mapeia o tipo de dados do registrador para que ele possa ser pesquisado com efici\u00eancia.<\/span><\/p>\n<h3>Conector ElasticSearch<\/h3>\n<h4>Configura\u00e7\u00e3o de rede<\/h4>\n<p><span style=\"font-weight: 400;\">Precisamos criar uma VPC com uma m\u00e1quina EC2 <\/span><span style=\"font-weight: 400;\">com um endere\u00e7o IP p\u00fablico<\/span><span style=\"font-weight: 400;\"> que hospedar\u00e1 o conector do ElasticSearch. Uma inst\u00e2ncia normal do EC2 com 2 a 4 cpus far\u00e1 o trabalho para este teste (usamos um t2.medium). Obviamente, se esse for um ambiente de produ\u00e7\u00e3o, uma avalia\u00e7\u00e3o do dimensionamento dessa m\u00e1quina seria uma etapa importante para essa implanta\u00e7\u00e3o.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A pr\u00f3xima etapa \u00e9 proteger a conectividade entre a VPC rec\u00e9m-criada e:<\/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 e<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Elastic Cloud<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">A maneira mais pr\u00e1tica (apenas para fins de teste!) \u00e9 por meio da conectividade p\u00fablica. Nas configura\u00e7\u00f5es do cluster do Capella, precisamos <\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/allow-ip-address.html\"><span style=\"font-weight: 400;\">colocar na lista de permiss\u00f5es o IP p\u00fablico da inst\u00e2ncia do EC2<\/span><\/a><span style=\"font-weight: 400;\"> para que o Elasticsearch Connector possa estabelecer uma conex\u00e3o com o banco de dados. Para o Elastic Cloud, em vez disso, precisamos criar um <\/span><a href=\"https:\/\/www.elastic.co\/guide\/en\/cloud\/current\/ec-api-keys.html\"><span style=\"font-weight: 400;\">Chave da API<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">H\u00e1 tamb\u00e9m a alternativa de usar links privados e uma extensa documenta\u00e7\u00e3o pode ser encontrada aqui:<\/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;\">Elastic Cloud<\/span><\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>Conector Couchbase-ElasticSearch<\/h4>\n<p><span style=\"font-weight: 400;\">Depois de provisionar a inst\u00e2ncia do EC2, precisamos fazer o download dos execut\u00e1veis do site do Couchbase. Antes disso, d\u00ea uma olhada <a href=\"https:\/\/docs.couchbase.com\/elasticsearch-connector\/current\/index.html\">nos requisitos, aqui<\/a> e <a href=\"https:\/\/docs.couchbase.com\/elasticsearch-connector\/current\/release-notes.html\">fa\u00e7a o download aqui<\/a>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Agora precisamos configur\u00e1-lo, modificando o <\/span><em><span style=\"font-weight: 400;\">$CBES_HOME\/config\/default-connector.toml <\/span><\/em><span style=\"font-weight: 400;\">arquivo.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Aqui est\u00e3o algumas se\u00e7\u00f5es que lhe chamar\u00e3o a aten\u00e7\u00e3o, e algumas se\u00e7\u00f5es foram removidas para manter o texto 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>Pr\u00e1ticas recomendadas e dicas<\/h2>\n<p><span style=\"font-weight: 400;\">Aqui est\u00e3o algumas coisas que podem ser \u00fateis para se ter em mente:<\/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 do Couchbase ElasticSearch - <\/span>Certifique-se de que seu tipo de dados esteja correto, <em><span style=\"font-weight: 400;\">[[elasticsearch.type]]<\/span>. <\/em><span style=\"font-weight: 400;\">Seu conector n\u00e3o alimentar\u00e1 os dados a menos que isso seja feito corretamente.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Couchbase Capella - <\/span><span style=\"font-weight: 400;\">N\u00e3o se esque\u00e7a de criar as credenciais do banco de dados para o 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;\">Depois que um \u00edndice \u00e9 criado, voc\u00ea pode criar uma fonte de dados a partir da qual poder\u00e1 criar seus insights.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">As ApiKeys podem ser criadas para fins administrativos (por exemplo, criar \u00edndices) ou aplicativos (por exemplo, enviar os dados por meio do Conector). Certifique-se de que esteja usando as corretas.<\/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;\">Reten\u00e7\u00e3o de dados<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">O salvamento de registros pode consumir muito disco. Evite isso:<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Excluindo notifica\u00e7\u00f5es de exclus\u00e3o do ElasticSearch Connector com o par\u00e2metro <\/span><em><span style=\"font-weight: 400;\">ignoreDeletes = true<\/span><\/em> <span style=\"font-weight: 400;\">bandeira<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Definir um TTL para a cole\u00e7\u00e3o que cont\u00e9m seus logs, para que o Couchbase Capella limpe automaticamente os logs que forem muito antigos<\/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>Conclus\u00e3o<\/h2>\n<p><span style=\"font-weight: 400;\">Neste tutorial, vimos como implementar a observabilidade em nossas Eventing Functions implementadas no Capella. Como pr\u00f3xima etapa, voc\u00ea pode <\/span><a href=\"https:\/\/cloud.couchbase.com\/sign-up\"><span style=\"font-weight: 400;\">registrar-se<\/span><\/a><span style=\"font-weight: 400;\"> para uma avalia\u00e7\u00e3o do Capella e experimente voc\u00ea mesmo os diversos recursos oferecidos pelo banco de dados NoSQL mais avan\u00e7ado do mercado. Para ajud\u00e1-lo a se orientar, voc\u00ea tamb\u00e9m pode usar <\/span><a href=\"https:\/\/cloud.couchbase.com\/sign-up\"><span style=\"font-weight: 400;\">nosso playground<\/span><\/a><span style=\"font-weight: 400;\"> e nossa <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/introducing-couchbase-capella-iq\/\"><span style=\"font-weight: 400;\">Capella iQ<\/span><\/a><span style=\"font-weight: 400;\">nosso assistente de IA generativa, para aprender a desenvolver e experimentar em um ambiente 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 v25.8 (Yoast SEO v25.8) - 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\/pt\/maximizing-couchbase-capella-eventing-observability\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\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\/pt\/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\":\"pt-BR\",\"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\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\",\"@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\/pt\/author\/davidepellegatta\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Tutorial do Couchbase Capella e dos servi\u00e7os do AWS para eventos","description":"Saiba como usar o Couchbase Capella em conjunto com o ElasticSearch e os servi\u00e7os do AWS para envio e an\u00e1lise eficientes de logs de aplicativos de eventos aqui.","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\/pt\/maximizing-couchbase-capella-eventing-observability\/","og_locale":"pt_BR","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\/pt\/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":"pt-BR","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":"Tutorial do Couchbase Capella e dos servi\u00e7os do AWS para eventos","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":"Saiba como usar o Couchbase Capella em conjunto com o ElasticSearch e os servi\u00e7os do AWS para envio e an\u00e1lise eficientes de logs de aplicativos de eventos aqui.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/maximizing-couchbase-capella-eventing-observability\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@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":"Blog do Couchbase","description":"Couchbase, o banco de dados 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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@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, engenheiro de solu\u00e7\u00f5es s\u00eanior","image":{"@type":"ImageObject","inLanguage":"pt-BR","@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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/15412","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/85143"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=15412"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/15412\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/15413"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=15412"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=15412"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=15412"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=15412"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}