En Couchbase Móvil 2.5 introdujo una amplia informes estadísticos capacidades en el Pasarela de sincronizaciónLas estadísticas proporcionan información clave sobre la salud de su implementación de Couchbase Mobile y constituyen una parte integral de cualquier implementación.
En este artículo explicamos cómo puede utilizar Prometeouna plataforma de supervisión y alerta de código abierto para supervisar sus nodos Sync Gateway y Grafana para visualizar las estadísticas. En un próximo post relacionado, vamos a discutir cómo se puede configurar el monitoreo con Prometheus en un Clúster Kubernetes de Couchbase Mobile.
Fondo
Informes estadísticos de Sync Gateway
Las estadísticas de Sync Gateway se presentan en formato JSON y están disponibles a través de la función _expvar a través de Sync Gateway Admin REST interfaz.
Estas son las categorías de estadísticas de las que se informa.
Prometeo
Prometeo es una plataforma de alerta y supervisión de sistemas de código abierto alojada en Fundación para la Computación Nativa en la Nube. Su núcleo es la Servidor Prometheus que se encarga de sondear los "objetivos de Prometheus" para obtener estadísticas y almacenarlas como datos de series temporales. Los objetivos Prometheus se configuran estáticamente o pueden ser descubiertos por Prometheus.
Grafana
Grafana es una plataforma de alerta y visualización de datos de código abierto. Admite Prometheus como fuente de datos y puede utilizarse para crear cuadros de mando completos.
Presentación del exportador de Prometheus Sync Gateway
Para que Prometheus pueda supervisar el Sync Gateway, necesitamos un "objetivo Prometheus" correspondiente al Sync Gateway. Este objetivo es el Exportador de Sync Gatewayen lo sucesivo denominado "el Exportador". En pocas palabras, el Exportador se encarga de exportar las estadísticas de Sync Gateway a las métricas de Prometheus.

Arquitectura de implantación
Enlazando todo esto, un despliegue típico sería como el siguiente -

- Exportador de Sync Gateway La API REST de Sync Gateway Admin es, por defecto, sólo expuesto en localhost. Esta configuración también se recomienda encarecidamente en entornos de producción. Como resultado, dado que el exportador consulta la API de administración de Sync Gateway para obtener estadísticas, el exportador debe estar en el mismo host/nodo que Sync Gateway. Además, las estadísticas de Sync Gateway se notifican por nodo. Por lo tanto, en un clúster de dos o más nodos de Sync Gateway, cada nodo de Sync Gateway debe tener su propio exportador.
- Servidor Prometheus consulta continuamente las estadísticas del exportador, que a su vez consulta el punto final REST de Sync Gateway. El servidor utiliza las reglas definidas en el rules.yaml para enviar alertas al Gestor de alertas.
- Grafana sondea el servidor Prometheus en busca de estadísticas y las representa gráficamente en un panel basado en web al que se puede acceder a través del navegador web.
Instalación
En el resto del post, vamos a caminar a través de los pasos para configurar un clúster Couchbase Mobile para el monitoreo con el exportador, Prometheus Server y Grafana. Aunque las instrucciones están pensadas para un entorno de desarrollo, puedes personalizarlas fácilmente para un entorno de producción.
Utilizaremos dockerlo que facilitará enormemente la puesta en marcha.
Descarga del código fuente del exportador
Sync Gateway Exporter es de código abierto couchbaselabs y disponible en GitHub. Es compatible con Couchbase Sync Gateway 2.5. Por ello, aunque nos esforzaremos por mantenerlo actualizado con la última versión de Sync Gateway, no podemos garantizarlo. Pero la buena noticia es que es de código abierto e incluye detallada instrucciones sobre cómo ampliarlo para que admita estadísticas adicionales.
Descargue el código fuente del exportador de github
1 |
git clonar https://github.com/couchbaselabs/couchbase-sync-gateway-exporter |
Despliegue de Couchbase Mobile Cluster
Todos los comandos de esta sección deben ejecutarse desde la carpeta raíz del repositorio de github clonado.
1 |
cd /ruta/a/exportador/clonado/repo |
Si ya tienes un cluster de Couchbase Mobile corriendo en docker, puedes saltarte este paso y continuar con el paso "Desplegando el Exportador Sync Gateway". Solo recuerda sustituir el nombre de red docker correspondiente a tu configuración existente en las instrucciones a continuación.
Creación de una red docker
Cuando se utiliza docker, se recomienda ejecutar todos los componentes en la misma red docker.
Crear una red docker con el nombre "demo".
1 |
docker red crear demo |
Despliegue de Couchbase Server
Utilizaremos una imagen docker especial de Couchbase Server v6.0.1 que incluye un bucket de muestra preinstalado llamado "TravelSample", así como un usuario RBAC preconfigurado con "Application Access" que permitiría a Sync Gateway conectarse a Couchbase Server.
Si lo prefiere, puede instalar el imagen docker vainilla de la última versión de Couchbase Server y configurar manualmente con un bucket y un usuario RBAC de Sync Gateway.
1 |
docker ejecute -d -nombre cb -red demo -p 8091-8094:8091-8094 -p 11210:11210 conectav/servidor:6.0.1-empresa |
Implantación de Sync Gateway
Sync Gateway se iniciará con el archivo de configuración denominado sync-gateway-config.json que se encuentra en la carpeta "testdata" del repositorio clonado.
1 |
docker ejecute -p 4984-4985:4984-4985 -red demo -nombre sincronizar-pasarela -d -v `pwd`/datos de prueba/sincronizar-pasarela-config.json:/etc/sync_gateway/sync_gateway.json couchbase/sincronizar-pasarela:2.5.0-empresa -adminInterface :4985 /etc/sync_gateway/sync_gateway.json |
Pruébalo
Confirme que su Sync Gateway está en funcionamiento y que se puede acceder al punto final _expvar ejecutando lo siguiente rizo
comando. Si las cosas funcionan como se espera, debería ver un montón de estadísticas en la consola.
1 |
rizo GET http://localhost:4985/_expvar |
Implantación de Sync Gateway Exporter
La imagen docker de Sync Gateway Exporter está disponible en couchbasesamples/sync-gateway-prometheus-exporter:latest
.
En sgw.url
config es de particular interés. Apunta al servidor Sync Gateway. Si estás trabajando con una implementación existente de Couchbase Mobile, asegúrate de configurar la opción sgw.url
para que apunte al nodo Sync Gateway en su configuración.
El Exportador se vincula a 0.0.0.0
por defecto. Puede anularlo utilizando --Dirección de escucha web
opción.
1 |
docker ejecute -p 9421:9421 -red demo -nombre exportador -d couchbasesamples/sincronizar-pasarela-prometheus-exportador:última --registro.nivel=depurar --sgw.url=http://sync-gateway:4985 |
Pruébalo
Confirme que el exportador está en funcionamiento con lo siguiente rizo
mando.
1 |
rizo http://localhost:9421/metrics |
Si las cosas están funcionando, habrá un montón de métricas de salida a la consola. Confirme que el "sgw_up 1".

