{"id":11414,"date":"2021-06-23T04:29:00","date_gmt":"2021-06-23T11:29:00","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=11414"},"modified":"2025-06-13T21:33:29","modified_gmt":"2025-06-14T04:33:29","slug":"using-fluent-bit-for-log-forwarding-processing-with-couchbase-server","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/","title":{"rendered":"Uso do Fluent Bit para encaminhamento e processamento de registros com o Couchbase Server"},"content":{"rendered":"<p><strong>Com o recente lan\u00e7amento do <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/announcing-couchbase-autonomous-operator-2-2\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Operador aut\u00f4nomo do Couchbase (CAO) 2.2<\/a><\/strong>Recentemente, fornecemos <a href=\"https:\/\/docs.couchbase.com\/operator\/current\/release-notes.html?ref=blog#log-forwarding-and-audit-log-management\" target=\"_blank\" rel=\"noopener\">Processamento e encaminhamento de registros<\/a> para as implementa\u00e7\u00f5es do Kubernetes usando a ferramenta OSS Fluent Bit. Isso tamb\u00e9m \u00e9 OSS e <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit\" target=\"_blank\" rel=\"noopener\">dispon\u00edvel no GitHub<\/a> ou <a href=\"https:\/\/hub.docker.com\/r\/couchbase\/fluent-bit\" target=\"_blank\" rel=\"noopener\">como um cont\u00eainer<\/a>.<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/fluent-bit-tips-tricks-log-forwarding-couchbase\/\">Bit fluente<\/a> come\u00e7ou como uma solu\u00e7\u00e3o nativa de encaminhamento de logs para alvos incorporados, para que voc\u00ea possa reutilizar nossa solu\u00e7\u00e3o Kubernetes para <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit#usage\" target=\"_blank\" rel=\"noopener\">implanta\u00e7\u00f5es no local<\/a> ou mesmo aqueles que usam o Kubernetes sem o CAO tamb\u00e9m.<\/p>\n<p>Esta postagem do blog o orientar\u00e1 sobre como fazer isso, juntamente com um pouco de conhecimento sobre os v\u00e1rios componentes envolvidos. Se voc\u00ea quiser apenas os detalhes, v\u00e1 para a se\u00e7\u00e3o <a href=\"#log-forwarding\">Encaminhamento de registros<\/a> se\u00e7\u00e3o. Tamb\u00e9m h\u00e1 um exemplo totalmente funcional <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit\/tree\/main\/tools\/loki-stack\" target=\"_blank\" rel=\"noopener\">dispon\u00edvel neste reposit\u00f3rio do GitHub<\/a>.<\/p>\n<h2>O que \u00e9 o Fluent Bit?<\/h2>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/fluent-bit-log-processing-architecture-diagram.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-11417\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/fluent-bit-log-processing-architecture-diagram-1024x712.png\" alt=\"An architecture diagram of Fluent Bit being used for log processing\" width=\"900\" height=\"626\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-log-processing-architecture-diagram-1024x712.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-log-processing-architecture-diagram-300x208.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-log-processing-architecture-diagram-768x534.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-log-processing-architecture-diagram-1536x1067.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-log-processing-architecture-diagram-20x14.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-log-processing-architecture-diagram-1320x917.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-log-processing-architecture-diagram.png 1724w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>O Fluent Bit \u00e9 uma solu\u00e7\u00e3o OSS amplamente utilizada e de alto desempenho para lidar com o processamento e o transporte de seus logs. Se voc\u00ea ainda n\u00e3o tem uma solu\u00e7\u00e3o de log centralizada, esta postagem demonstrar\u00e1 como voc\u00ea pode fornec\u00ea-la facilmente. Um exemplo espec\u00edfico \u00e9 o encaminhamento de registros de auditoria para qualquer um dos <a href=\"https:\/\/docs.fluentbit.io\/manual\/pipeline\/outputs\" target=\"_blank\" rel=\"noopener\">metas suportadas fornecidas pelo Fluent Bit<\/a> (por exemplo, S3).<\/p>\n<p>O Fluent Bit \u00e9 essencialmente um pipeline configur\u00e1vel que pode consumir <a href=\"https:\/\/docs.fluentbit.io\/manual\/pipeline\/inputs\" target=\"_blank\" rel=\"noopener\">v\u00e1rios tipos de entrada<\/a>analisar, filtrar ou transform\u00e1-los e, em seguida, envi\u00e1-los para <a href=\"https:\/\/docs.fluentbit.io\/manual\/pipeline\/inputs\" target=\"_blank\" rel=\"noopener\">v\u00e1rios destinos de sa\u00edda<\/a> incluindo coisas como S3, Splunk, Loki e Elasticsearch com o m\u00ednimo de esfor\u00e7o. H\u00e1 <a href=\"https:\/\/docs.fluentbit.io\/manual\/\" target=\"_blank\" rel=\"noopener\">muita documenta\u00e7\u00e3o dispon\u00edvel<\/a> que detalha como tudo isso funciona.<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/fluent-bit-multiple-output-destinations.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-11418\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/fluent-bit-multiple-output-destinations-1024x390.png\" alt=\"Fluent Bit being used for multiple output destinations\" width=\"900\" height=\"343\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-multiple-output-destinations-1024x390.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-multiple-output-destinations-300x114.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-multiple-output-destinations-768x292.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-multiple-output-destinations-1536x584.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-multiple-output-destinations-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-multiple-output-destinations-1320x502.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-multiple-output-destinations.png 1672w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<p>Ele \u00e9 amplamente usado nas implanta\u00e7\u00f5es do Kubernetes (por exemplo, o GKE e o AWS o implantam por padr\u00e3o) como um <em>conjunto de daemons<\/em> o que significa apenas um aplicativo (o <em>daemon<\/em>) que voc\u00ea executa em todos os n\u00f3s do Kubernetes que comp\u00f5em o cluster. O Fluent Bit geralmente faz o tails dos v\u00e1rios logs de cont\u00eaineres (a pr\u00e1tica recomendada para cont\u00eaineres \u00e9 fazer o log no <code>sa\u00edda<\/code> e o tempo de execu\u00e7\u00e3o do cont\u00eainer envia isso para um arquivo rotacionado localmente) e oferece suporte ao encaminhamento deles do n\u00f3 local para alguma ferramenta centralizada de gerenciamento de logs. Em vez de precisar implantar novos bin\u00e1rios, tudo isso \u00e9 gerenciado apenas por altera\u00e7\u00f5es de configura\u00e7\u00e3o.<\/p>\n<p>O Fluent Bit transforma os registros em <a href=\"https:\/\/docs.fluentbit.io\/manual\/concepts\/key-concepts#structured-messages\" target=\"_blank\" rel=\"noopener\">dados estruturados<\/a> em um formato interno comum (<a href=\"https:\/\/msgpack.org\/\" target=\"_blank\" rel=\"noopener\">MessagePack<\/a>um formato JSON bin\u00e1rio otimizado) para permitir que v\u00e1rios plug-ins trabalhem nele (por exemplo, para filtrar ou transformar algo com um plug-in gen\u00e9rico, voc\u00ea precisa que ele esteja em um formato comum) ou envi\u00e1-lo para uma sa\u00edda espec\u00edfica no formato apropriado para esse endpoint. Para fazer isso, o Fluent Bit usa <a href=\"https:\/\/docs.fluentbit.io\/manual\/concepts\/data-pipeline\/parser\" target=\"_blank\" rel=\"noopener\">analisadores<\/a>. No entanto, ele suporta apenas a leitura de toda a linha em um arquivo como um \u00fanico par de valores-chave para simplificar a convers\u00e3o e como uma alternativa se a an\u00e1lise falhar.<\/p>\n<h2>Solu\u00e7\u00e3o de registro do Couchbase com Fluent Bit<\/h2>\n<p>Pegamos a solu\u00e7\u00e3o OSS Fluent Bit e a estendemos para satisfazer <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit#summary\" target=\"_blank\" rel=\"noopener\">algumas necessidades espec\u00edficas do Couchbase<\/a>como, por exemplo:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>Oferecer suporte \u00e0 altera\u00e7\u00e3o din\u00e2mica da configura\u00e7\u00e3o sem reiniciar o Couchbase Server e acionar um rebalanceamento. Esse \u00e9 um aspecto importante para o caso de uso do CAO, mas provavelmente menos importante no local.<\/li>\n<li>Suporte \u00e0 reda\u00e7\u00e3o em voo e pr\u00e9-processamento de relat\u00f3rios de reequil\u00edbrio.<\/li>\n<li>Processar os v\u00e1rios arquivos de registro com uma abordagem comum.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Desses, o mais importante para implanta\u00e7\u00f5es no local \u00e9 lidar com os v\u00e1rios arquivos de registro.<\/p>\n<p>Os arquivos de registro produzidos pelo <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/capella\/\" target=\"_blank\" rel=\"noopener\">Servidor Couchbase<\/a> est\u00e3o em v\u00e1rios formatos distintos e algumas das instru\u00e7\u00f5es de registro abrangem v\u00e1rias linhas, portanto, confiar no envio linha por linha n\u00e3o \u00e9 o ideal. A maioria das ferramentas pode lidar com isso (por exemplo, o PromTail tamb\u00e9m pode analisar instru\u00e7\u00f5es de v\u00e1rias linhas), mas isso exigiria uma configura\u00e7\u00e3o espec\u00edfica, enquanto a nossa solu\u00e7\u00e3o j\u00e1 resolve tudo isso.<\/p>\n<p>Um conjunto b\u00e1sico de analisadores foi produzido para <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit#logs-supported\" target=\"_blank\" rel=\"noopener\">lidar com os v\u00e1rios registros<\/a> e isso tamb\u00e9m foi contribu\u00eddo para o projeto OSS Fluent Bit: A partir da vers\u00e3o 1.7.6+, os analisadores s\u00e3o <a href=\"https:\/\/github.com\/fluent\/fluent-bit\/blob\/v1.7.6\/conf\/parsers_extra.conf#L85\" target=\"_blank\" rel=\"noopener\">dispon\u00edvel na imagem oficial e na instala\u00e7\u00e3o bin\u00e1ria<\/a>. Isso significa que tudo o que \u00e9 apresentado aqui \u00e9 totalmente OSS e pode ser usado sem nenhuma implanta\u00e7\u00e3o espec\u00edfica do Couchbase.<\/p>\n<h2>Usando o Grafana, o Prometheus e o Loki<\/h2>\n<p><a href=\"https:\/\/grafana.com\/oss\/\" target=\"_blank\" rel=\"noopener\">Grafana \u00e9 uma plataforma de observabilidade de c\u00f3digo aberto<\/a> que pode lidar com v\u00e1rias fontes de dados para mostrar o que a sua plataforma est\u00e1 fazendo em tempo real, al\u00e9m de acionar alertas quando determinadas condi\u00e7\u00f5es s\u00e3o atendidas. A mesma pilha pode incluir <a href=\"https:\/\/grafana.com\/oss\/prometheus\/\" target=\"_blank\" rel=\"noopener\">Prometeu<\/a> para monitoramento de m\u00e9tricas e <a href=\"https:\/\/grafana.com\/oss\/loki\/\" target=\"_blank\" rel=\"noopener\">Loki<\/a> para armazenamento e consulta de registros.<\/p>\n<p>Para esta postagem do blog, estou usando essas tecnologias como um espa\u00e7o reservado para uma plataforma de observabilidade centralizada equivalente que o Fluent Bit pode direcionar. \u00c9 simples execut\u00e1-la localmente como uma pilha de teste para fins de demonstra\u00e7\u00e3o aqui. Separadamente, o Couchbase j\u00e1 fornece um <a href=\"https:\/\/github.com\/couchbase\/couchbase-exporter\" target=\"_blank\" rel=\"noopener\">Op\u00e7\u00e3o de monitoramento de m\u00e9tricas do Prometheus<\/a> que tamb\u00e9m poderia ser integrado aqui da mesma forma.<\/p>\n<p>As alternativas a essa pilha podem ser Splunk, Elasticsearch com Kibana ou solu\u00e7\u00f5es gerenciadas, como Amazon Cloudwatch ou Azure Log Analytics.<\/p>\n<h2>Como executar todas essas ferramentas no local<\/h2>\n<p>Esta se\u00e7\u00e3o fornecer\u00e1 detalhes em estilo de tutorial sobre a execu\u00e7\u00e3o de uma solu\u00e7\u00e3o de encaminhamento de logs usando o Fluent Bit em uma implementa\u00e7\u00e3o no local.<\/p>\n<p><strong>Observe que n\u00e3o h\u00e1 suporte oficial para a execu\u00e7\u00e3o de uma solu\u00e7\u00e3o de encaminhamento de logs com o Fluent Bit for Couchbase Server em uma implanta\u00e7\u00e3o no local.<\/strong><\/p>\n<p>A recomenda\u00e7\u00e3o \u00e9 usar o <a href=\"https:\/\/hub.docker.com\/r\/couchbase\/fluent-bit\" target=\"_blank\" rel=\"noopener\">Cont\u00eainer do Couchbase Fluent Bit<\/a> (ou o oficial do Fluent Bit). No entanto, o Fluent Bit tamb\u00e9m pode ser instalado diretamente e a configura\u00e7\u00e3o fornecida pela imagem do Couchbase Fluent Bit pode ser reutilizada para obter a maioria, mas n\u00e3o todos, os mesmos efeitos.<\/p>\n<p>Cada <a href=\"https:\/\/docs.couchbase.com\/server\/current\/install\/install-platforms.html?ref=blog\" target=\"_blank\" rel=\"noopener\">Plataforma suportada para o Couchbase Server 6.6.2+<\/a> pode executar cont\u00eaineres. <a href=\"https:\/\/docs.docker.com\/engine\/install\/\" target=\"_blank\" rel=\"noopener\">Consulte a documenta\u00e7\u00e3o para instalar o tempo de execu\u00e7\u00e3o do cont\u00eainer aqui<\/a>. Certifique-se de habilitar o suporte para cont\u00eaineres Linux em uma plataforma Windows.<\/p>\n<p>Para os fins desta postagem do blog, usarei as vers\u00f5es em cont\u00eainer do Couchbase Server apenas para executar um cluster local e mostrarei como conectar o cont\u00eainer do Couchbase Fluent Bit aos seus registros. Um bin\u00e1rio de servidor nativo tamb\u00e9m pode ser usado diretamente.<\/p>\n<p><strong>O cont\u00eainer do Couchbase Server \u00e9 executado apenas como um exemplo para gerar os registros.<\/strong> Se voc\u00ea j\u00e1 tiver um servidor em execu\u00e7\u00e3o, basta usar o diret\u00f3rio que ele tem para seus registros no diret\u00f3rio <a href=\"#log-forwarding\">Se\u00e7\u00e3o Encaminhamento de logs<\/a>. Da mesma forma, se voc\u00ea quiser usar o bin\u00e1rio nativo do Couchbase Server, poder\u00e1 faz\u00ea-lo.<\/p>\n<h3>Etapa 1: Implanta\u00e7\u00e3o do servidor Couchbase<\/h3>\n<p><em>Ignore esta se\u00e7\u00e3o se j\u00e1 tiver uma inst\u00e2ncia implementada. Se for uma vers\u00e3o em cont\u00eainer, certifique-se de que o diret\u00f3rio de log esteja exposto por meio de um <a href=\"https:\/\/docs.docker.com\/storage\/volumes\/\" target=\"_blank\" rel=\"noopener\">volume<\/a> ou <a href=\"https:\/\/docs.docker.com\/storage\/bind-mounts\/\" target=\"_blank\" rel=\"noopener\">montagem de liga\u00e7\u00e3o<\/a> no host (como fazemos no tutorial abaixo).<\/em><\/p>\n<p><a href=\"https:\/\/docs.couchbase.com\/server\/current\/install\/getting-started-docker.html?ref=blog\" target=\"_blank\" rel=\"noopener\">Siga as orienta\u00e7\u00f5es para implementar um conjunto de um ou mais cont\u00eaineres<\/a> como um cluster do Couchbase, mas com um volume para os registros:<\/p>\n<pre class=\"lang:default decode:true\">mkdir -p \/tmp\/couchbase-logs\r\ndocker run --rm -d --name db -p 8091-8096:8091-8096 -p 11210-11211:11210-11211 \\ \r\n-v \/tmp\/couchbase-logs\/:\/opt\/couchbase\/var\/lib\/couchbase\/logs\/ couchbase:6.6.2\r\n<\/pre>\n<p>O principal aqui \u00e9 garantir que os logs produzidos pelo Couchbase Server sejam expostos para que outro cont\u00eainer possa captur\u00e1-los; caso contr\u00e1rio, todos eles ficariam isolados dentro do cont\u00eainer. Para uma implanta\u00e7\u00e3o bin\u00e1ria nativa do Couchbase Server, ele estaria apenas gravando em um diret\u00f3rio no host, portanto isso n\u00e3o \u00e9 necess\u00e1rio.<\/p>\n<p>O servidor Couchbase <a href=\"https:\/\/docs.couchbase.com\/server\/current\/manage\/manage-logging\/manage-logging.html?ref=blog#log-file-listing\" target=\"_blank\" rel=\"noopener\">A documenta\u00e7\u00e3o detalha o local do diret\u00f3rio de registro<\/a>.<\/p>\n<p>Observe que isso usa um cont\u00eainer nomeado chamado <code>db<\/code> portanto, certifique-se de que ele ainda n\u00e3o exista, caso contr\u00e1rio, ser\u00e1 gerado um erro devido ao conflito com <code>docker rm db<\/code>. Nosso comando acima limpa automaticamente o cont\u00eainer ao sair.<\/p>\n<p>Agora, podemos verificar se os registros est\u00e3o sendo criados em nosso diret\u00f3rio:<\/p>\n<pre>ls -l \/tmp\/couchbase-logs \r\ntotal 1344\r\n-rw-r-----  1 patrickstephens  wheel   23330  4 Jun 11:11 babysitter.log\r\n-rw-r-----  1 patrickstephens  wheel     152  4 Jun 11:11 couchdb.log\r\n-rw-r-----  1 patrickstephens  wheel  330926  4 Jun 11:11 debug.log\r\n-rw-r-----  1 patrickstephens  wheel       0  4 Jun 11:11 error.log\r\n-rw-r-----  1 patrickstephens  wheel    6926  4 Jun 11:11 goxdcr.log\r\n-rw-r-----  1 patrickstephens  wheel       0  4 Jun 11:11 http_access.log\r\n-rw-r-----  1 patrickstephens  wheel    2073  4 Jun 11:11 http_access_internal.log\r\n-rw-r-----  1 patrickstephens  wheel   73345  4 Jun 11:11 info.log\r\n-rw-r-----  1 patrickstephens  wheel    1928  4 Jun 11:11 json_rpc.log\r\n-rw-r-----  1 patrickstephens  wheel       0  4 Jun 11:11 mapreduce_errors.log\r\n-rw-r-----  1 patrickstephens  wheel    5303  4 Jun 11:11 memcached.log.000000.txt\r\n-rw-r-----  1 patrickstephens  wheel    1389  4 Jun 11:11 metakv.log\r\n-rw-r-----  1 patrickstephens  wheel   67103  4 Jun 11:11 ns_couchdb.log\r\ndrwxr-x---  2 patrickstephens  wheel      64  4 Jun 11:11 rebalance\r\n-rw-r-----  1 patrickstephens  wheel  144264  4 Jun 11:11 reports.log\r\n-rw-r-----  1 patrickstephens  wheel    4803  4 Jun 11:11 stats.log\r\n-rw-r-----  1 patrickstephens  wheel       0  4 Jun 11:11 views.log\r\n-rw-r-----  1 patrickstephens  wheel       0  4 Jun 11:11 xdcr_target.log\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Para os fins desta implementa\u00e7\u00e3o, n\u00e3o precisamos realmente configurar o cluster, mas \u00e9 \u00fatil fazer isso para obter os registros e dados adequados. <a href=\"https:\/\/docs.couchbase.com\/server\/current\/install\/getting-started-docker.html?ref=blog#section_jvt_zvj_42b\" target=\"_blank\" rel=\"noopener\">Siga as instru\u00e7\u00f5es na documenta\u00e7\u00e3o oficial<\/a> para configurar o cluster por meio da interface do usu\u00e1rio e importar alguns dados de amostra, se desejar.<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/couchbase-server-cluster-configuration.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-11419\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/couchbase-server-cluster-configuration-1024x584.png\" alt=\"Couchbase Server cluster configuration\" width=\"900\" height=\"513\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/couchbase-server-cluster-configuration-1024x584.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/couchbase-server-cluster-configuration-300x171.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/couchbase-server-cluster-configuration-768x438.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/couchbase-server-cluster-configuration-1536x875.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/couchbase-server-cluster-configuration-20x11.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/couchbase-server-cluster-configuration-1320x752.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/couchbase-server-cluster-configuration.png 1897w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<p><em>Se quiser executar v\u00e1rios cont\u00eaineres no mesmo n\u00f3 para simular um cluster do Couchbase Server com v\u00e1rios n\u00f3s, certifique-se de usar um diret\u00f3rio (ou volume) de log separado para cada cont\u00eainer. Em seguida, execute uma imagem do Couchbase Fluent Bit por cont\u00eainer do Couchbase Server montando cada diret\u00f3rio de acordo com a pr\u00f3xima se\u00e7\u00e3o sobre Encaminhamento de log.<\/em><\/p>\n<h3 id=\"log-forwarding\">Etapa 2: Encaminhamento de registros<\/h3>\n<p><em>A ess\u00eancia da postagem do blog est\u00e1 nesta se\u00e7\u00e3o: Como configurar os logs do Couchbase Server para serem processados e encaminhados pelo Couchbase Fluent Bit?<\/em><\/p>\n<p>Depois de configurar o cluster e, opcionalmente, adicionar alguns buckets, dados de amostra etc., podemos executar o cont\u00eainer do Fluent Bit. Isso \u00e9 bastante simples quando se usa a imagem do Fluent Bit do Couchbase:<\/p>\n<pre>docker run --rm -d --name logger -v \/tmp\/couchbase-logs\/:\/opt\/couchbase\/var\/lib\/couchbase\/logs\/:ro \\\r\n-e COUCHBASE_LOGS=\/opt\/couchbase\/var\/lib\/couchbase\/logs\/ couchbase\/fluent-bit:1.0.1\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Como voc\u00ea pode ver aqui, montamos nosso diret\u00f3rio local e o especificamos como uma vari\u00e1vel de ambiente (para que voc\u00ea possa mont\u00e1-lo em outro local no cont\u00eainer e simplesmente apont\u00e1-lo para ele). \u00c9 assim que voc\u00ea o usa com um Couchbase Server implantado nativamente: Monte o diret\u00f3rio local para os logs no cont\u00eainer em vez do diret\u00f3rio tempor\u00e1rio usado neste exemplo.<\/p>\n<p>Consulte a documenta\u00e7\u00e3o oficial do <a href=\"https:\/\/docs.couchbase.com\/server\/current\/manage\/manage-logging\/manage-logging.html?ref=blog#log-file-locations\" target=\"_blank\" rel=\"noopener\">os detalhes espec\u00edficos de onde o Couchbase Server armazena seus registros<\/a>. Esse diret\u00f3rio base \u00e9 o que precisaria ser montado na imagem do Couchbase Fluent Bit, conforme descrito acima. Esteja ciente dos problemas de permiss\u00f5es tamb\u00e9m.<\/p>\n<p>O <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit#configuration\" target=\"_blank\" rel=\"noopener\">A documenta\u00e7\u00e3o do reposit\u00f3rio do Couchbase Fluent Bit especifica as v\u00e1rias op\u00e7\u00f5es de configura\u00e7\u00e3o<\/a> e seus valores padr\u00e3o. Observe que o local padr\u00e3o para os logs a serem processados na vers\u00e3o 1.0.1 do Couchbase Fluent Bit da imagem \u00e9 ligeiramente diferente daquele usado pelo Couchbase Server 6.6.2, portanto, n\u00f3s o substitu\u00edmos acima para usar o mesmo local em ambos. (Vers\u00f5es posteriores da imagem do Couchbase Fluent Bit se alinham com o local do Couchbase Server, mas introduzem outros recursos fora do escopo desta postagem).<\/p>\n<p>Agora, o cont\u00eainer deve estar em execu\u00e7\u00e3o e processando os logs do diret\u00f3rio que temos localmente para enviar ao seu fluxo de sa\u00edda padr\u00e3o por padr\u00e3o. Com o Fluent Bit, podemos ver isso por meio de uma chamada para <code>Registro de logs do docker<\/code> que deve mostrar os logs sendo emitidos \u00e0 medida que s\u00e3o atualizados:<\/p>\n<pre>[0] couchbase.log.xdcr: [1622801916.603000000, {\"filename\"=&gt;\"\/opt\/couchbase\/var\/lib\/couchbase\/logs\/\/goxdcr.log\", \"timestamp\"=&gt;\"2021-06-04T10:18:36.603Z\", \"level\"=&gt;\"INFO\", \"message\"=&gt;\" GOXDCR.ResourceMgr: Resource Manager State = overallTP: 0 highTP: 0 highExist: false lowExist: false backlogExist: false maxTP: 0 highTPNeeded: 0 highTokens: 0 maxTokens: 0 lowTPLimit: 0 calibration: None dcpAction: Reset processCpu: 1 idleCpu: 95\", \"pod\"=&gt;\"c901775dec2b\", \"logshipper\"=&gt;\"couchbase.sidecar.fluentbit\"}]\r\n[0] couchbase.log.debug: [1622801986.855000000, {\"filename\"=&gt;\"\/opt\/couchbase\/var\/lib\/couchbase\/logs\/\/debug.log\", \"logger\"=&gt;\"ns_server\", \"level\"=&gt;\"debug\", \"timestamp\"=&gt;\"2021-06-04T10:19:46.855Z\", \"message\"=&gt;\"ns_1@cb.local:compaction_daemon&lt;0.532.0&gt;:compaction_daemon:process_scheduler_message:1306]No buckets to compact for compact_views. Rescheduling compaction.\", \"pod\"=&gt;\"c901775dec2b\", \"logshipper\"=&gt;\"couchbase.sidecar.fluentbit\"}]\r\n[0] couchbase.log.http_access_internal: [1622801986.000000000, {\"filename\"=&gt;\"\/opt\/couchbase\/var\/lib\/couchbase\/logs\/\/http_access_internal.log\", \"host\"=&gt;\"127.0.0.1\", \"user\"=&gt;\"@goxdcr-cbauth\", \"timestamp\"=&gt;\"04\/Jun\/2021:10:19:46 +0000\", \"method\"=&gt;\"GET\", \"path\"=&gt;\"\/pools\/nodes\", \"code\"=&gt;\"404\", \"size\"=&gt;\"14\", \"client\"=&gt;\"couchbase-goxdcr\/6.6.2\", \"pod\"=&gt;\"c901775dec2b\", \"logshipper\"=&gt;\"couchbase.sidecar.fluentbit\"}]\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Este \u00e9 apenas um exemplo da sa\u00edda que voc\u00ea pode ter.<\/p>\n<p>Observe que cada arquivo de registro <a href=\"https:\/\/docs.fluentbit.io\/manual\/concepts\/key-concepts#tag\" target=\"_blank\" rel=\"noopener\">tem seu pr\u00f3prio fluxo usando uma tag Fluent Bit<\/a> no formato: <code>couchbase.log.<\/code>. Isso permite que voc\u00ea execute diferentes processamentos ou roteamentos de logs individuais. Por exemplo, os logs de auditoria podem precisar ir para um endpoint espec\u00edfico diferente dos demais ou voc\u00ea pode querer filtrar as linhas de um determinado log. Voc\u00ea pode at\u00e9 mesmo combinar v\u00e1rias entradas ou a mesma entrada com sa\u00eddas diferentes.<\/p>\n<p>A execu\u00e7\u00e3o do cont\u00eainer pode ser feita como parte de um script de inicializa\u00e7\u00e3o com <code>systemd<\/code> ou similar, como seria o caso do Couchbase Server. O tempo de execu\u00e7\u00e3o do cont\u00eainer tamb\u00e9m pode <a href=\"https:\/\/docs.docker.com\/engine\/reference\/run\/#restart-policies---restart\" target=\"_blank\" rel=\"noopener\">iniciar automaticamente os cont\u00eaineres especificados todas as vezes<\/a>.<\/p>\n<h3>Etapa 3: Visualiza\u00e7\u00e3o dos registros em tempo real no Grafana<\/h3>\n<p>A configura\u00e7\u00e3o padr\u00e3o fornecida pelo cont\u00eainer \u00e9 enviar todos os logs para uma sa\u00edda padr\u00e3o. No entanto, voc\u00ea pode fornecer seu pr\u00f3prio arquivo de configura\u00e7\u00e3o para fazer coisas diferentes sem nenhuma outra altera\u00e7\u00e3o. A capacidade de modificar o processamento e o encaminhamento de logs \u00e9 apenas uma simples altera\u00e7\u00e3o de configura\u00e7\u00e3o, o que \u00e9 um dos principais benef\u00edcios do Fluent Bit.<\/p>\n<p>Para destacar isso, vamos executar uma vers\u00e3o local do <a href=\"https:\/\/grafana.com\/docs\/loki\/latest\/overview\/\" target=\"_blank\" rel=\"noopener\">Pilha Loki<\/a>que \u00e9 o Grafana mais o Loki para captura de registros (e o Prometheus para captura de m\u00e9tricas). Em seguida, configuraremos nosso cont\u00eainer para enviar logs ao Loki para que possamos visualiz\u00e1-los graficamente no Grafana. A documenta\u00e7\u00e3o do Loki e do Grafana apresenta maneiras alternativas de implantar a pilha do Loki, portanto, consulte a documenta\u00e7\u00e3o vinculada acima para obter todos os detalhes.<\/p>\n<p>A <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit\/blob\/main\/tools\/loki-stack\" target=\"_blank\" rel=\"noopener\">O exemplo de trabalho completo da se\u00e7\u00e3o abaixo \u00e9 fornecido no reposit\u00f3rio do Couchbase Fluent Bit no GitHub<\/a> usando <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-using-docker-compose\/\">Docker Compose<\/a> para executar os cont\u00eaineres, todos configurados corretamente.<\/p>\n<p>Certifique-se de interromper nosso cont\u00eainer de encaminhamento de logs configurado anteriormente. Voc\u00ea tamb\u00e9m pode executar outro; apenas certifique-se de dar a ele um nome diferente, como <code>docker stop logger<\/code>.<\/p>\n<p>Agora, execute o Loki e o Grafana, certificando-se de expor as portas necess\u00e1rias para cada um (<code>3100<\/code> e <code>3000<\/code> respectivamente):<\/p>\n<pre class=\"lang:default decode:true\">docker run --rm -d --name loki -p 3100:3100 grafana\/loki:2.0.0 -config.file=\/etc\/loki\/local-config.yaml\r\ndocker run --rm -d --name grafana -p 3000:3000 -e GF_SECURITY_ADMIN_PASSWORD=password grafana\/grafana:7.5.2\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Voc\u00ea pode verificar se ambos foram iniciados corretamente com uma chamada para <code>docker ps<\/code> e ver os registros do Fluent Bit com uma chamada para <code>Registros de docas<\/code>.<\/p>\n<p>Para dar suporte ao encaminhamento para o Loki, vamos obter o endere\u00e7o IP do cont\u00eainer local que o est\u00e1 executando. Normalmente, voc\u00ea o implantaria em um host ou nome de servi\u00e7o resolv\u00edvel, mas, para a demonstra\u00e7\u00e3o, estamos executando tudo como cont\u00eaineres locais.<\/p>\n<p>Se voc\u00ea executar <code>docker inspeciona o loki<\/code> ele produzir\u00e1 uma s\u00e9rie de informa\u00e7\u00f5es sobre o cont\u00eainer, com uma se\u00e7\u00e3o para rede:<\/p>\n<pre>            \"Networks\": {\r\n                \"bridge\": {\r\n                    \"IPAMConfig\": null,\r\n                    \"Links\": null,\r\n                    \"Aliases\": null,\r\n                    \"NetworkID\": \"eb681161db08003e6401b745b0a51c1e1183bee13462fae74ea68ab9736baf34\",\r\n                    \"EndpointID\": \"28df33de36007bff0a00c14aa4617d235dadd882e5109feaf536fd1b9b980afd\",\r\n                    \"Gateway\": \"172.17.0.1\",\r\n                    \"IPAddress\": \"172.17.0.4\",\r\n                    \"IPPrefixLen\": 16,\r\n                    \"IPv6Gateway\": \"\",\r\n                    \"GlobalIPv6Address\": \"\",\r\n                    \"GlobalIPv6PrefixLen\": 0,\r\n                    \"MacAddress\": \"02:42:ac:11:00:04\",\r\n                    \"DriverOpts\": null\r\n                }\r\n            }\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Para obter apenas o endere\u00e7o IP, podemos <a href=\"https:\/\/docs.docker.com\/engine\/reference\/commandline\/inspect\/#get-an-instances-ip-address\" target=\"_blank\" rel=\"noopener\">formatar a consulta de acordo com a documenta\u00e7\u00e3o oficial<\/a>:<\/p>\n<pre>docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' loki\r\n172.17.0.4\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Na minha implanta\u00e7\u00e3o, o endere\u00e7o IP \u00e9 172.17.0.4, mas o seu pode ser diferente, portanto, substitua-o depois.<\/p>\n<p>O exemplo fornecido no reposit\u00f3rio tamb\u00e9m provisiona automaticamente o Grafana para usar o Loki, mas precisamos fazer isso manualmente aqui. Se voc\u00ea se conectar ao <a href=\"https:\/\/localhost:3000\/login\" target=\"_blank\" rel=\"noopener\">https:\/\/localhost:3000\/login<\/a> ent\u00e3o voc\u00ea pode fazer login no Grafana como o usu\u00e1rio <code>administrador<\/code> usu\u00e1rio com o <code>senha<\/code> na vari\u00e1vel de ambiente acima no comando de execu\u00e7\u00e3o do cont\u00eainer do Grafana.<\/p>\n<p>Agora precisamos adicionar o Loki como uma fonte de dados em: <a href=\"https:\/\/localhost:3000\/datasources\" target=\"_blank\" rel=\"noopener\">https:\/\/localhost:3000\/datasources<\/a><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/adding-loki-as-a-data-source-fluent-bit.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11420\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/adding-loki-as-a-data-source-fluent-bit.png\" alt=\"Adding Loki as a data source with Fluent Bit\" width=\"936\" height=\"736\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/adding-loki-as-a-data-source-fluent-bit.png 936w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/adding-loki-as-a-data-source-fluent-bit-300x236.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/adding-loki-as-a-data-source-fluent-bit-768x604.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/adding-loki-as-a-data-source-fluent-bit-20x16.png 20w\" sizes=\"auto, (max-width: 936px) 100vw, 936px\" \/><\/a><\/p>\n<p>Configure a fonte de dados usando o endere\u00e7o IP do cont\u00eainer do Loki e a porta <code>3100<\/code> conforme encaminhado quando executamos o cont\u00eainer pela primeira vez:<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/loki-container-data-source-connection.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11421\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/loki-container-data-source-connection.png\" alt=\"A data source connection for the Loki container\" width=\"912\" height=\"1006\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/loki-container-data-source-connection.png 912w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/loki-container-data-source-connection-272x300.png 272w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/loki-container-data-source-connection-768x847.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/loki-container-data-source-connection-300x331.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/loki-container-data-source-connection-18x20.png 18w\" sizes=\"auto, (max-width: 912px) 100vw, 912px\" \/><\/a><\/p>\n<h3>Etapa 4: Configura\u00e7\u00e3o personalizada<\/h3>\n<p>Agora que temos o Loki e o Grafana configurados corretamente, vamos criar uma nova configura\u00e7\u00e3o para que o nosso encaminhador de logs envie os logs para ele.<\/p>\n<p>Como parte de nossa implanta\u00e7\u00e3o do Couchbase Fluent Bit, dividimos v\u00e1rias se\u00e7\u00f5es da configura\u00e7\u00e3o em arquivos reutiliz\u00e1veis para incluir, de modo que pud\u00e9ssemos usar apenas um arquivo de duas linhas para isso, como este abaixo:<\/p>\n<pre>@include \/fluent-bit\/etc\/fluent-bit.conf\r\n@include \/fluent-bit\/etc\/couchbase\/out-loki.conf\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Esse arquivo agora inclui nossa configura\u00e7\u00e3o padr\u00e3o existente mais um arquivo <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit\/blob\/main\/conf\/couchbase\/out-loki.conf\" target=\"_blank\" rel=\"noopener\">sa\u00edda para Loki<\/a> que n\u00e3o \u00e9 usado por padr\u00e3o, mas est\u00e1 inclu\u00eddo:<\/p>\n<pre>[OUTPUT]\r\n    name   loki\r\n    match  *\r\n    host loki\r\n    labels job=couchbase-fluentbit\r\n    label_keys $filename,$level\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Como voc\u00ea pode ver, essa sa\u00edda corresponde a todas as entradas e as envia para um host chamado <code>loki<\/code>. Para esta demonstra\u00e7\u00e3o, usaremos o endere\u00e7o IP espec\u00edfico do cont\u00eainer que est\u00e1 executando o Loki no arquivo de configura\u00e7\u00e3o:<\/p>\n<pre>cat &lt; \/tmp\/fluent-bit.conf &gt;&gt; __EOF__\r\n@include \/fluent-bit\/etc\/fluent-bit.conf\r\n\r\n[OUTPUT]\r\n    name   loki\r\n    match  *\r\n    host 172.17.0.4\r\n    labels job=couchbase-fluentbit\r\n    label_keys $filename,$level\r\n\r\n__EOF__\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Agora podemos executar o encaminhamento de logs novamente, mas usando essa configura\u00e7\u00e3o personalizada. Certifique-se de renome\u00e1-la ou interromper a anterior:<\/p>\n<pre class=\"lang:default decode:true\">docker run --rm -d --name logger -v \/tmp\/couchbase-logs\/:\/opt\/couchbase\/var\/lib\/couchbase\/logs\/:ro -e COUCHBASE_LOGS=\/opt\/couchbase\/var\/lib\/couchbase\/logs\/ -v \/tmp\/fluent-bit.conf:\/fluent-bit\/config\/fluent-bit.conf:ro couchbase\/fluent-bit:1.0.1<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Observe que tamb\u00e9m executamos tudo como um sistema de arquivos montado somente para leitura, de modo que n\u00e3o podemos modificar nada no cont\u00eainer - os logs brutos n\u00e3o s\u00e3o tocados.<\/p>\n<h3>Etapa 5: Visualiza\u00e7\u00e3o de nossos registros ao vivo<\/h3>\n<p>Agora os registros devem come\u00e7ar a ser enviados para o Loki e o Grafana. Voc\u00ea pode visualiz\u00e1-los em: <a href=\"https:\/\/localhost:3000\/explore?orgId=1&amp;left=%5B%22now-1h%22,%22now%22,%22Loki%22,%7B%22expr%22:%22%7Bjob%3D%5C%22couchbase-fluentbit%5C%22%7D%22%7D%5D\" target=\"_blank\" rel=\"noopener\">https:\/\/localhost:3000\/explore?orgId=1&amp;left=%5B%22now-1h%22,%22now%22,%22Loki%22,%7B%22expr%22:%22%7Bjob%3D%5C%22couchbase-fluentbit%5C%22%7D%22%7D%5D<\/a><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/logs-viewed-in-loki-and-grafana.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-11422\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/logs-viewed-in-loki-and-grafana-1024x732.png\" alt=\"Database logs viewed in Loki and Grafana\" width=\"900\" height=\"643\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/logs-viewed-in-loki-and-grafana-1024x732.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/logs-viewed-in-loki-and-grafana-300x215.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/logs-viewed-in-loki-and-grafana-768x549.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/logs-viewed-in-loki-and-grafana-20x14.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/logs-viewed-in-loki-and-grafana-1320x944.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/logs-viewed-in-loki-and-grafana.png 1481w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<p>Agora voc\u00ea pode criar pain\u00e9is e visualizar os registros diretamente ao vivo no Grafana.<\/p>\n<h2>Problemas conhecidos<\/h2>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h4>Entrada fora de ordem<\/h4>\n<p>Voc\u00ea pode ver erros no registro do Fluent Bit como este ao enviar para o Loki:<\/p>\n<pre>[2021\/06\/04 11:03:50] [error] [output:loki:loki.1] 172.17.0.4:3100, HTTP status=400\r\nentry with timestamp 2021-06-04 11:03:43.507 +0000 UTC ignored, reason: 'entry out of order' for stream: {job=\"couchbase-fluentbit\"}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Este \u00e9 um <a href=\"https:\/\/grafana.com\/docs\/loki\/latest\/best-practices\/#logs-must-be-in-increasing-time-order-per-stream\" target=\"_blank\" rel=\"noopener\">conhecido<\/a> <a href=\"https:\/\/github.com\/grafana\/loki\/issues\/898\" target=\"_blank\" rel=\"noopener\">problema<\/a> com o Loki. Ele se baseia no recebimento de todos os fluxos em ordem, mas ao tentar multiplexar v\u00e1rios fluxos, e com o jitter da rede, \u00e0s vezes isso n\u00e3o \u00e9 poss\u00edvel. Normalmente, \u00e9 melhor escolher fluxos espec\u00edficos para enviar com plug-ins de sa\u00edda separados do Loki e aplicar threads de trabalho para cada plug-in. Como esta postagem do blog usa o Loki apenas para demonstrar a sa\u00edda de log, esse problema n\u00e3o ser\u00e1 abordado aqui.<\/p>\n<h4>Novas vers\u00f5es do Couchbase Fluent Bit<\/h4>\n<p>Esta postagem do blog aborda a vers\u00e3o 1.0.1 da imagem do Couchbase Fluent Bit, que \u00e9 a vers\u00e3o oficialmente compat\u00edvel com o CAO 2.2. O Couchbase Autonomous Operator pode usar qualquer vers\u00e3o como um sidecar, incluindo imagens completamente diferentes, mas elas n\u00e3o seriam compat\u00edveis com quaisquer problemas que surgissem.<\/p>\n<p>As vers\u00f5es 1.0.2 e 1.0.3 da imagem incluem algumas integra\u00e7\u00f5es e aprimoramentos adicionais do Kubernetes, especialmente na integra\u00e7\u00e3o com o Loki. <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit#releases\" target=\"_blank\" rel=\"noopener\">Consulte as notas de vers\u00e3o<\/a> para obter mais detalhes.<\/p>\n<p>Infelizmente, algumas dessas altera\u00e7\u00f5es significam que vari\u00e1veis de ambiente adicionais devem ser especificadas ao executar o cont\u00eainer (feito automaticamente como parte do CAO). Sem elas, o cont\u00eainer n\u00e3o ser\u00e1 executado, indicando que est\u00e3o faltando. Elas podem ser especificadas na linha de comando usando o comando <code>-e key=value<\/code> mostrada anteriormente. Isso ser\u00e1 resolvido na pr\u00f3xima vers\u00e3o da imagem do Couchbase Fluent Bit em change <a href=\"https:\/\/issues.couchbase.com\/browse\/K8S-2171\/?ref=blog\" target=\"_blank\" rel=\"noopener\">K8S-2171<\/a>.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Esperamos que isso lhe d\u00ea uma boa amostra de como voc\u00ea pode usar o encaminhamento de logs com o Couchbase Server e o Fluent Bit.<\/p>\n<p>J\u00e1 existem op\u00e7\u00f5es de monitoramento do Prometheus dispon\u00edveis para o Couchbase Server usando o <a href=\"https:\/\/github.com\/couchbase\/couchbase-exporter\" target=\"_blank\" rel=\"noopener\">Exportador do Couchbase Prometheus<\/a> que pode ser integrado a essa mesma pilha do Grafana em um \u00fanico painel de observabilidade. Os SDKs do Couchbase fornecem suporte de rastreamento com o Jaeger, que tamb\u00e9m pode ser <a href=\"https:\/\/grafana.com\/docs\/grafana\/latest\/datasources\/jaeger\/\" target=\"_blank\" rel=\"noopener\">integrado ao Grafana<\/a>. Esses t\u00f3picos s\u00e3o objeto de postagens de blog existentes e futuras, portanto, fique atento.<\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>With the recent release of Couchbase Autonomous Operator (CAO) 2.2, we have recently provided log processing and forwarding for the Kubernetes deployments using the OSS Fluent Bit tooling. This is also OSS and available on GitHub or as a container. [&hellip;]<\/p>","protected":false},"author":77454,"featured_media":11415,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,9284,1816,2322,2334,2389],"tags":[9239,2384,1545,9274,9277,2383],"ppma_author":[9279],"class_list":["post-11414","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-autonomous-operator","category-couchbase-server","category-kubernetes","category-monitoring","category-solutions","tag-fluent-bit","tag-grafana","tag-kubernetes","tag-log-forwarding","tag-loki","tag-prometheus"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Fluent Bit: Log Forwarding + Processing Using Docker Compose<\/title>\n<meta name=\"description\" content=\"Find out how to use Fluent Bit for log forwarding and processing with Couchbase Server, along with background on the various components involved.\" \/>\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\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using Fluent Bit for Log Forwarding &amp; Processing with Couchbase Server\" \/>\n<meta property=\"og:description\" content=\"Find out how to use Fluent Bit for log forwarding and processing with Couchbase Server, along with background on the various components involved.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-23T11:29:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:33:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-log-managment-couchbase-server.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"680\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Patrick Stephens, Senior Software Engineer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Patrick Stephens, Senior Software Engineer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/\"},\"author\":{\"name\":\"Patrick Stephens, Senior Software Engineer\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7eea0d8b639e8e770056531b6faa551b\"},\"headline\":\"Using Fluent Bit for Log Forwarding &amp; Processing with Couchbase Server\",\"datePublished\":\"2021-06-23T11:29:00+00:00\",\"dateModified\":\"2025-06-14T04:33:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/\"},\"wordCount\":2636,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-log-managment-couchbase-server.jpg\",\"keywords\":[\"Fluent Bit\",\"Grafana\",\"kubernetes\",\"log forwarding\",\"Loki\",\"Prometheus\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Autonomous Operator\",\"Couchbase Server\",\"Kubernetes\",\"Monitoring\",\"Solutions\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/\",\"name\":\"Fluent Bit: Log Forwarding + Processing Using Docker Compose\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-log-managment-couchbase-server.jpg\",\"datePublished\":\"2021-06-23T11:29:00+00:00\",\"dateModified\":\"2025-06-14T04:33:29+00:00\",\"description\":\"Find out how to use Fluent Bit for log forwarding and processing with Couchbase Server, along with background on the various components involved.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-log-managment-couchbase-server.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-log-managment-couchbase-server.jpg\",\"width\":1200,\"height\":680,\"caption\":\"Learn how to use Fluent Bit for log processing on-prem Couchbase Server deployments in this tutorial\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using Fluent Bit for Log Forwarding &amp; Processing with Couchbase Server\"}]},{\"@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\/7eea0d8b639e8e770056531b6faa551b\",\"name\":\"Patrick Stephens, Senior Software Engineer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/a994b426058a61810b4baad40300bed9\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/patrick-stephens-couchbase.jpeg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/patrick-stephens-couchbase.jpeg\",\"caption\":\"Patrick Stephens, Senior Software Engineer\"},\"description\":\"Patrick Stephens is a Senior Software Engineer at Couchbase based in the UK.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/patrick-stephens\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Fluent Bit: Log Forwarding + Processing Using Docker Compose","description":"Find out how to use Fluent Bit for log forwarding and processing with Couchbase Server, along with background on the various components involved.","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\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/","og_locale":"pt_BR","og_type":"article","og_title":"Using Fluent Bit for Log Forwarding &amp; Processing with Couchbase Server","og_description":"Find out how to use Fluent Bit for log forwarding and processing with Couchbase Server, along with background on the various components involved.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-06-23T11:29:00+00:00","article_modified_time":"2025-06-14T04:33:29+00:00","og_image":[{"width":1200,"height":680,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-log-managment-couchbase-server.jpg","type":"image\/jpeg"}],"author":"Patrick Stephens, Senior Software Engineer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Patrick Stephens, Senior Software Engineer","Est. reading time":"13 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/"},"author":{"name":"Patrick Stephens, Senior Software Engineer","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7eea0d8b639e8e770056531b6faa551b"},"headline":"Using Fluent Bit for Log Forwarding &amp; Processing with Couchbase Server","datePublished":"2021-06-23T11:29:00+00:00","dateModified":"2025-06-14T04:33:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/"},"wordCount":2636,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-log-managment-couchbase-server.jpg","keywords":["Fluent Bit","Grafana","kubernetes","log forwarding","Loki","Prometheus"],"articleSection":["Best Practices and Tutorials","Couchbase Autonomous Operator","Couchbase Server","Kubernetes","Monitoring","Solutions"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/","url":"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/","name":"Fluent Bit: Log Forwarding + Processing Using Docker Compose","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-log-managment-couchbase-server.jpg","datePublished":"2021-06-23T11:29:00+00:00","dateModified":"2025-06-14T04:33:29+00:00","description":"Find out how to use Fluent Bit for log forwarding and processing with Couchbase Server, along with background on the various components involved.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-log-managment-couchbase-server.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/fluent-bit-log-managment-couchbase-server.jpg","width":1200,"height":680,"caption":"Learn how to use Fluent Bit for log processing on-prem Couchbase Server deployments in this tutorial"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Using Fluent Bit for Log Forwarding &amp; Processing with Couchbase Server"}]},{"@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\/7eea0d8b639e8e770056531b6faa551b","name":"Patrick Stephens, engenheiro de software s\u00eanior","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/a994b426058a61810b4baad40300bed9","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/patrick-stephens-couchbase.jpeg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/patrick-stephens-couchbase.jpeg","caption":"Patrick Stephens, Senior Software Engineer"},"description":"Patrick Stephens \u00e9 engenheiro de software s\u00eanior da Couchbase, com sede no Reino Unido.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/patrick-stephens\/"}]}},"authors":[{"term_id":9279,"user_id":77454,"is_guest":0,"slug":"patrick-stephens","display_name":"Patrick Stephens, Senior Software Engineer","avatar_url":{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/patrick-stephens-couchbase.jpeg","url2x":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/patrick-stephens-couchbase.jpeg"},"first_name":"Patrick","last_name":"Stephens","user_url":"","author_category":"","description":"Patrick Stephens \u00e9 engenheiro de software s\u00eanior da Couchbase, com sede no Reino Unido."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/11414","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\/77454"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=11414"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/11414\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/11415"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=11414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=11414"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=11414"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=11414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}