{"id":14996,"date":"2023-10-30T12:43:23","date_gmt":"2023-10-30T19:43:23","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=14996"},"modified":"2023-12-18T12:31:06","modified_gmt":"2023-12-18T20:31:06","slug":"scraping-database-metrics-from-couchbase-capella-with-prometheus","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/","title":{"rendered":"Raspado de m\u00e9tricas de base de datos desde Couchbase Capella con Prometheus"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">En esta entrada de blog, la primera de una serie, vamos a mostrarte c\u00f3mo configurar un servidor Prometheus y conectarlo a tu base de datos Couchbase Capella para recopilar m\u00e9tricas.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">\u00bfQu\u00e9 es Prometeo?<\/span><\/h2>\n<p><a href=\"https:\/\/prometheus.io\/\"><span style=\"font-weight: 400;\">Prometeo<\/span><\/a><span style=\"font-weight: 400;\"> es un conjunto de herramientas de supervisi\u00f3n y alerta de sistemas de c\u00f3digo abierto muy popular, con una comunidad de desarrolladores y usuarios muy activa. Se cre\u00f3 originalmente en <\/span><a href=\"https:\/\/soundcloud.com\/\"><span style=\"font-weight: 400;\">SoundCloud<\/span><\/a><span style=\"font-weight: 400;\">pero ahora es un proyecto independiente de c\u00f3digo abierto, mantenido con independencia de cualquier empresa, y se uni\u00f3 a la iniciativa <\/span><a href=\"https:\/\/cncf.io\/\"><span style=\"font-weight: 400;\">Fundaci\u00f3n para la Computaci\u00f3n Nativa en la Nube<\/span><\/a><span style=\"font-weight: 400;\"> en 2016 como segundo proyecto acogido, tras <\/span><a href=\"https:\/\/kubernetes.io\/\"><span style=\"font-weight: 400;\">Kubernetes<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">\u00bfQu\u00e9 es Couchbase Capella?<\/span><\/h2>\n<p><a href=\"https:\/\/cloud.couchbase.com\/\"><span style=\"font-weight: 400;\">Couchbase Capella<\/span><\/a><span style=\"font-weight: 400;\"> es nuestra oferta de base de datos como servicio (DBaaS) totalmente gestionada, la forma m\u00e1s f\u00e1cil y r\u00e1pida de empezar con Couchbase y eliminar los esfuerzos continuos de gesti\u00f3n de bases de datos. Su base de datos Capella contiene un objetivo de raspado Prometheus nativo, lo que le permite conectar sus sistemas de monitoreo Prometheus (o compatibles con Prometheus) para recopilar m\u00e9tricas.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Requisitos previos<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Para seguir los pasos de esta gu\u00eda, necesitar\u00e1 una instalaci\u00f3n Docker en funcionamiento (que utilizaremos para desplegar Prometheus), una base de datos Capella y algunas utilidades shell comunes.<\/span><\/p>\n<p><i><span style=\"font-weight: 400;\">Nota: Queda fuera del alcance de este post mostrar c\u00f3mo instalar y configurar <\/span><\/i><a href=\"https:\/\/www.docker.com\/\"><i><span style=\"font-weight: 400;\">Docker<\/span><\/i><\/a><i><span style=\"font-weight: 400;\">. Existen muchos tutoriales, incluido el propio de Docker <\/span><\/i><a href=\"https:\/\/www.docker.com\/get-started\/\"><i><span style=\"font-weight: 400;\">Introducci\u00f3n a Docker<\/span><\/i><\/a><i><span style=\"font-weight: 400;\">. En este punto, supondremos que lo ha instalado y probado correctamente (por ejemplo, con <\/span><\/i><a href=\"https:\/\/hub.docker.com\/_\/hello-world\"><i><span style=\"font-weight: 400;\">Hola, mundo.<\/span><\/i><\/a><i><span style=\"font-weight: 400;\">).<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400;\">En el momento de escribir esto, la \u00faltima versi\u00f3n de Prometheus era la 2.46. Los pasos aqu\u00ed se llevaron a cabo utilizando Rancher Desktop 1.9.1, con el motor de contenedores establecido en dockerd (moby) y utilizando la CLI de docker proporcionada. La expectativa es que los pasos deber\u00edan funcionar tal cual en cualquier instalaci\u00f3n actual de Docker, o una pila equivalente como containerd con la CLI nerdctl.<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400;\">Por \u00faltimo, los comandos compartidos aqu\u00ed son adecuados para entornos de desarrollo aut\u00f3nomos de corta duraci\u00f3n; por supuesto, debes seguir tus mejores pr\u00e1cticas locales de red y seguridad cuando proceda.<\/span><\/i><\/p>\n<h2><span style=\"font-weight: 400;\">Ejecutar un servidor Prometheus en Docker<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Vamos a ejecutar el \u00faltimo contenedor Prometheus (<\/span><a href=\"https:\/\/hub.docker.com\/r\/prom\/prometheus\"><span style=\"font-weight: 400;\">prom\/prometheus<\/span><\/a><span style=\"font-weight: 400;\">) con su configuraci\u00f3n por defecto.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">En <\/span><span style=\"font-weight: 400;\">docker run<\/span><span style=\"font-weight: 400;\"> tiene muchas opciones, pero para este ejemplo s\u00f3lo usaremos una <\/span><span style=\"font-weight: 400;\"><em>-p<\/em> \/ <em>-publicar<\/em><\/span><span style=\"font-weight: 400;\"> para exponer el puerto Prometheus (que por defecto es <em>9090<\/em>) para que podamos acceder a \u00e9l desde nuestro navegador local, y un <\/span><em><span style=\"font-weight: 400;\">-rm<\/span><\/em><span style=\"font-weight: 400;\"> para asegurarse de que el contenedor se limpia al salir.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Por defecto, el contenedor en ejecuci\u00f3n permanecer\u00e1 \"conectado\", transmitiendo los registros a la salida est\u00e1ndar (en este caso, su terminal). Vamos a hacer eso para la primera ejecuci\u00f3n para que podamos asegurarnos de que se inicia correctamente:<\/span><\/p>\n<pre class=\"nums:false lang:sh decode:true\">docker run --rm --publish 9090:9090 prom\/prometheus<\/pre>\n<p><span style=\"font-weight: 400;\">A menos que vea alg\u00fan error en la salida de la consola, ahora deber\u00eda tener un servidor Prometheus ejecut\u00e1ndose en <\/span><a href=\"https:\/\/localhost:9090\/\"><span style=\"font-weight: 400;\"><em>https:\/\/localhost:9090\/<\/em><\/span><\/a><span style=\"font-weight: 400;\">. \u00c1brelo en una ventana del navegador y ver\u00e1s algo parecido a esto:<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/01.Prometheus.Console.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14999\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/01.Prometheus.Console-1024x260.png\" alt=\"\" width=\"900\" height=\"229\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/01.Prometheus.Console-1024x260.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/01.Prometheus.Console-300x76.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/01.Prometheus.Console-768x195.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/01.Prometheus.Console-1536x390.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/01.Prometheus.Console-2048x520.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/01.Prometheus.Console-1320x335.png 1320w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Ahora vuelve a tu ventana de terminal y pulsa <em>Ctrl+C<\/em> para matar el contenedor en ejecuci\u00f3n, luego lo iniciaremos de nuevo, pero esta vez utilizando un <\/span><span style=\"font-weight: 400;\"><em>-d<\/em> \/ <em>-detach<\/em><\/span><span style=\"font-weight: 400;\"> para ponerlo en segundo plano y liberar nuestro terminal:<\/span><\/p>\n<pre class=\"nums:false lang:sh decode:true\">docker run --detach --rm --publish 9090:9090 prom\/prometheus<\/pre>\n<p><span style=\"font-weight: 400;\">En caso de \u00e9xito, Docker imprimir\u00e1 el ID del contenedor, y tambi\u00e9n se puede encontrar con <\/span><span style=\"font-weight: 400;\"><em>docker ps<\/em>.<\/span><span style=\"font-weight: 400;\">\u00a0Como de todas formas lo necesitar\u00e1s para algunos de los pasos posteriores, vamos a filtrar (con <\/span><span style=\"font-weight: 400;\"><em>-f<\/em> \/<em> -filtro<\/em><\/span><span style=\"font-weight: 400;\">) la salida de <\/span><em><span style=\"font-weight: 400;\">docker ps<\/span><\/em><span style=\"font-weight: 400;\"> para mostrar s\u00f3lo el ID de contenedor que queremos, bas\u00e1ndonos en los puertos de red que estamos utilizando (en este caso estamos publicando el puerto <em>9090<\/em>):<\/span><\/p>\n<pre class=\"nums:false lang:sh decode:true\">docker ps --filter publish=9090<\/pre>\n<p><span style=\"font-weight: 400;\">Podemos a\u00f1adir un <\/span><span style=\"font-weight: 400;\"><em>-q<\/em> \/<em> -silencio<\/em><\/span><span style=\"font-weight: 400;\"> a <\/span><i><span style=\"font-weight: 400;\">s\u00f3lo<\/span><\/i><span style=\"font-weight: 400;\"> obtenga el ID del contenedor y utilice el resultado en otro comando. Por ejemplo, para ver los registros del contenedor Prometheus que acaba de iniciar:<\/span><\/p>\n<pre class=\"nums:false lang:sh decode:true\">docker logs $(docker ps --quiet --filter publish=9090)<\/pre>\n<p><span style=\"font-weight: 400;\">Ese comando mostrar\u00e1 algo similar a cuando arranc\u00f3 el servidor Prometheus la primera vez, cuando el contenedor a\u00fan estaba conectado al terminal. Puede utilizar la misma t\u00e9cnica con (por ejemplo) <\/span><em><span style=\"font-weight: 400;\">docker exec<\/span><\/em><span style=\"font-weight: 400;\"> (si desea iniciar un shell en un contenedor en ejecuci\u00f3n), o bien <\/span><em><span style=\"font-weight: 400;\">docker kill<\/span><\/em><span style=\"font-weight: 400;\"> (para enviar una se\u00f1al al contenedor).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Echemos un vistazo m\u00e1s profundo al servidor Prometheus en el que se est\u00e1 ejecutando <\/span><em><a href=\"https:\/\/localhost:9090\/\"><span style=\"font-weight: 400;\">https:\/\/localhost:9090\/<\/span><\/a><\/em><span style=\"font-weight: 400;\">. Si navega a <strong>Estado -&gt; Objetivos<\/strong>puede ver que ya hay un trabajo en ejecuci\u00f3n:<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/02.Prometheus.Targets.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-15000\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/02.Prometheus.Targets-1024x208.png\" alt=\"\" width=\"900\" height=\"183\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/02.Prometheus.Targets-1024x208.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/02.Prometheus.Targets-300x61.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/02.Prometheus.Targets-768x156.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/02.Prometheus.Targets-1536x312.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/02.Prometheus.Targets-2048x417.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/02.Prometheus.Targets-1320x268.png 1320w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Este servidor Prometheus ha sido configurado para raspar <\/span><i><span style=\"font-weight: 400;\">s\u00ed mismo<\/span><\/i><span style=\"font-weight: 400;\"> como objetivo, lo que puede confirmar viendo su configuraci\u00f3n (<strong>Estado -&gt; Configuraci\u00f3n<\/strong>):<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/03.Prometheus.Config.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-15001\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/03.Prometheus.Config-1024x417.png\" alt=\"\" width=\"900\" height=\"367\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/03.Prometheus.Config-1024x417.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/03.Prometheus.Config-300x122.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/03.Prometheus.Config-768x312.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/03.Prometheus.Config-1536x625.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/03.Prometheus.Config-2048x833.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/03.Prometheus.Config-1320x537.png 1320w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Puede ver en la imagen de arriba que hay un trabajo llamado <\/span><em><span style=\"font-weight: 400;\">prometheus<\/span><\/em><span style=\"font-weight: 400;\">cuyo objetivo es <\/span><em><span style=\"font-weight: 400;\">localhost:9090\/m\u00e9tricas<\/span><\/em><span style=\"font-weight: 400;\"> (<\/span><em><span style=\"font-weight: 400;\">targets + metrics_path<\/span><\/em><span style=\"font-weight: 400;\">). V\u00e9ase <\/span><a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/getting_started\/#configuring-prometheus-to-monitor-itself\"><span style=\"font-weight: 400;\">Configurar Prometheus para que se supervise a s\u00ed mismo<\/span><\/a><span style=\"font-weight: 400;\"> para ver un ejemplo de configuraci\u00f3n.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Antes de volver a nuestro terminal, echemos un vistazo r\u00e1pido a las m\u00e9tricas que se est\u00e1n raspando en el trabajo anterior. Si hace clic en Gr\u00e1fico, encontrar\u00e1 el icono <\/span><a href=\"https:\/\/prometheus.io\/docs\/visualization\/browser\/\"><span style=\"font-weight: 400;\">Navegador de expresiones<\/span><\/a><span style=\"font-weight: 400;\">que permite introducir expresiones PromQL (v\u00e9ase <\/span><a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/querying\/basics\/\"><span style=\"font-weight: 400;\">Consulta a Prometheus<\/span><\/a><span style=\"font-weight: 400;\"> para obtener una visi\u00f3n general), y ver los resultados.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tenga en cuenta la <strong>Navegador de expresiones<\/strong> es s\u00f3lo para uso ad hoc - la recomendaci\u00f3n es utilizar <\/span><a href=\"https:\/\/prometheus.io\/docs\/visualization\/grafana\/\"><span style=\"font-weight: 400;\">Grafana<\/span><\/a><span style=\"font-weight: 400;\"> como una soluci\u00f3n de gr\u00e1ficos completa, y lo veremos en un pr\u00f3ximo post. Mientras tanto, como ejemplo r\u00e1pido, este es el n\u00famero de series temporales almacenadas actualmente en su propia base de datos (<\/span><em><span style=\"font-weight: 400;\">prometheus_tsdb_head_series<\/span><\/em><span style=\"font-weight: 400;\">):<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/04.Prometheus.Graphs.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-15002\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/04.Prometheus.Graphs-1024x590.png\" alt=\"\" width=\"900\" height=\"519\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/04.Prometheus.Graphs-1024x590.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/04.Prometheus.Graphs-300x173.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/04.Prometheus.Graphs-768x443.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/04.Prometheus.Graphs-1536x885.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/04.Prometheus.Graphs-2048x1180.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/04.Prometheus.Graphs-1320x761.png 1320w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Si queremos a\u00f1adir nuestra base de datos Capella como un Scrape Job en nuestro servidor Prometheus, esto significa que tenemos que hacer cambios en la configuraci\u00f3n que vimos anteriormente, pero la configuraci\u00f3n se hornea en nuestra imagen de contenedor. Una vez que tengamos una configuraci\u00f3n final podemos reconstruir la imagen, pero por ahora ser\u00eda mucho m\u00e1s conveniente si pudi\u00e9ramos aplicar nuevas opciones de configuraci\u00f3n y probar sin tener que hacer tanto esfuerzo.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Hagamos uso de Docker's<\/span><span style=\"font-weight: 400;\"><em> -v<\/em> \/ <em>-volumen<\/em><\/span><span style=\"font-weight: 400;\"> que permite montar un archivo o directorio local en el contenedor. El archivo de configuraci\u00f3n de Prometheus en el contenedor es <\/span><em><span style=\"font-weight: 400;\">\/etc\/prometheus\/prometheus.yml<\/span><\/em><span style=\"font-weight: 400;\"> - Si ese fuera el \u00fanico archivo que necesitamos, podr\u00edamos montarlo directamente, pero necesitaremos algunos m\u00e1s, as\u00ed que montaremos un directorio en su lugar.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">En su directorio de trabajo, cree un subdirectorio que utilizaremos para guardar nuestra configuraci\u00f3n (<\/span><em><span style=\"font-weight: 400;\">prometheus.yml<\/span><\/em><span style=\"font-weight: 400;\">) y otros archivos asociados.<\/span><\/p>\n<pre class=\"nums:false lang:miva decode:true\">mkdir prometheus<\/pre>\n<p><span style=\"font-weight: 400;\">Ahora necesitamos una copia del archivo de configuraci\u00f3n con la que podamos trabajar. Como siempre, hay m\u00e1s de una manera de hacer esto, pero con mucho, la m\u00e1s sencilla es utilizar el comando <\/span><span style=\"font-weight: 400;\">docker cp<\/span><span style=\"font-weight: 400;\"> para copiar <\/span><em><span style=\"font-weight: 400;\">\/etc\/prometheus\/prometheus.yml<\/span><\/em><span style=\"font-weight: 400;\"> de su contenedor en ejecuci\u00f3n, a un archivo local:<\/span><\/p>\n<pre class=\"wrap:true lang:sh decode:true\">docker cp $(docker ps --quiet --filter publish=9090):\/etc\/prometheus\/prometheus.yml prometheus\/<\/pre>\n<p><span style=\"font-weight: 400;\">Ahora mata tu contenedor en ejecuci\u00f3n:<\/span><\/p>\n<pre class=\"nums:false lang:sh decode:true\">docker kill $(docker ps --quiet --filter publish=9090)<\/pre>\n<p><span style=\"font-weight: 400;\">A continuaci\u00f3n, inicie un nuevo contenedor, esta vez montando su local <\/span><em><span style=\"font-weight: 400;\">prometheus<\/span><\/em><span style=\"font-weight: 400;\"> directorio como <\/span><em><span style=\"font-weight: 400;\">\/etc\/prometheus\/<\/span><\/em><span style=\"font-weight: 400;\"> en el contenedor:<\/span><\/p>\n<pre class=\"wrap:true lang:sh decode:true\">docker run --detach --rm --publish 9090:9090 --volume $(pwd)\/prometheus\/:\/etc\/prometheus\/ prom\/prometheus<\/pre>\n<p><span style=\"font-weight: 400;\">Si, como el autor, se pregunta c\u00f3mo saber si el servidor Prometheus est\u00e1 utilizando realmente su copia de <\/span><em><span style=\"font-weight: 400;\">prometheus.yml<\/span><\/em><span style=\"font-weight: 400;\"> o no, puede comprobar los montajes dentro del contenedor para asegurarse de que <\/span><em><span style=\"font-weight: 400;\">\/etc\/prometheus\/ <\/span><\/em><span style=\"font-weight: 400;\">se monta espec\u00edficamente con:<\/span><\/p>\n<pre class=\"wrap:true lang:sh decode:true\">docker exec $(docker ps --quiet --filter publish=9090) mount | grep '\/etc\/prometheus'<\/pre>\n<p><span style=\"font-weight: 400;\">Tambi\u00e9n puede hacer un peque\u00f1o cambio en la configuraci\u00f3n (por ejemplo, el nombre del trabajo de raspado existente), y esto deber\u00eda reflejarse en la consola (en <\/span><a href=\"https:\/\/localhost:9090\/config\"><span style=\"font-weight: 400;\">https:\/\/localhost:9090\/config<\/span><\/a><span style=\"font-weight: 400;\">).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Por \u00faltimo para esta secci\u00f3n, como vamos a hacer algunos cambios en nuestro archivo de configuraci\u00f3n, ser\u00eda bueno si no tuvi\u00e9ramos que volver a crear el contenedor para aplicar los cambios. Prometheus tiene un m\u00e9todo integrado en la API para esto, discutido en <\/span><a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/\"><span style=\"font-weight: 400;\">Configuraci\u00f3n<\/span><\/a><span style=\"font-weight: 400;\">pero el <\/span><em><span style=\"font-weight: 400;\">-web.enable-lifecycle<\/span><\/em><span style=\"font-weight: 400;\"> no est\u00e1 activada por defecto en el contenedor oficial. Afortunadamente (al menos para los usuarios de MacOS y Linux), existe la opci\u00f3n de enviar un SIGHUP con <\/span><em><span style=\"font-weight: 400;\">docker kill<\/span><\/em><span style=\"font-weight: 400;\"> (aparece el mensaje \"Cargando archivo de configuraci\u00f3n\" en los registros):<\/span><\/p>\n<pre class=\"nums:false lang:sh decode:true\">docker kill --signal SIGHUP $(docker ps --quiet --filter publish=9090)<\/pre>\n<p><span style=\"font-weight: 400;\">En resumen, ahora tenemos un servidor Prometheus en funcionamiento, sabemos c\u00f3mo comprobar sus registros, explorar las m\u00e9tricas que est\u00e1 explorando y c\u00f3mo actualizar y recargar su configuraci\u00f3n, lo que nos facilita la tarea de a\u00f1adir nuestra base de datos Capella como objetivo de exploraci\u00f3n.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">A\u00f1adir una base de datos Capella a su servidor Prometheus<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Ahora que tenemos un servidor Prometheus, vamos a echar un vistazo a la adici\u00f3n de una base de datos Couchbase Capella.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Requisitos previos<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Para cada base de datos de la que quieras recoger m\u00e9tricas, vas a necesitar:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">El nombre de host de conexi\u00f3n<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Credenciales de usuario con el acceso adecuado a la base de datos<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Un certificado de seguridad<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Una o m\u00e1s direcciones IP permitidas<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4><span style=\"font-weight: 400;\">Conexi\u00f3n Nombre de host<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">Este es el nombre de host de su cadena de conexi\u00f3n. Vaya al campo <\/span><strong>Conectar<\/strong><span style=\"font-weight: 400;\"> en su base de datos en la interfaz de usuario de Capella y copie todo lo que hay despu\u00e9s de la pesta\u00f1a <\/span><em><span style=\"font-weight: 400;\">couchbases:\/\/<\/span><\/em><span style=\"font-weight: 400;\"> prefijo de esquema. El que utilizamos en nuestros ejemplos es: <\/span><span style=\"font-weight: 400;\"><em>cb.plmvshfqolmyxvpt.cloud.couchbase.com<\/em>.<\/span><\/p>\n<h4><span style=\"font-weight: 400;\">Credenciales de usuario<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">Un conjunto de credenciales (<\/span><span style=\"font-weight: 400;\">nombre de usuario<\/span><span style=\"font-weight: 400;\">\/<\/span><span style=\"font-weight: 400;\">contrase\u00f1a<\/span><span style=\"font-weight: 400;\">) que tiene <\/span><i><span style=\"font-weight: 400;\">Leer Acceso<\/span><\/i><span style=\"font-weight: 400;\"> a <\/span><i><span style=\"font-weight: 400;\">Todos los cubos<\/span><\/i><span style=\"font-weight: 400;\"> y <\/span><i><span style=\"font-weight: 400;\">Todos los \u00e1mbitos <\/span><\/i><span style=\"font-weight: 400;\">en su base de datos (como <\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/manage-database-users.html#_footnoteref_1\"><span style=\"font-weight: 400;\">nota<\/span><\/a><span style=\"font-weight: 400;\">, la <\/span><em><span style=\"font-weight: 400;\">lector_estadisticas_externo<\/span><\/em><span style=\"font-weight: 400;\"> s\u00f3lo se concede cuando un <\/span><span style=\"font-weight: 400;\">La credencial de la base de datos tiene acceso de lectura a <\/span><i><span style=\"font-weight: 400;\">todos<\/span><\/i><span style=\"font-weight: 400;\"> Cubos en una base de datos<\/span><span style=\"font-weight: 400;\">). Si no tiene uno, puede crearlo desde <strong>Configuraci\u00f3n -&gt; Acceso a la base de datos -&gt; Crear acceso a la base de datos<\/strong> (v\u00e9ase <\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/manage-database-users.html\"><span style=\"font-weight: 400;\">Configurar las credenciales de la base de datos<\/span><\/a><span style=\"font-weight: 400;\">). En nuestros ejemplos, utilizaremos <\/span><em><span style=\"font-weight: 400;\">metrics_user<\/span><\/em><span style=\"font-weight: 400;\"> \/ <\/span><em><span style=\"font-weight: 400;\">metrics_Passw0rd<\/span><\/em><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h4><span style=\"font-weight: 400;\">Certificado de seguridad<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">El certificado de seguridad para su base de datos. Desde su base de datos, vaya a <strong>Configuraci\u00f3n -&gt; Certificado de seguridad<\/strong>y haga clic en Descargar. Obtendr\u00e1 un archivo de texto con formato PEM con el nombre de su cl\u00faster (en nuestro caso <\/span><em><span style=\"font-weight: 400;\">bravetimbernerslee-root-certificate.txt<\/span><\/em><span style=\"font-weight: 400;\">). En realidad, se utiliza el mismo certificado de firma para todas las bases de datos de Capella, por lo que s\u00f3lo tendr\u00e1 que descargarlo una vez y podr\u00e1 utilizar el mismo certificado ra\u00edz para verificar todas sus bases de datos de Capella. Para ello, hemos cambiado el nombre de nuestro archivo de certificado local a <\/span><em><span style=\"font-weight: 400;\">couchbase-cloud-root-certificate.pem<\/span><\/em><span style=\"font-weight: 400;\"> para mayor claridad, y copiado en nuestro <\/span><em><span style=\"font-weight: 400;\">prometheus<\/span><\/em><span style=\"font-weight: 400;\"> (en un subdirectorio denominado <\/span><em><span style=\"font-weight: 400;\">certificados<\/span><\/em><span style=\"font-weight: 400;\">) para que Prometheus pueda acceder a \u00e9l m\u00e1s tarde.<\/span><\/p>\n<h4><span style=\"font-weight: 400;\">Direcciones IP permitidas<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">Antes de que cualquier cliente pueda conectarse a una base de datos Capella, la direcci\u00f3n IP del cliente debe a\u00f1adirse a la base de datos. <\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/allow-ip-address.html\"><span style=\"font-weight: 400;\">Lista de IP permitidas<\/span><\/a><span style=\"font-weight: 400;\">. Para seguir los pasos aqu\u00ed descritos, lo m\u00e1s probable es que desee a\u00f1adir su direcci\u00f3n IP actual, en cuyo caso puede utilizar la opci\u00f3n <strong>A\u00f1adir mi IP<\/strong> bot\u00f3n. Para un despliegue de producci\u00f3n necesitar\u00e1 la direcci\u00f3n IP p\u00fablica de su(s) servidor(es) Prometheus.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Definici\u00f3n de una nueva Scrape Config<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Empecemos por echar un vistazo al trabajo existente, que le dice a Prometheus que se raspe a s\u00ed mismo.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Si ignoramos los ajustes globales y por defecto, se convierte en lo siguiente:<\/span><\/p>\n<pre class=\"nums:false lang:yaml decode:true\">scrape_configs:\r\n\u00a0\u00a0- job_name: \"prometheus\"\r\n\r\n \u00a0\u00a0\u00a0static_configs:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0- targets: [\"localhost:9090\"]<\/pre>\n<p><span style=\"font-weight: 400;\">Si consulta la documentaci\u00f3n de <\/span><a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/#scrape_config\"><span style=\"font-weight: 400;\">scrape_config<\/span><\/a><span style=\"font-weight: 400;\"> puedes ver que esta es esencialmente la definici\u00f3n m\u00e1s peque\u00f1a posible de un trabajo. No hay TLS, no hay autenticaci\u00f3n, s\u00f3lo un nombre y un \u00fanico objetivo (que con los valores por defecto a\u00f1adidos se convierte en <\/span><em><span style=\"font-weight: 400;\">https:\/\/localhost:9090\/metrics<\/span><\/em><span style=\"font-weight: 400;\">).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Por otra parte, si te interesa, puedes probarlo cargando esa URL en tu navegador o utilizando <\/span><em><span style=\"font-weight: 400;\">rizo<\/span><\/em><span style=\"font-weight: 400;\"> en la CLI. La salida resultante est\u00e1 en Prometheus basado en texto <\/span><a href=\"https:\/\/prometheus.io\/docs\/instrumenting\/exposition_formats\/\"><span style=\"font-weight: 400;\">Formato de la exposici\u00f3n<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nuestro nuevo trabajo necesitar\u00e1 un nombre, que deber\u00e1 ser \u00fanico para todas las definiciones de raspado, lo que conviene tener en cuenta si se est\u00e1 planeando a\u00f1adir varias bases de datos de Capella. Para nuestro ejemplo utilizaremos el componente \u00fanico de nuestro nombre de host de conexi\u00f3n para diferenciar, d\u00e1ndonos:<\/span><\/p>\n<pre class=\"nums:false lang:yaml decode:true\">- job_name: \"capella-plmvshfqolmyxvpt\"<\/pre>\n<p><span style=\"font-weight: 400;\">Sabemos que tendremos que autenticarnos para acceder al endpoint de m\u00e9tricas, utilizando las credenciales anteriores:<\/span><\/p>\n<pre class=\"nums:false lang:yaml decode:true\">basic_auth:\r\n\u00a0\u00a0username: \"metrics_user\"\r\n\u00a0\u00a0password: \"metrics_Passw0rd\"<\/pre>\n<p><span style=\"font-weight: 400;\">Todas las comunicaciones de Capella est\u00e1n encriptadas con TLS, por lo que tendremos que a\u00f1adir un icono <\/span><a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/#tls_config\"><span style=\"font-weight: 400;\">tls_config<\/span><\/a><span style=\"font-weight: 400;\"> utilizando el certificado que descargamos anteriormente:<\/span><\/p>\n<pre class=\"nums:false lang:yaml decode:true\">tls_config:\r\n\u00a0\u00a0ca_file: \"certs\/couchbase-cloud-root-certificate.pem\"<\/pre>\n<p><span style=\"font-weight: 400;\">Y en relaci\u00f3n, <\/span><span style=\"font-weight: 400;\">esquema<\/span><span style=\"font-weight: 400;\"> por defecto <\/span><span style=\"font-weight: 400;\">http<\/span><span style=\"font-weight: 400;\">...as\u00ed que necesitaremos..:<\/span><\/p>\n<pre class=\"nums:false lang:yaml decode:true\">esquema: https<\/pre>\n<p><span style=\"font-weight: 400;\">Lo \u00faltimo que tenemos que hacer es decirle a Prometheus el(los) nombre(s)\/direcci\u00f3n(es) de host que debe utilizar para conectarse a su Base de Datos, tambi\u00e9n conocido como <\/span><em><span style=\"font-weight: 400;\">objetivos<\/span><\/em><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">En el <\/span><em><span style=\"font-weight: 400;\">prometheus<\/span><\/em><span style=\"font-weight: 400;\"> anterior, se proporciona un \u00fanico nombre de host utilizando el campo <\/span><em><span style=\"font-weight: 400;\">configuraci\u00f3n_est\u00e1tica<\/span><\/em><span style=\"font-weight: 400;\"> par\u00e1metro. Como su nombre indica, se trata de una forma de definir est\u00e1ticamente uno o varios <\/span><em><span style=\"font-weight: 400;\">objetivos<\/span><\/em><span style=\"font-weight: 400;\">y no se actualizar\u00e1n a menos que se reinicie el servidor Prometheus o se recargue su archivo de configuraci\u00f3n.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Esto est\u00e1 bien en este caso, ya que el nombre de host (<\/span><em><span style=\"font-weight: 400;\">localhost<\/span><\/em><span style=\"font-weight: 400;\">) nunca va a cambiar. Tambi\u00e9n podr\u00eda ser manejable si tiene nombres de host que cambian ocasionalmente, y s\u00f3lo se actualizan bajo circunstancias controladas (por ejemplo, un per\u00edodo de mantenimiento programado en el que puede actualizar su configuraci\u00f3n de Prometheus al mismo tiempo).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Pero, \u00bfy si sus nombres de host cambian con frecuencia y el momento de esos cambios est\u00e1 fuera de su control?  Si la aplicaci\u00f3n que est\u00e1s monitorizando est\u00e1 alojada en cualquier tipo de entorno en la nube, donde hay escalado bajo demanda, sustituci\u00f3n de servidores en caso de fallo, actualizaciones automatizadas, entonces necesitar\u00e1s un m\u00e9todo mucho m\u00e1s flexible para especificar tus nombres de host. <\/span><em><span style=\"font-weight: 400;\">objetivos<\/span><\/em><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Aqu\u00ed es donde entra en juego el descubrimiento de servicios.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Descubrimiento de servicios<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Prometheus Service Discovery (SD) es un mecanismo que permite a su servidor Prometheus descubrir din\u00e1micamente (y actualizar) la lista de objetivos a monitorizar para una aplicaci\u00f3n o servicio en particular. En el momento de redactar este documento existen 28 mecanismos diferentes, entre los que se incluyen opciones gen\u00e9ricas como <\/span><a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/#file_sd_config\"><span style=\"font-weight: 400;\">Archivo-<\/span><\/a><span style=\"font-weight: 400;\"> y <\/span><a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/#http_sd_config\"><span style=\"font-weight: 400;\">Basado en HTTP<\/span><\/a><span style=\"font-weight: 400;\"> Service Discovery, as\u00ed como implementaciones espec\u00edficas para un gran n\u00famero de plataformas y aplicaciones en la nube (v\u00e9ase el sitio web de Prometheus <\/span><a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/\"><span style=\"font-weight: 400;\">documentaci\u00f3n de configuraci\u00f3n<\/span><\/a><span style=\"font-weight: 400;\"> para consultar la lista completa).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Veamos esas dos opciones gen\u00e9ricas en relaci\u00f3n con su base de datos Couchbase Capella.<\/span><\/p>\n<p><i><span style=\"font-weight: 400;\">Descubrimiento de servicios basado en archivos<\/span><\/i><span style=\"font-weight: 400;\"> (<\/span><em><span style=\"font-weight: 400;\">archivo_sd_configs<\/span><\/em><span style=\"font-weight: 400;\">) es donde uno o m\u00e1s nombres de archivo se proporcionan a Prometheus, cada archivo contiene cero o m\u00e1s <\/span><em><span style=\"font-weight: 400;\">configuraci\u00f3n_est\u00e1tica<\/span><\/em><span style=\"font-weight: 400;\"> entradas. Prometheus aplicar\u00e1 cualquier formato <\/span><em><span style=\"font-weight: 400;\">objetivos<\/span><\/em><span style=\"font-weight: 400;\"> que encuentre en esos archivos, y cargar\u00e1 autom\u00e1ticamente cualquier cambio cuando se actualicen los archivos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Este mecanismo es \u00fatil en el sentido de que puedes usarlo para conectarte a cualquier sistema arbitrario, siempre y cuando puedas obtener los detalles del host en un archivo con el formato correcto (ya sea manualmente o mediante cualquier automatizaci\u00f3n apropiada). Sin embargo, es necesario asegurarse de que la automatizaci\u00f3n para actualizar el archivo(s) es fiable.<\/span><\/p>\n<p><i><span style=\"font-weight: 400;\">Descubrimiento de servicios basado en HTTP<\/span><\/i><span style=\"font-weight: 400;\"> (<\/span><em><span style=\"font-weight: 400;\">http_sd_configs<\/span><\/em><span style=\"font-weight: 400;\">) es similar a File-based, en el sentido de que proporciona una interfaz gen\u00e9rica, con una carga \u00fatil que contiene cero o m\u00e1s ficheros <\/span><em><span style=\"font-weight: 400;\">configuraci\u00f3n_est\u00e1tica<\/span><\/em><span style=\"font-weight: 400;\"> pero utiliza una conexi\u00f3n HTTP para obtener la carga \u00fatil en lugar de leer un archivo local. Esto elimina la dependencia de cualquier automatizaci\u00f3n o intervenci\u00f3n humana y, siempre que la aplicaci\u00f3n de destino proporcione la API pertinente, ser\u00eda preferible a la opci\u00f3n basada en archivos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">En el momento de escribir estas l\u00edneas, estamos actualizando el estado de Capella de Couchbase Server 7.1 a 7.2 (v\u00e9ase <a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/upgrade-database.html\">Actualizar una base de datos<\/a> para m\u00e1s detalles). Server 7.1 s\u00f3lo proporciona una API b\u00e1sica de descubrimiento de servicios basada en archivos, pero en Server 7.2 hemos a\u00f1adido SD basada en HTTP, as\u00ed como SD mejorada basada en archivos.<\/span><\/p>\n<p>Veremos primero el m\u00e9todo de Descubrimiento de Servicios basado en Archivos en Server 7.1. No dude en saltarse una secci\u00f3n si ya est\u00e1 ejecutando Server 7.2.<\/p>\n<h4>Descubrimiento de servicios basado en archivos en Couchbase Server 7.1<\/h4>\n<p><span style=\"font-weight: 400;\">El punto final es <\/span><em><span style=\"font-weight: 400;\">prometheus_sd_config.yaml<\/span><\/em><span style=\"font-weight: 400;\">tendr\u00e1 que autenticarse con las mismas credenciales que antes y proporcionar el certificado ra\u00edz de Capella que descargamos anteriormente.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">En primer lugar, utilizaremos <\/span><em><span style=\"font-weight: 400;\">rizo<\/span><\/em><span style=\"font-weight: 400;\"> y transmitir el resultado a nuestro terminal:<\/span><\/p>\n<pre class=\"nums:false wrap:true lang:sh decode:true\">curl --cacert \/path\/to\/couchbase-cloud-root-certificate.pem -u 'metrics_user:metrics_password' https:\/\/cb.plmvshfqolmyxvpt.cloud.couchbase.com:18091\/prometheus_sd_config.yaml<\/pre>\n<p>Para nuestro cluster esto da:<\/p>\n<pre class=\"nums:false lang:yaml decode:true\">- targets:\r\n\u00a0\u00a0\u00a0\u00a0- 'svc-d-node-001.plmvshfqolmyxvpt.cloud.couchbase.com:8091'\r\n\u00a0\u00a0\u00a0\u00a0- 'svc-d-node-002.plmvshfqolmyxvpt.cloud.couchbase.com:8091'\r\n\u00a0\u00a0\u00a0\u00a0- 'svc-d-node-003.plmvshfqolmyxvpt.cloud.couchbase.com:8091'\r\n\u00a0\u00a0\u00a0\u00a0- 'svc-qi-node-004.plmvshfqolmyxvpt.cloud.couchbase.com:8091'\r\n\u00a0\u00a0\u00a0\u00a0- 'svc-qi-node-005.plmvshfqolmyxvpt.cloud.couchbase.com:8091'<\/pre>\n<p><span style=\"font-weight: 400;\">Aqu\u00ed podemos ver la limitaci\u00f3n de la actual API de Service Discovery - siempre devolver\u00e1 el puerto inseguro (8091), que no nos sirve en Capella ya que toda la comunicaci\u00f3n se realiza a trav\u00e9s del puerto seguro (18091). Este problema se solucionar\u00e1 con las mejoras del Servidor 7.2, pero hasta que est\u00e9n disponibles tendremos que a\u00f1adir un paso extra para actualizar esos n\u00fameros de puerto.<\/span><\/p>\n<p>Por el bien de esta demostraci\u00f3n s\u00f3lo vamos a canalizar a trav\u00e9s de <em>sed<\/em>pero puede hacer lo que sea m\u00e1s apropiado para su entorno:<\/p>\n<pre class=\"wrap:true lang:sh decode:true\">curl --cacert \/path\/to\/couchbase-cloud-root-certificate.pem -u 'metrics_user:metrics_password' https:\/\/cb.plmvshfqolmyxvpt.cloud.couchbase.com:18091\/prometheus_sd_config.yaml | sed 's\/:8091\/:18091\/'<\/pre>\n<p><span style=\"font-weight: 400;\">Para nuestro cluster esto da ahora:<\/span><\/p>\n<pre class=\"nums:false lang:yaml decode:true\">- targets:\r\n\u00a0\u00a0\u00a0\u00a0- 'svc-d-node-001.plmvshfqolmyxvpt.cloud.couchbase.com:18091'\r\n\u00a0\u00a0\u00a0\u00a0- 'svc-d-node-002.plmvshfqolmyxvpt.cloud.couchbase.com:18091'\r\n\u00a0\u00a0\u00a0\u00a0- 'svc-d-node-003.plmvshfqolmyxvpt.cloud.couchbase.com:18091'\r\n \u00a0\u00a0\u00a0- 'svc-qi-node-004.plmvshfqolmyxvpt.cloud.couchbase.com:18091'\r\n\u00a0\u00a0\u00a0\u00a0- 'svc-qi-node-005.plmvshfqolmyxvpt.cloud.couchbase.com:18091'<\/pre>\n<p><span style=\"font-weight: 400;\">Ahora que tenemos la salida correcta, podemos redirigirla a un archivo para utilizarla m\u00e1s tarde en la definici\u00f3n de nuestro trabajo.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">En nuestro directorio de trabajo, utilizaremos un subdirectorio para mantener nuestros objetivos juntos, nombrando los archivos despu\u00e9s del nombre del trabajo (en nuestro caso <\/span><em><span style=\"font-weight: 400;\">capella-plmvshfqolmyxvpt<\/span><\/em><span style=\"font-weight: 400;\">):<\/span><\/p>\n<pre class=\"wrap:true lang:sh decode:true\">curl --cacert \/path\/to\/couchbase-cloud-root-certificate.pem -u 'metrics_user:metrics_password' https:\/\/cb.plmvshfqolmyxvpt.cloud.couchbase.com:18091\/prometheus_sd_config.yaml | sed 's\/:8091\/:18091\/' &gt; $(pwd)\/prometheus\/targets\/capella-plmvshfqolmyxvpt.yml<\/pre>\n<p><span style=\"font-weight: 400;\">Esto est\u00e1 bien para nuestra demostraci\u00f3n, pero obviamente querr\u00e1s asegurarte de que es robusto y adecuado para tu propio entorno, a\u00f1adiendo gesti\u00f3n de errores seg\u00fan corresponda. Y, lo que es m\u00e1s importante, tendr\u00e1s que programarlo para que se ejecute con regularidad para asegurarte de que la lista de objetivos se actualiza con cualquier cambio de topolog\u00eda que se produzca (se ejecuta una vez por minuto a trav\u00e9s de <\/span><em><span style=\"font-weight: 400;\">cron<\/span><\/em><span style=\"font-weight: 400;\"> por ejemplo, ser\u00eda suficiente).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ahora podemos tomar todo lo que tenemos arriba, a\u00f1adir en nuestro <\/span><em><span style=\"font-weight: 400;\">archivo_sd_configs<\/span><\/em><span style=\"font-weight: 400;\">y nuestro nuevo trabajo se parece a esto:<\/span><\/p>\n<pre class=\"nums:false lang:yaml decode:true\">- job_name: \"capella-plmvshfqolmyxvpt\"\r\n\u00a0\u00a0basic_auth:\r\n\u00a0\u00a0\u00a0\u00a0username: \"metrics_user\"\r\n\u00a0\u00a0\u00a0\u00a0password: \"metrics_Passw0rd\"\r\n\u00a0\u00a0tls_config:\r\n\u00a0\u00a0\u00a0\u00a0ca_file: \"certs\/couchbase-cloud-root-certificate.pem\"\r\n\u00a0\u00a0scheme: https\r\n\u00a0\u00a0file_sd_configs:\r\n\u00a0\u00a0\u00a0\u00a0- files:\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0- \"targets\/capella-plmvshfqolmyxvpt.yml\"<\/pre>\n<p>&nbsp;<\/p>\n<h4><span style=\"font-weight: 400;\">Descubrimiento de servicios basado en HTTP en Couchbase Server 7.2<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">En Server 7.2 hemos a\u00f1adido un nuevo punto final (<\/span><em><span style=\"font-weight: 400;\">prometheus_sd_config<\/span><\/em><span style=\"font-weight: 400;\">) y, al igual que en el caso anterior, tendr\u00e1 que autenticarse con las credenciales que cre\u00f3 y proporcionar el certificado ra\u00edz de Capella que descarg\u00f3 anteriormente.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">En primer lugar, utilizaremos <\/span><em><span style=\"font-weight: 400;\">rizo<\/span><\/em><span style=\"font-weight: 400;\"> y enviamos el resultado a nuestro terminal. En la nueva API la salida por defecto es JSON, por lo que estamos canalizando a <\/span><em><span style=\"font-weight: 400;\">jq<\/span><\/em><span style=\"font-weight: 400;\"> para mayor claridad:<\/span><\/p>\n<pre class=\"wrap:true lang:sh decode:true\">curl --cacert \/path\/to\/couchbase-cloud-root-certificate.pem -u 'metrics_user:metrics_password' https:\/\/cb.plmvshfqolmyxvpt.cloud.couchbase.com:18091\/prometheus_sd_config | jq<\/pre>\n<p><span style=\"font-weight: 400;\">Para nuestro cl\u00faster actualizado (donde los nombres de host han cambiado durante el proceso de actualizaci\u00f3n), esto da:<\/span><\/p>\n<pre class=\"nums-toggle:false lang:js decode:true\">[\r\n\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\"targets\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"svc-d-node-006.plmvshfqolmyxvpt.cloud.couchbase.com:18091\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"svc-d-node-007.plmvshfqolmyxvpt.cloud.couchbase.com:18091\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"svc-d-node-008.plmvshfqolmyxvpt.cloud.couchbase.com:18091\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"svc-qi-node-009.plmvshfqolmyxvpt.cloud.couchbase.com:18091\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"svc-qi-node-010.plmvshfqolmyxvpt.cloud.couchbase.com:18091\"\r\n\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0}\r\n]<\/pre>\n<p><span style=\"font-weight: 400;\">Esta salida es exactamente lo que espera Prometheus, as\u00ed que podemos tomar los argumentos que utilizamos en el comando <\/span><em><span style=\"font-weight: 400;\">rizo<\/span><\/em><span style=\"font-weight: 400;\"> y utilizarlos en un <\/span><em><span style=\"font-weight: 400;\">http_sd_configs<\/span><\/em><span style=\"font-weight: 400;\"> en nuestro nuevo trabajo Prometheus:\u00a0\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<pre class=\"nums:false wrap:true lang:yaml decode:true\">- job_name: \"capella-plmvshfqolmyxvpt\"\r\n\u00a0\u00a0basic_auth:\r\n\u00a0\u00a0\u00a0\u00a0username: \"metrics_user\"\r\n\u00a0\u00a0\u00a0\u00a0password: \"metrics_Passw0rd\"\r\n\u00a0\u00a0tls_config:\r\n\u00a0\u00a0\u00a0\u00a0ca_file: \"certs\/couchbase-cloud-root-certificate.pem\"\r\n\u00a0\u00a0scheme: https\r\n\u00a0\u00a0http_sd_configs:\r\n\u00a0\u00a0\u00a0\u00a0- url: https:\/\/cb.plmvshfqolmyxvpt.cloud.couchbase.com:18091\/prometheus_sd_config\r\n\u00a0\u00a0\u00a0\u00a0basic_auth:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0username: \"metrics_user\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0password: \"metrics_Passw0rd\"\r\n\u00a0\u00a0\u00a0\u00a0tls_config:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ca_file: \"certs\/couchbase-cloud-root-certificate.pem\"<\/pre>\n<h3><span style=\"font-weight: 400;\">Dirigir su nuevo puesto de trabajo<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">En este punto deber\u00edas tener todo lo que necesitas para a\u00f1adir el nuevo trabajo de scrape a tu servidor Prometheus.  Si todav\u00eda est\u00e1 utilizando Couchbase Server 7.1 entonces ser\u00e1 el <\/span><em><span style=\"font-weight: 400;\">archivo_sd_configs<\/span><\/em><span style=\"font-weight: 400;\"> (con los pasos necesarios para crear el <\/span><span style=\"font-weight: 400;\">objetivos<\/span><span style=\"font-weight: 400;\"> ), y si est\u00e1 ejecutando Server 7.2, el archivo <\/span><em><span style=\"font-weight: 400;\">http_sd_configs<\/span><\/em><span style=\"font-weight: 400;\"> basada en la versi\u00f3n.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A\u00f1ade el nuevo trabajo a tu <\/span><em><span style=\"font-weight: 400;\">prometheus.yml<\/span><\/em><span style=\"font-weight: 400;\">y, a continuaci\u00f3n, vuelva a cargar la configuraci\u00f3n con <\/span><em><span style=\"font-weight: 400;\">matar<\/span><\/em><span style=\"font-weight: 400;\"> que hemos utilizado antes:<\/span><\/p>\n<pre class=\"nums:false lang:sh decode:true\">docker kill --signal SIGHUP $(docker ps --quiet --filter publish=9090)<\/pre>\n<p><span style=\"font-weight: 400;\">A continuaci\u00f3n, puede comprobar los registros para asegurarse de que la configuraci\u00f3n se ha cargado correctamente:<\/span><\/p>\n<pre class=\"nums:false lang:sh decode:true\">docker logs $(docker ps --quiet --filter publish=9090)<\/pre>\n<p><span style=\"font-weight: 400;\">Recuerde que est\u00e1 buscando un <em>Carga del archivo de configuraci\u00f3n<\/em> y, si la configuraci\u00f3n es v\u00e1lida, deber\u00eda aparecer un mensaje de registro <em>Finalizada la carga del archivo de configuraci\u00f3n<\/em>\u00a0inmediatamente despu\u00e9s. Si no se recarga correctamente, hay que solucionar los problemas e intentarlo de nuevo. Una vez que lo haga, vamos a volver a ver la consola de Prometheus en <\/span><a href=\"https:\/\/localhost:9090\/\"><span style=\"font-weight: 400;\">https:\/\/localhost:9090\/<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Veamos primero nuestra nueva configuraci\u00f3n (<strong>Estado -&gt; Configuraci\u00f3n<\/strong>), que deber\u00eda mostrar el trabajo extra que acabamos de a\u00f1adir.<\/span><\/p>\n<p>Esta es la configuraci\u00f3n completa utilizando File-based Service Discovery:<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/05.Prometheus.Config.with_.Capella.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-15003\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/05.Prometheus.Config.with_.Capella-1024x642.png\" alt=\"\" width=\"900\" height=\"564\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/05.Prometheus.Config.with_.Capella-1024x642.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/05.Prometheus.Config.with_.Capella-300x188.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/05.Prometheus.Config.with_.Capella-768x482.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/05.Prometheus.Config.with_.Capella-1536x963.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/05.Prometheus.Config.with_.Capella-2048x1284.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/05.Prometheus.Config.with_.Capella-1320x828.png 1320w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<p>Y aqu\u00ed hay un fragmento que muestra el scrape basado en HTTP en su lugar:<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/image_2023-11-02_172542859.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-15037\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/image_2023-11-02_172542859-1024x140.png\" alt=\"\" width=\"885\" height=\"121\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/image_2023-11-02_172542859-1024x140.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/image_2023-11-02_172542859-300x41.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/image_2023-11-02_172542859-768x105.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/image_2023-11-02_172542859-1536x210.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/image_2023-11-02_172542859-1320x180.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/image_2023-11-02_172542859.png 1748w\" sizes=\"auto, (max-width: 885px) 100vw, 885px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Ahora, si nos fijamos en <strong>Estado -&gt; Objetivos<\/strong>deber\u00eda mostrar todos los nodos de su base de datos Capella. Por ejemplo, este es nuestro cluster antes de la actualizaci\u00f3n a Server 7.2:<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/06.Prometheus.Targets.with_.Capella.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-15004\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/06.Prometheus.Targets.with_.Capella-1024x469.png\" alt=\"\" width=\"900\" height=\"412\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/06.Prometheus.Targets.with_.Capella-1024x469.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/06.Prometheus.Targets.with_.Capella-300x137.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/06.Prometheus.Targets.with_.Capella-768x351.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/06.Prometheus.Targets.with_.Capella-1536x703.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/06.Prometheus.Targets.with_.Capella-2048x937.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/06.Prometheus.Targets.with_.Capella-1320x604.png 1320w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<p>En relaci\u00f3n con esto, si los Objetivos no son lo que usted esperaba, <strong>Estado -&gt; Descubrimiento de servicios<\/strong> le mostrar\u00e1 de d\u00f3nde viene cada endpoint. Aqu\u00ed est\u00e1 el estado de Service Discovery para nuestro cl\u00faster actualizado, donde estamos usando HTTP SD (recortado para mostrar s\u00f3lo los primeros nodos):<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/image_2023-11-02_172853103.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-15038 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/image_2023-11-02_172853103-1024x413.png\" alt=\"\" width=\"900\" height=\"363\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/image_2023-11-02_172853103-1024x413.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/image_2023-11-02_172853103-300x121.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/image_2023-11-02_172853103-768x310.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/image_2023-11-02_172853103-1536x620.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/image_2023-11-02_172853103-1320x533.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/image_2023-11-02_172853103.png 1803w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Ahora que hemos a\u00f1adido nuestra base de datos Capella, \u00bfc\u00f3mo comprobamos que realmente estamos obteniendo algo \u00fatil?<\/span><\/p>\n<p><span style=\"font-weight: 400;\">En primer lugar, si volvemos al gr\u00e1fico anterior, veremos que el n\u00famero de series temporales almacenadas (<\/span><em><span style=\"font-weight: 400;\">prometheus_tsdb_head_series<\/span><\/em><span style=\"font-weight: 400;\">) ha crecido considerablemente:<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/07.Prometheus.Graphs.with_.Capella.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-15005\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/07.Prometheus.Graphs.with_.Capella-1024x590.png\" alt=\"\" width=\"900\" height=\"519\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/07.Prometheus.Graphs.with_.Capella-1024x590.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/07.Prometheus.Graphs.with_.Capella-300x173.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/07.Prometheus.Graphs.with_.Capella-768x443.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/07.Prometheus.Graphs.with_.Capella-1536x885.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/07.Prometheus.Graphs.with_.Capella-2048x1180.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/07.Prometheus.Graphs.with_.Capella-1320x761.png 1320w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Entonces podemos confirmar que efectivamente tenemos algunas m\u00e9tricas de Couchbase Server capturadas. Tenemos las m\u00e9tricas <\/span><em><span style=\"font-weight: 400;\">viaje-muestra<\/span><\/em><span style=\"font-weight: 400;\"> cargado en nuestra base de datos, que contiene algo m\u00e1s de 63.000 elementos. Si consultamos <\/span><em><span style=\"font-weight: 400;\">kv_curr_items<\/span><\/em><span style=\"font-weight: 400;\"> podemos ver que cada uno de nuestros tres nodos de Servicio de Datos tiene ~21.000 elementos cada uno:<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/08.Prometheus.Graphs.travel-sample.kv_curr_items.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-15006\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/08.Prometheus.Graphs.travel-sample.kv_curr_items-1024x625.png\" alt=\"\" width=\"900\" height=\"549\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/08.Prometheus.Graphs.travel-sample.kv_curr_items-1024x625.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/08.Prometheus.Graphs.travel-sample.kv_curr_items-300x183.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/08.Prometheus.Graphs.travel-sample.kv_curr_items-768x469.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/08.Prometheus.Graphs.travel-sample.kv_curr_items-1536x937.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/08.Prometheus.Graphs.travel-sample.kv_curr_items-2048x1250.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/08.Prometheus.Graphs.travel-sample.kv_curr_items-1320x805.png 1320w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<h2><span style=\"font-weight: 400;\">Conclusi\u00f3n<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">En este art\u00edculo te hemos mostrado c\u00f3mo ejecutar un servidor Prometheus sencillo en tu entorno de desarrollo local, y c\u00f3mo puedes a\u00f1adir tu base de datos Couchbase Capella Database para que puedas empezar a monitorizarla. En los siguientes posts de esta serie, te mostraremos qu\u00e9 puedes hacer con esas m\u00e9tricas ahora que las tienes.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Como siempre, agradecemos todos y cada uno de los comentarios, por favor, no dude en ponerse en contacto con nosotros dejando un comentario aqu\u00ed, o puede encontrarnos en nuestro <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/forums\/\"><span style=\"font-weight: 400;\">Foros<\/span><\/a><span style=\"font-weight: 400;\">o nuestro <\/span><a href=\"https:\/\/discord.gg\/hFF3tUyhD3\"><span style=\"font-weight: 400;\">Discordia<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>In this blog post, the first in a series, we&#8217;re going to show you how to set up a Prometheus server and connect it to your Couchbase Capella Database in order to collect metrics. What is Prometheus? Prometheus is a [&hellip;]<\/p>","protected":false},"author":84547,"featured_media":14998,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2225,1816],"tags":[2384,9892,1335,2383],"ppma_author":[9841],"class_list":["post-14996","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud","category-couchbase-server","tag-grafana","tag-metrics","tag-monitoring","tag-prometheus"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Scraping Database Metrics from Couchbase Capella with Prometheus - The Couchbase Blog<\/title>\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\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Scraping Database Metrics from Couchbase Capella with Prometheus\" \/>\n<meta property=\"og:description\" content=\"In this blog post, the first in a series, we&#8217;re going to show you how to set up a Prometheus server and connect it to your Couchbase Capella Database in order to collect metrics. What is Prometheus? Prometheus is a [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-30T19:43:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-18T20:31:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/00.Cover_.Image_-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Chris Malarky\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Chris Malarky\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/\"},\"author\":{\"name\":\"Chris Malarky\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/6f0c497c9566079f9b522e37181f77b4\"},\"headline\":\"Scraping Database Metrics from Couchbase Capella with Prometheus\",\"datePublished\":\"2023-10-30T19:43:23+00:00\",\"dateModified\":\"2023-12-18T20:31:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/\"},\"wordCount\":3259,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/00.Cover_.Image_-1.png\",\"keywords\":[\"Grafana\",\"metrics\",\"monitoring\",\"Prometheus\"],\"articleSection\":[\"Couchbase Capella\",\"Couchbase Server\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/\",\"name\":\"Scraping Database Metrics from Couchbase Capella with Prometheus - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/00.Cover_.Image_-1.png\",\"datePublished\":\"2023-10-30T19:43:23+00:00\",\"dateModified\":\"2023-12-18T20:31:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/00.Cover_.Image_-1.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/00.Cover_.Image_-1.png\",\"width\":1024,\"height\":512,\"caption\":\"Scraping Database Metrics from Couchbase Capella with Prometheus\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Scraping Database Metrics from Couchbase Capella with Prometheus\"}]},{\"@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\/6f0c497c9566079f9b522e37181f77b4\",\"name\":\"Chris Malarky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/94dafb25331f3cf831d51a9833e8e665\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d3be458e2bfa84dfb7d92a892615748309bcb553322018b073ec003ee3e91276?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d3be458e2bfa84dfb7d92a892615748309bcb553322018b073ec003ee3e91276?s=96&d=mm&r=g\",\"caption\":\"Chris Malarky\"},\"description\":\"Chris Malarky is a Senior Product Manager in the Platform and Security Product Management team at Couchbase, with responsibilities covering Reliability, Availability, Serviceability (RAS), and Monitoring and Observabilty, across both Couchbase Server and Capella, Couchbase's SaaS Database offering. Chris is also the Product Manager for Cloud Native technologies at Couchbase, including the Couchbase Autonomous Operator for Kubernetes\/OpenShift. Prior to Product Management, Chris was a Senior Technical Support Engineer and Manager in Couchbase's global Technical Support team, and before joining Couchbase they had experience in Software Engineering, Application Support, System Administration, and Network Management across a wide range of industries and technologies. https:\/\/www.linkedin.com\/in\/malarky\/\",\"sameAs\":[\"https:\/\/linkedin.com\/in\/malarky\"],\"honorificPrefix\":\"Mx\",\"gender\":\"non-binary\",\"jobTitle\":\"Senior Product Manager\",\"worksFor\":\"Couchbase, Inc.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/chrismalarky\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Scraping Database Metrics from Couchbase Capella with Prometheus - The Couchbase Blog","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\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/","og_locale":"es_MX","og_type":"article","og_title":"Scraping Database Metrics from Couchbase Capella with Prometheus","og_description":"In this blog post, the first in a series, we&#8217;re going to show you how to set up a Prometheus server and connect it to your Couchbase Capella Database in order to collect metrics. What is Prometheus? Prometheus is a [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/","og_site_name":"The Couchbase Blog","article_published_time":"2023-10-30T19:43:23+00:00","article_modified_time":"2023-12-18T20:31:06+00:00","og_image":[{"width":1024,"height":512,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/10\/00.Cover_.Image_-1.png","type":"image\/png"}],"author":"Chris Malarky","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Chris Malarky","Est. reading time":"16 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/"},"author":{"name":"Chris Malarky","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/6f0c497c9566079f9b522e37181f77b4"},"headline":"Scraping Database Metrics from Couchbase Capella with Prometheus","datePublished":"2023-10-30T19:43:23+00:00","dateModified":"2023-12-18T20:31:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/"},"wordCount":3259,"commentCount":2,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/00.Cover_.Image_-1.png","keywords":["Grafana","metrics","monitoring","Prometheus"],"articleSection":["Couchbase Capella","Couchbase Server"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/","url":"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/","name":"Scraping Database Metrics from Couchbase Capella with Prometheus - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/00.Cover_.Image_-1.png","datePublished":"2023-10-30T19:43:23+00:00","dateModified":"2023-12-18T20:31:06+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/00.Cover_.Image_-1.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/10\/00.Cover_.Image_-1.png","width":1024,"height":512,"caption":"Scraping Database Metrics from Couchbase Capella with Prometheus"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/scraping-database-metrics-from-couchbase-capella-with-prometheus\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Scraping Database Metrics from Couchbase Capella with Prometheus"}]},{"@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\/6f0c497c9566079f9b522e37181f77b4","name":"Chris Malarky","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/94dafb25331f3cf831d51a9833e8e665","url":"https:\/\/secure.gravatar.com\/avatar\/d3be458e2bfa84dfb7d92a892615748309bcb553322018b073ec003ee3e91276?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d3be458e2bfa84dfb7d92a892615748309bcb553322018b073ec003ee3e91276?s=96&d=mm&r=g","caption":"Chris Malarky"},"description":"Chris Malarky is a Senior Product Manager in the Platform and Security Product Management team at Couchbase, with responsibilities covering Reliability, Availability, Serviceability (RAS), and Monitoring and Observabilty, across both Couchbase Server and Capella, Couchbase's SaaS Database offering. Chris is also the Product Manager for Cloud Native technologies at Couchbase, including the Couchbase Autonomous Operator for Kubernetes\/OpenShift. Prior to Product Management, Chris was a Senior Technical Support Engineer and Manager in Couchbase's global Technical Support team, and before joining Couchbase they had experience in Software Engineering, Application Support, System Administration, and Network Management across a wide range of industries and technologies. https:\/\/www.linkedin.com\/in\/malarky\/","sameAs":["https:\/\/linkedin.com\/in\/malarky"],"honorificPrefix":"Mx","gender":"non-binary","jobTitle":"Senior Product Manager","worksFor":"Couchbase, Inc.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/chrismalarky\/"}]}},"authors":[{"term_id":9841,"user_id":84547,"is_guest":0,"slug":"chrismalarky","display_name":"Chris Malarky","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/d3be458e2bfa84dfb7d92a892615748309bcb553322018b073ec003ee3e91276?s=96&d=mm&r=g","author_category":"","last_name":"Malarky","first_name":"Chris","job_title":"","user_url":"","description":"Chris Malarky es un Gerente de Producto Senior en el equipo de Gesti\u00f3n de Producto de Plataforma y Seguridad en Couchbase, con responsabilidades que cubren Fiabilidad, Disponibilidad, Capacidad de Servicio (RAS), y Monitoreo y Observabilidad, tanto en Couchbase Server como en Capella, la oferta de Base de Datos SaaS de Couchbase.  Chris tambi\u00e9n es el Gerente de Producto para tecnolog\u00edas Cloud Native en Couchbase, incluyendo el Operador Aut\u00f3nomo de Couchbase para Kubernetes\/OpenShift.  Antes de la gesti\u00f3n de productos, Chris era un ingeniero de soporte t\u00e9cnico senior y gerente en el equipo de soporte t\u00e9cnico global de Couchbase, y antes de unirse a Couchbase ten\u00edan experiencia en ingenier\u00eda de software, soporte de aplicaciones, administraci\u00f3n de sistemas y gesti\u00f3n de redes en una amplia gama de industrias y tecnolog\u00edas. https:\/\/www.linkedin.com\/in\/malarky\/"}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/14996","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\/84547"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=14996"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/14996\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/14998"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=14996"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=14996"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=14996"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=14996"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}