Despliegue de Prometheus Server
Ahora que el exportador exporta estadísticas desde Sync Gateway, configuraremos Prometheus para que sondee el exportador en busca de métricas.
Exploración del archivo prometheus.yml
En prometheus.yml
especifica la configuración con la que se lanza el servidor Prometheus. Se encuentra en la carpeta "testdata" del repositorio clonado. Examinemos el contenido de este archivo.
1 2 3 |
global: intervalo_raspado: 5s intervalo_de_evaluación: 5s |
1 2 3 4 5 6 7 8 |
archivos_regla: - &apos;/etc/prometheus/normas/*&apos; scrape_configs: - nombre_trabajo: swg static_configs: - objetivos: - exportador:9421</código></pre> |
- En
intervalo_raspado
especifica el intervalo de sondeo. Puede ajustarlo según sus necesidades - En
archivos_regla
especifica la ubicación del archivo de reglas de Prometheus. El archivo de reglas de Prometheus,sync-gateway.rules.yml
se encuentra entestdata/rules/
en el repositorio clonado. Prometheus utiliza las reglas para activar alertas. Hemos proporcionado un conjunto básico de reglas como punto de partida. Puede personalizar las reglas según sea necesario. El archivo de reglas se monta en/etc/prometheus/reglas
cuando se lanza el contenedor docker. - En
objetivos
especifica los objetivos de Prometheus que son el Exportador. Puede tener varios exportadores si tiene varias puertas de enlace de sincronización. En ese caso, puede especificar estáticamente todos los puntos finales del Exportador o configure Prometeo para descubrir los objetivos.
Instalación de la imagen Docker
Desplegaremos la imagen docker oficial prom/prometheus
con el prometheus.yml
incluido en el repositorio clonado.
1 |
docker ejecute -p 9090:9090 -red demo -nombre prometheus -d -v `pwd`/datos de prueba/prometheus.yml:/etc/prometheus/prometheus.yml -v `pwd`/datos de prueba/normas:/etc/prometheus/normas baile de graduación/prometheus |
Pruébalo
Abrir la URL http://localhost:9090/graph
en un navegador web.
- Haga clic en el botón "Insertar métrica en el cursor" para ver la lista de métricas disponibles de Sync Gateway.
- Haga clic en "Estado"->"Objetivos" para ver la lista de exportadores y sus estadísticas
- Haga clic en el botón de menú "Alertas" para ver el estado de las alertas
Despliegue de Grafana
Aunque podrías utilizar la interfaz de usuario web de Prometheus para visualizar las estadísticas, nosotros utilizaremos Grafana, ya que puedes crear algunos paneles muy atractivos con ella y Grafana se integra bien con Prometheus.
- Instalaremos el
grafana/grafana:6.2.0
imagen docker. La páginagrafana/datos
en el repositorio clonado contiene el archivografana.db
que se utiliza para mantener el cuadro de mandos y otros metadatos. Se trata de un volumen montado envar/lib/grafana
1 |
docker ejecute -p 3000:3000 -red demo -nombre grafana -d grafana/grafana:6.2.0 -v `pwd`/grafana/datos:/var/lib/grafana |
- Un cuadro de mandos por defecto "Couchbase Sync Gateway" llamado
salpicadero.jsonnet
está disponible en el repositorio clonado como archivo jsonnet archivo. Haga que elgrafana
para generar el correspondientedashboard.json
que puede importarse a Grafana. El panel de control muestra todas las métricas exportadas por el exportador. Puede personalizarlo según sus necesidades.
1 2 3 4 5 6 7 8 |
# Incorpora los submódulos relevantes que jsonnet necesita git submódulo actualización -init -rebase -remoto -recursivo # Hacer que el objetivo grafana genere el archivo dashboard.json escriba a grafana |
Pruébalo
- Abrir la URL
http://localhost:3000
en un navegador web. Debería ver la pantalla de inicio de sesión. Inicie sesión con las credenciales predeterminadas de "admin" y la contraseña de "admin". Puede cambiarla después del inicio de sesión inicial.

- El siguiente paso sería añadir "Prometheus" como "Fuente de datos" e importar el archivo json "Sync Gateway dashboard" que se generó anteriormente. Puede hacer lo siguiente manualmente siguiendo las opciones del menú. ¡Hemos simplificado este proceso y le proporcionamos un script que hará todo eso por usted!
Ejecute el script desde la raíz de su repositorio clonado utilizando el siguiente comandoescriba a
en elgrafana-dev
objetivo. Esto hace lo siguiente
-
- (Re)genera la
dashboard.json
salpicadero delsalpicadero.jsonnet
archivo - Utiliza la API de Grafana para añadir Prometheus como fuente de datos
- Utiliza la API de Grafana para cargar el
dashboard.json
generado en el paso anterior
- (Re)genera la
1 |
escriba a grafana-dev |
- Una vez que el script se haya ejecutado correctamente, deberás actualizar la interfaz web de Grafana en tu navegador. Verás "Couchbase Sync Gateway Dashboard" en la lista de dashboards disponibles. El panel muestra todas las estadísticas reportadas por Sync Gateway. Puedes personalizar el panel.

- Haz clic en "Couchbase Sync Gateway Dashboard" para ver las estadísticas. Puedes filtrarlas por Sync Gateway (si tienes más de una) o base de datos

Ya está. Has configurado con éxito la monitorización con Prometheus y Grafana. Ahora puedes controlar las réplicas con clientes Couchbase Lite y monitorizarlas. El panel por defecto de Sync Gateway es un punto de partida. Puedes personalizarlo editando el archivo salpicadero.jsonnet
o directamente a través de la interfaz de usuario de Grafana.
TL;DR
En lugar de ejecutar cada contenedor de forma independiente, puede realizar un lanzamiento multicontenedor utilizando docker-compose.
El repositorio incluye docker-compose.yml
que puedes usar para lanzar todos los contenedores incluyendo Couchbase Server, Sync Gateway, Exporter, Prometheus y Grafana . Hay algunas advertencias. Puedes aprender más sobre ello aquí
1 |
docker-componer arriba |
El futuro
Con Sync Gateway Exporter, puede exportar estadísticas de Sync Gateway a Prometheus y visualizarlas con herramientas de visualización como Grafana. Esto simplifica enormemente la monitorización de tus clústeres de Couchbase Mobile. Además de Exporter, hemos proporcionado un dashboard Grafana por defecto que puedes personalizar. personalizando el propio dashboard, también puedes personalizar las reglas para las alertas. Aunque hemos discutido la instalación usando contenedores docker, también puedes instalar los binarios directamente.
En el próximo blog, vamos a discutir cómo se puede implementar el exportador en un clúster que ejecuta Kubernetes. ¡Así que manténgase en sintonía para eso!
Si tiene alguna pregunta o sugerencia, deje un comentario a continuación o póngase en contacto conmigo en Twitter @rajagp o envíeme un correo electrónico priya.rajagopal@couchbase.com. En Foros de Couchbase son otro buen lugar para plantear preguntas.
Agradecimientos
Me gustaría dar las gracias a Carlos Becker por su trabajo en la creación de la primera versión de Sync Gateway Exporter.