{"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\/es\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/","title":{"rendered":"Uso de Fluent Bit para el reenv\u00edo y procesamiento de registros con Couchbase Server"},"content":{"rendered":"<p><strong>Con la reciente publicaci\u00f3n de <a href=\"https:\/\/www.couchbase.com\/blog\/es\/announcing-couchbase-autonomous-operator-2-2\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Operador aut\u00f3nomo de Couchbase (CAO) 2.2<\/a><\/strong>hemos proporcionado recientemente <a href=\"https:\/\/docs.couchbase.com\/operator\/current\/release-notes.html?ref=blog#log-forwarding-and-audit-log-management\" target=\"_blank\" rel=\"noopener\">procesamiento y reenv\u00edo de registros<\/a> para los despliegues de Kubernetes utilizando la herramienta OSS Fluent Bit. Esto tambi\u00e9n es OSS y <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit\" target=\"_blank\" rel=\"noopener\">disponible en GitHub<\/a> o <a href=\"https:\/\/hub.docker.com\/r\/couchbase\/fluent-bit\" target=\"_blank\" rel=\"noopener\">como contenedor<\/a>.<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/es\/fluent-bit-tips-tricks-log-forwarding-couchbase\/\">Bits fluidos<\/a> comenz\u00f3 como una soluci\u00f3n nativa de reenv\u00edo de registros para objetivos integrados, de modo que pueda reutilizar nuestra soluci\u00f3n Kubernetes para <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit#usage\" target=\"_blank\" rel=\"noopener\">implantaciones in situ<\/a> o incluso los que utilizan Kubernetes sin la CAO tambi\u00e9n.<\/p>\n<p>Esta entrada del blog le explicar\u00e1 c\u00f3mo hacerlo, junto con un poco de informaci\u00f3n sobre los diversos componentes implicados. Si s\u00f3lo desea los detalles saltar a la <a href=\"#log-forwarding\">Reenv\u00edo de registros<\/a> secci\u00f3n. Tambi\u00e9n hay un ejemplo que funciona perfectamente <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit\/tree\/main\/tools\/loki-stack\" target=\"_blank\" rel=\"noopener\">disponible en este repositorio de GitHub<\/a>.<\/p>\n<h2>\u00bfQu\u00e9 es 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>Fluent Bit es una soluci\u00f3n OSS ampliamente utilizada y de alto rendimiento para el procesamiento y transporte de sus registros. Si a\u00fan no dispone de una soluci\u00f3n de registro centralizada, este art\u00edculo le mostrar\u00e1 c\u00f3mo puede proporcionarla f\u00e1cilmente. Un ejemplo concreto es el reenv\u00edo de registros de auditor\u00eda a cualquiera de los <a href=\"https:\/\/docs.fluentbit.io\/manual\/pipeline\/outputs\" target=\"_blank\" rel=\"noopener\">objetivos compatibles proporcionados por Fluent Bit<\/a> (por ejemplo, S3).<\/p>\n<p>Fluent Bit es esencialmente un pipeline configurable que puede consumir <a href=\"https:\/\/docs.fluentbit.io\/manual\/pipeline\/inputs\" target=\"_blank\" rel=\"noopener\">m\u00faltiples tipos de entrada<\/a>analizarlos, filtrarlos o transformarlos y, a continuaci\u00f3n, enviarlos a <a href=\"https:\/\/docs.fluentbit.io\/manual\/pipeline\/inputs\" target=\"_blank\" rel=\"noopener\">m\u00faltiples destinos de salida<\/a> incluyendo cosas como S3, Splunk, Loki y Elasticsearch con un esfuerzo m\u00ednimo. Hay <a href=\"https:\/\/docs.fluentbit.io\/manual\/\" target=\"_blank\" rel=\"noopener\">mucha documentaci\u00f3n disponible<\/a> que explica en detalle c\u00f3mo funciona todo.<\/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>Se utiliza ampliamente en los despliegues de Kubernetes (por ejemplo, GKE y AWS lo despliegan por defecto) como un <em>daemonset<\/em> que s\u00f3lo significa una aplicaci\u00f3n (la <em>demonio<\/em>) que se ejecuta en todos los nodos Kubernetes que componen el cl\u00faster. Fluent Bit normalmente guarda los registros de los distintos contenedores (la mejor pr\u00e1ctica para los contenedores es registrarlos en <code>stdout<\/code> y el tiempo de ejecuci\u00f3n del contenedor empuja esto a un archivo rotado localmente) y soporta reenviarlos desde el nodo local a alguna herramienta centralizada de gesti\u00f3n de logs. En lugar de tener que desplegar nuevos binarios, todo se gestiona \u00fanicamente mediante cambios en la configuraci\u00f3n.<\/p>\n<p>Fluent Bit convierte los troncos en <a href=\"https:\/\/docs.fluentbit.io\/manual\/concepts\/key-concepts#structured-messages\" target=\"_blank\" rel=\"noopener\">datos estructurados<\/a> en un formato interno com\u00fan (<a href=\"https:\/\/msgpack.org\/\" target=\"_blank\" rel=\"noopener\">Paquete de mensajes<\/a>un formato JSON binario optimizado) para que varios plugins puedan trabajar con \u00e9l (por ejemplo, para filtrar o transformar algo con un plugin gen\u00e9rico es necesario que est\u00e9 en un formato com\u00fan) o enviarlo a una salida concreta en el formato apropiado para ese punto final. Para ello, Fluent Bit utiliza <a href=\"https:\/\/docs.fluentbit.io\/manual\/concepts\/data-pipeline\/parser\" target=\"_blank\" rel=\"noopener\">analizadores<\/a>. Sin embargo, admite la lectura de toda la l\u00ednea de un archivo como un \u00fanico par clave-valor para simplificar la conversi\u00f3n y como recurso en caso de que falle el an\u00e1lisis sint\u00e1ctico.<\/p>\n<h2>Soluci\u00f3n de registro de Couchbase con Fluent Bit<\/h2>\n<p>Hemos tomado la soluci\u00f3n OSS Fluent Bit y la hemos ampliado para satisfacer <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit#summary\" target=\"_blank\" rel=\"noopener\">algunas necesidades espec\u00edficas de Couchbase<\/a>como:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>Soportar cambios din\u00e1micos de configuraci\u00f3n sin reiniciar Couchbase Server y activar un rebalanceo. Esto es importante para el caso de uso de CAO, pero probablemente no tanto en las instalaciones.<\/li>\n<li>Apoyo a la redacci\u00f3n en vuelo y preprocesamiento de informes de reequilibrio.<\/li>\n<li>Procesamiento de los distintos archivos de registro con un enfoque com\u00fan.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>De todos ellos, el m\u00e1s importante para las implantaciones locales es la gesti\u00f3n de los distintos archivos de registro.<\/p>\n<p>Los archivos de registro producidos por <a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/capella\/\" target=\"_blank\" rel=\"noopener\">Servidor Couchbase<\/a> est\u00e1n en varios formatos distintos y algunas de las sentencias de registro abarcan varias l\u00edneas, por lo que confiar en el env\u00edo l\u00ednea por l\u00ednea no es lo ideal. La mayor\u00eda de las herramientas pueden hacerlo (por ejemplo, PromTail tambi\u00e9n puede analizar sentencias multil\u00ednea), pero requerir\u00edan una configuraci\u00f3n espec\u00edfica, mientras que nuestra soluci\u00f3n ya resuelve todo esto.<\/p>\n<p>Se ha elaborado un conjunto b\u00e1sico de analizadores sint\u00e1cticos para <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit#logs-supported\" target=\"_blank\" rel=\"noopener\">gestionar los distintos registros<\/a> y tambi\u00e9n se ha contribuido al proyecto OSS Fluent Bit: A partir de la versi\u00f3n 1.7.6, los analizadores sint\u00e1cticos son <a href=\"https:\/\/github.com\/fluent\/fluent-bit\/blob\/v1.7.6\/conf\/parsers_extra.conf#L85\" target=\"_blank\" rel=\"noopener\">disponible en la imagen oficial y la instalaci\u00f3n binaria<\/a>. Esto significa que todo lo presentado aqu\u00ed es completamente OSS y puede ser utilizado sin ning\u00fan despliegue espec\u00edfico de Couchbase.<\/p>\n<h2>Uso de Grafana, Prometheus y Loki<\/h2>\n<p><a href=\"https:\/\/grafana.com\/oss\/\" target=\"_blank\" rel=\"noopener\">Grafana es una plataforma de observabilidad de c\u00f3digo abierto<\/a> que puede manejar varias fuentes de datos para mostrarle lo que est\u00e1 haciendo su plataforma en tiempo real, as\u00ed como activar alertas cuando se cumplen determinadas condiciones. La misma pila podr\u00eda incluir <a href=\"https:\/\/grafana.com\/oss\/prometheus\/\" target=\"_blank\" rel=\"noopener\">Prometeo<\/a> para la supervisi\u00f3n de m\u00e9tricas y <a href=\"https:\/\/grafana.com\/oss\/loki\/\" target=\"_blank\" rel=\"noopener\">Loki<\/a> para el almacenamiento y consulta de registros.<\/p>\n<p>Para esta entrada de blog, estoy utilizando estas tecnolog\u00edas como un marcador de posici\u00f3n para una plataforma de observabilidad centralizada equivalente a la que Fluent Bit puede dirigirse. Es f\u00e1cil de ejecutar localmente como una pila de prueba para fines de demostraci\u00f3n aqu\u00ed. Por otro lado, Couchbase ya proporciona un <a href=\"https:\/\/github.com\/couchbase\/couchbase-exporter\" target=\"_blank\" rel=\"noopener\">Opci\u00f3n de supervisi\u00f3n de m\u00e9tricas de Prometheus<\/a> que tambi\u00e9n podr\u00eda integrarse aqu\u00ed de la misma manera.<\/p>\n<p>Las alternativas a esta pila podr\u00edan ser Splunk, Elasticsearch con Kibana o soluciones gestionadas como Amazon Cloudwatch o Azure Log Analytics.<\/p>\n<h2>C\u00f3mo ejecutar todas estas herramientas in situ<\/h2>\n<p>Esta secci\u00f3n proporcionar\u00e1 detalles de tipo tutorial sobre la ejecuci\u00f3n de una soluci\u00f3n de reenv\u00edo de logs utilizando Fluent Bit en un despliegue local.<\/p>\n<p><strong>Tenga en cuenta que la ejecuci\u00f3n de una soluci\u00f3n de reenv\u00edo de registros con Fluent Bit para Couchbase Server en una implementaci\u00f3n local no est\u00e1 soportada oficialmente.<\/strong><\/p>\n<p>La recomendaci\u00f3n es utilizar el <a href=\"https:\/\/hub.docker.com\/r\/couchbase\/fluent-bit\" target=\"_blank\" rel=\"noopener\">Contenedor Couchbase Fluent Bit<\/a> (o la oficial de Fluent Bit). Sin embargo, Fluent Bit tambi\u00e9n se puede instalar directamente y la configuraci\u00f3n proporcionada por la imagen Fluent Bit de Couchbase se puede reutilizar para lograr la mayor\u00eda de los mismos efectos, aunque no todos.<\/p>\n<p>Cada <a href=\"https:\/\/docs.couchbase.com\/server\/current\/install\/install-platforms.html?ref=blog\" target=\"_blank\" rel=\"noopener\">plataforma compatible con Couchbase Server 6.6.2+<\/a> pueden ejecutar contenedores. <a href=\"https:\/\/docs.docker.com\/engine\/install\/\" target=\"_blank\" rel=\"noopener\">Consulte la documentaci\u00f3n para instalar el tiempo de ejecuci\u00f3n del contenedor aqu\u00ed<\/a>. Aseg\u00farese de activar la compatibilidad con contenedores Linux en una plataforma Windows.<\/p>\n<p>Para los prop\u00f3sitos de esta entrada de blog, voy a utilizar las versiones en contenedor de Couchbase Server s\u00f3lo para ejecutar un cl\u00faster local y mostrar c\u00f3mo conectar el contenedor Couchbase Fluent Bit a sus registros. Tambi\u00e9n se puede utilizar directamente un binario de servidor nativo.<\/p>\n<p><strong>El contenedor Couchbase Server se ejecuta \u00fanicamente como ejemplo para generar los registros.<\/strong> Si ya tiene un servidor en funcionamiento, utilice el directorio que tiene para sus registros en el directorio <a href=\"#log-forwarding\">Secci\u00f3n de reenv\u00edo de registros<\/a>. Del mismo modo, si desea utilizar el binario nativo para Couchbase Server, puede hacerlo.<\/p>\n<h3>Paso 1: Despliegue de Couchbase Server<\/h3>\n<p><em>Ignora esta secci\u00f3n si ya tienes una instancia desplegada. Si se trata de una versi\u00f3n en contenedor, aseg\u00farese de que el directorio de registro est\u00e1 expuesto a trav\u00e9s de una etiqueta <a href=\"https:\/\/docs.docker.com\/storage\/volumes\/\" target=\"_blank\" rel=\"noopener\">volumen<\/a> o <a href=\"https:\/\/docs.docker.com\/storage\/bind-mounts\/\" target=\"_blank\" rel=\"noopener\">bind mount<\/a> en el host (como hacemos en el tutorial a continuaci\u00f3n).<\/em><\/p>\n<p><a href=\"https:\/\/docs.couchbase.com\/server\/current\/install\/getting-started-docker.html?ref=blog\" target=\"_blank\" rel=\"noopener\">Siga las instrucciones para desplegar un conjunto de uno o varios contenedores<\/a> como un cluster Couchbase pero con un volumen para los logs:<\/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>Lo principal aqu\u00ed es asegurarnos de que exponemos los logs producidos por Couchbase Server para que otro contenedor pueda recogerlos, de lo contrario estar\u00edan todos aislados dentro del contenedor. Para un despliegue binario nativo de Couchbase Server, simplemente se escribir\u00eda en un directorio en el host, as\u00ed que esto no es necesario.<\/p>\n<p>El 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\">la documentaci\u00f3n detalla la ubicaci\u00f3n del directorio de registro<\/a>.<\/p>\n<p>Tenga en cuenta que esto utiliza un contenedor llamado <code>db<\/code> as\u00ed que aseg\u00farese de que no existe ya, de lo contrario se generar\u00e1 un error debido al conflicto con <code>docker rm db<\/code>. Nuestro comando anterior limpia autom\u00e1ticamente el contenedor al salir.<\/p>\n<p>Ahora, podemos comprobar que los registros se est\u00e1n creando en nuestro directorio:<\/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 los prop\u00f3sitos de este despliegue no necesitamos realmente configurar el cl\u00faster, pero es \u00fatil hacerlo para obtener registros y datos adecuados. <a href=\"https:\/\/docs.couchbase.com\/server\/current\/install\/getting-started-docker.html?ref=blog#section_jvt_zvj_42b\" target=\"_blank\" rel=\"noopener\">Siga las instrucciones de la documentaci\u00f3n oficial<\/a> para configurar el cl\u00faster a trav\u00e9s de la interfaz de usuario e importar tambi\u00e9n algunos datos de muestra si lo desea.<\/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>Si desea ejecutar varios contenedores en el mismo nodo para simular un cl\u00faster de m\u00faltiples nodos de Couchbase Server, aseg\u00farese de utilizar un directorio de registro independiente (o volumen) para cada contenedor. A continuaci\u00f3n, ejecute una imagen de Couchbase Fluent Bit por contenedor Couchbase Server montando cada directorio seg\u00fan la siguiente secci\u00f3n sobre Log Forwarding.<\/em><\/p>\n<h3 id=\"log-forwarding\">Paso 2: Reenv\u00edo de registros<\/h3>\n<p><em>El meollo de la entrada del blog est\u00e1 en esta secci\u00f3n: \u00bfC\u00f3mo configuro los logs de Couchbase Server para que sean procesados y reenviados por Couchbase Fluent Bit?<\/em><\/p>\n<p>Una vez que hemos configurado el cluster y opcionalmente a\u00f1adido algunos buckets, datos de muestra, etc. podemos ejecutar el contenedor Fluent Bit. Esto es bastante simple cuando se utiliza la imagen Couchbase Fluent Bit:<\/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 puedes ver aqu\u00ed montamos nuestro directorio local y lo especificamos como una variable de entorno (por lo que puedes montarlo en otra ubicaci\u00f3n en el contenedor y simplemente apuntar a eso). As\u00ed es como se usa con un Couchbase Server desplegado nativamente: Montar el directorio local para los logs en el contenedor en lugar del directorio temporal usado en este ejemplo.<\/p>\n<p>Consulte la documentaci\u00f3n oficial de <a href=\"https:\/\/docs.couchbase.com\/server\/current\/manage\/manage-logging\/manage-logging.html?ref=blog#log-file-locations\" target=\"_blank\" rel=\"noopener\">los detalles espec\u00edficos de donde Couchbase Server almacena sus registros<\/a>. Este directorio base es el que necesitar\u00eda montarse en la imagen de Couchbase Fluent Bit como se indica arriba. Tenga en cuenta los problemas de permisos tambi\u00e9n.<\/p>\n<p>En <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit#configuration\" target=\"_blank\" rel=\"noopener\">La documentaci\u00f3n del repositorio Couchbase Fluent Bit especifica las distintas opciones de configuraci\u00f3n<\/a> y sus valores por defecto. Ten en cuenta que la ubicaci\u00f3n por defecto de los logs a procesar en la versi\u00f3n de la imagen Couchbase Fluent Bit 1.0.1 es ligeramente diferente de la utilizada por Couchbase Server 6.6.2, por lo que la anulamos arriba para utilizar la misma ubicaci\u00f3n en ambas. (Versiones posteriores de la imagen de Couchbase Fluent Bit se alinean con la ubicaci\u00f3n de Couchbase Server pero introducen otras caracter\u00edsticas fuera del alcance de este post).<\/p>\n<p>El contenedor deber\u00eda estar ahora ejecut\u00e1ndose y procesando los registros del directorio que tenemos localmente para luego enviarlos a su flujo de salida est\u00e1ndar por defecto. Con Fluent Bit, podemos ver esto mediante una llamada a <code>docker logs logger<\/code> que deber\u00eda mostrar la salida de registros a medida que se actualizan:<\/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>Esto es s\u00f3lo un ejemplo de la salida que puede tener.<\/p>\n<p>Tenga en cuenta que cada archivo de registro <a href=\"https:\/\/docs.fluentbit.io\/manual\/concepts\/key-concepts#tag\" target=\"_blank\" rel=\"noopener\">tiene su propio flujo utilizando una etiqueta Fluent Bit<\/a> en el formato: <code>couchbase.log.<\/code>. Esto le permite realizar diferentes procesamientos o enrutamientos de registros individuales. Por ejemplo, es posible que los registros de auditor\u00eda deban dirigirse a un punto final espec\u00edfico distinto del resto o que desee filtrar l\u00edneas de un registro concreto. Incluso puede hacer coincidir varias entradas o la misma entrada con diferentes salidas.<\/p>\n<p>La ejecuci\u00f3n del contenedor puede realizarse como parte de un script de inicio con <code>systemd<\/code> o similar como ser\u00eda Couchbase Server. El tiempo de ejecuci\u00f3n del contenedor tambi\u00e9n puede <a href=\"https:\/\/docs.docker.com\/engine\/reference\/run\/#restart-policies---restart\" target=\"_blank\" rel=\"noopener\">iniciar autom\u00e1ticamente los contenedores especificados cada vez<\/a>.<\/p>\n<h3>Paso 3: Visualizaci\u00f3n de registros en directo en Grafana<\/h3>\n<p>La configuraci\u00f3n por defecto proporcionada por el contenedor es enviar todos los registros a una salida est\u00e1ndar. Sin embargo, usted puede proporcionar su propio archivo de configuraci\u00f3n para utilizarlo para hacer cosas diferentes sin ning\u00fan otro cambio. Ser capaz de modificar el procesamiento y reenv\u00edo de registros es s\u00f3lo un simple cambio de configuraci\u00f3n, que es uno de los beneficios clave de Fluent Bit.<\/p>\n<p>Para ello, vamos a ejecutar una versi\u00f3n local de la aplicaci\u00f3n <a href=\"https:\/\/grafana.com\/docs\/loki\/latest\/overview\/\" target=\"_blank\" rel=\"noopener\">Pila Loki<\/a>que es Grafana m\u00e1s Loki para la captura de logs (y Prometheus para la captura de m\u00e9tricas). A continuaci\u00f3n, configuraremos nuestro contenedor para enviar registros a Loki para que podamos visualizarlos gr\u00e1ficamente en Grafana. La documentaci\u00f3n de Loki y Grafana tiene formas alternativas de desplegar la pila Loki, as\u00ed que consulta la documentaci\u00f3n enlazada arriba para m\u00e1s detalles.<\/p>\n<p>A <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit\/blob\/main\/tools\/loki-stack\" target=\"_blank\" rel=\"noopener\">ejemplo de trabajo completo de la secci\u00f3n de abajo se proporciona en el Couchbase Fluent Bit repo en GitHub<\/a> utilizando <a href=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-using-docker-compose\/\">Docker Compose<\/a> para poner en marcha los contenedores todos configurados correctamente.<\/p>\n<p>Aseg\u00farate de detener nuestro contenedor de reenv\u00edo de logs previamente configurado. Tambi\u00e9n puede ejecutar otro; s\u00f3lo aseg\u00farese de darle un nombre diferente, como <code>docker stop logger<\/code>.<\/p>\n<p>Ahora, ejecute Loki y Grafana, asegur\u00e1ndose de exponer los puertos necesarios para cada uno (<code>3100<\/code> y <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>Puede comprobar que ambos se han iniciado correctamente con una llamada a <code>docker ps<\/code> y ver los registros de Fluent Bit con una llamada a <code>docker logs<\/code>.<\/p>\n<p>Para soportar el reenv\u00edo a Loki, vamos a obtener la direcci\u00f3n IP del contenedor local que lo est\u00e1 ejecutando. Normalmente se desplegar\u00eda a un host o nombre de servicio resoluble, pero para la demo estamos ejecutando todo como contenedores locales.<\/p>\n<p>Si ejecuta <code>docker inspect loki<\/code> mostrar\u00e1 un mont\u00f3n de informaci\u00f3n sobre el contenedor, con una secci\u00f3n para redes:<\/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 obtener s\u00f3lo la direcci\u00f3n IP podemos <a href=\"https:\/\/docs.docker.com\/engine\/reference\/commandline\/inspect\/#get-an-instances-ip-address\" target=\"_blank\" rel=\"noopener\">formatear la consulta seg\u00fan la documentaci\u00f3n 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>Para mi despliegue, la direcci\u00f3n IP es 172.17.0.4, pero la tuya puede ser diferente, as\u00ed que sustit\u00fayela despu\u00e9s.<\/p>\n<p>El ejemplo proporcionado en el repositorio autom\u00e1ticamente aprovisiona Grafana tambi\u00e9n para usar Loki, pero necesitamos hacerlo manualmente aqu\u00ed. Si te conectas a <a href=\"https:\/\/localhost:3000\/login\" target=\"_blank\" rel=\"noopener\">https:\/\/localhost:3000\/login<\/a> puede iniciar sesi\u00f3n en Grafana como el usuario <code>admin<\/code> usuario con el <code>contrase\u00f1a<\/code> en la variable de entorno anterior en el comando de ejecuci\u00f3n del contenedor Grafana.<\/p>\n<p>Ahora tenemos que a\u00f1adir Loki como fuente de datos en: <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 la fuente de datos utilizando la direcci\u00f3n IP del contenedor Loki y el puerto <code>3100<\/code> tal y como se envi\u00f3 cuando ejecutamos el contenedor por primera 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>Paso 4: Configuraci\u00f3n personalizada<\/h3>\n<p>Ahora que tenemos Loki y Grafana configurados correctamente, vamos a crear una nueva configuraci\u00f3n para nuestro log forwarder para enviarle los logs.<\/p>\n<p>Como parte de nuestro despliegue de Couchbase Fluent Bit, hemos dividido varias secciones de la configuraci\u00f3n en archivos reutilizables para incluir, por lo que podr\u00edamos simplemente utilizar un archivo de dos l\u00edneas para esto, como este de abajo:<\/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>Este archivo ahora incluye nuestra configuraci\u00f3n por defecto existente m\u00e1s un <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit\/blob\/main\/conf\/couchbase\/out-loki.conf\" target=\"_blank\" rel=\"noopener\">salida para Loki<\/a> que no se utiliza por defecto pero se incluye:<\/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 se puede ver, esta salida coincide con todas las entradas y las env\u00eda a un host llamado <code>loki<\/code>. Para esta demostraci\u00f3n, vamos a utilizar la direcci\u00f3n IP espec\u00edfica del contenedor que ejecuta Loki en el archivo de configuraci\u00f3n:<\/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>Ahora podemos ejecutar de nuevo el reenv\u00edo de logs pero utilizando esta configuraci\u00f3n personalizada. Aseg\u00farese de cambiarle el nombre o detener la 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>Tenga en cuenta que tambi\u00e9n ejecutamos todo como un sistema de archivos montado de s\u00f3lo lectura para que no podamos modificar nada en el contenedor - los registros en bruto no se tocan.<\/p>\n<h3>Paso 5: Ver nuestros registros en directo<\/h3>\n<p>Ahora los logs deber\u00edan empezar a ser enviados a Loki y Grafana. A continuaci\u00f3n, puede verlos en: <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>Ahora puede crear cuadros de mando y ver los registros directamente en directo en Grafana.<\/p>\n<h2>Problemas conocidos<\/h2>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h4>Entrada fuera de orden<\/h4>\n<p>Es posible que vea errores en el registro de Fluent Bit como este al enviar a 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>Se trata de un <a href=\"https:\/\/grafana.com\/docs\/loki\/latest\/best-practices\/#logs-must-be-in-increasing-time-order-per-stream\" target=\"_blank\" rel=\"noopener\">conocido<\/a> <a href=\"https:\/\/github.com\/grafana\/loki\/issues\/898\" target=\"_blank\" rel=\"noopener\">tema<\/a> con Loki. Se basa en la recepci\u00f3n de cada flujo en orden, pero cuando se trata de multiplexar m\u00faltiples flujos, y con la fluctuaci\u00f3n de la red, a veces esto no es posible. Normalmente es mejor elegir flujos espec\u00edficos para enviar con plugins de salida Loki separados y aplicar hilos de trabajo para cada plugin. Como esta entrada de blog s\u00f3lo utiliza Loki para demostrar la salida de registro, este tema no est\u00e1 cubierto aqu\u00ed.<\/p>\n<h4>Nuevas versiones de Couchbase Fluent Bit<\/h4>\n<p>Esta entrada de blog cubre la versi\u00f3n 1.0.1 de la imagen Couchbase Fluent Bit que es la versi\u00f3n oficialmente soportada con CAO 2.2. Couchbase Autonomous Operator puede usar cualquier versi\u00f3n como sidecar, incluyendo im\u00e1genes completamente diferentes, pero estas no estar\u00edan soportadas para cualquier problema que surja.<\/p>\n<p>Las versiones 1.0.2 y 1.0.3 de la imagen incluyen algunas mejoras e integraciones adicionales con Kubernetes, especialmente en la integraci\u00f3n con Loki. <a href=\"https:\/\/github.com\/couchbase\/couchbase-fluent-bit#releases\" target=\"_blank\" rel=\"noopener\">Consulte las notas de la versi\u00f3n<\/a> para m\u00e1s detalles.<\/p>\n<p>Desafortunadamente, algunos de estos cambios significan que deben especificarse variables de entorno adicionales al ejecutar el contenedor (lo que se hace autom\u00e1ticamente como parte de la CAO). Sin ellas, no se ejecutar\u00e1, indicando que faltan. Se pueden especificar en la l\u00ednea de comandos utilizando el comando <code>-e clave=valor<\/code> mostrada anteriormente. Esto se resolver\u00e1 en la pr\u00f3xima versi\u00f3n de la imagen Couchbase Fluent Bit bajo cambio <a href=\"https:\/\/issues.couchbase.com\/browse\/K8S-2171\/?ref=blog\" target=\"_blank\" rel=\"noopener\">K8S-2171<\/a>.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Esperemos que esto te de una buena muestra de c\u00f3mo puedes utilizar el reenv\u00edo de logs con Couchbase Server y Fluent Bit.<\/p>\n<p>Ya existen opciones de monitorizaci\u00f3n de Prometheus disponibles para Couchbase Server utilizando el m\u00f3dulo <a href=\"https:\/\/github.com\/couchbase\/couchbase-exporter\" target=\"_blank\" rel=\"noopener\">Exportador Prometheus de Couchbase<\/a> que puede integrarse con esta misma pila de Grafana en un \u00fanico panel de vidrio de observabilidad. Los SDK de Couchbase proporcionan soporte de rastreo con Jaeger que tambi\u00e9n podr\u00eda ser <a href=\"https:\/\/grafana.com\/docs\/grafana\/latest\/datasources\/jaeger\/\" target=\"_blank\" rel=\"noopener\">integrado en Grafana<\/a>. Estos temas son objeto de otras entradas en el blog, as\u00ed que mant\u00e9ngase 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 v26.1 (Yoast SEO v26.1.1) - 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\/es\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\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\/es\/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\":\"es\",\"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\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7eea0d8b639e8e770056531b6faa551b\",\"name\":\"Patrick Stephens, Senior Software Engineer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\/es\/author\/patrick-stephens\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Fluent Bit: Log Forwarding + Processing Using Docker Compose","description":"Descubra c\u00f3mo utilizar Fluent Bit para el reenv\u00edo y procesamiento de registros con Couchbase Server, junto con informaci\u00f3n sobre los distintos componentes implicados.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/","og_locale":"es_MX","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\/es\/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":"es","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":"Descubra c\u00f3mo utilizar Fluent Bit para el reenv\u00edo y procesamiento de registros con Couchbase Server, junto con informaci\u00f3n sobre los distintos componentes implicados.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server\/"]}]},{"@type":"ImageObject","inLanguage":"es","@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":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7eea0d8b639e8e770056531b6faa551b","name":"Patrick Stephens, Ingeniero Superior de Software","image":{"@type":"ImageObject","inLanguage":"es","@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 es ingeniero de software s\u00e9nior en Couchbase, con sede en el Reino Unido.","url":"https:\/\/www.couchbase.com\/blog\/es\/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"},"author_category":"","last_name":"Stephens","first_name":"Patrick","job_title":"","user_url":"","description":"Patrick Stephens es ingeniero de software s\u00e9nior en Couchbase, con sede en el Reino Unido."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/11414","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/77454"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=11414"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/11414\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/11415"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=11414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=11414"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=11414"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=11414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}