ACTUALIZACIÓN: A partir de la versión 2.8, Sync Gateway incluye soporte integrado para el exportador Prometheus. Las estadísticas se exportan en formato compatible con Prometheus a través del punto final de métricas. Esto implica que ya no es necesario tener un exportador separado. Lee la documentación de Couchbase para más detalles sobre supervisión de Sync Gateway v2.8+ mediante el nuevo punto final.
En Couchbase Móvil 2.5 introdujo una amplia informes estadísticos capacidades en el Pasarela de sincronización. Las estadísticas proporcionan información clave sobre la salud de su despliegue Couchbase Mobile y constituye una parte integral de cualquier despliegue.
Esta es una guía paso a paso para utilizar Prometeo (supervisión y alerta de código abierto) con clústeres Sync Gateway en Kubernetes. Utilizaremos Grafana para visualizar las estadísticas.
A menudo se afirma que Prometheus y Kubernetes comparten un "ascendencia espiritual". Ambos proyectos están alojados en la Fundación para la Computación Nativa en la Nube. Se rigen por objetivos de diseño comunes, lo que hace que Prometheus sea muy adecuado para supervisar las implementaciones de Kubernetes.
En un post relacionadoEn el artículo anterior, hablamos de la configuración de la monitorización con Prometheus en un clúster de Couchbase Mobile en un entorno sin Kubernetes. Si habías seguido ese post, puedes saltarte las secciones iniciales y pasar directamente a la sección Arquitectura de implantación sección.
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 monitorización de sistemas de código abierto. En su núcleo, Servidor Prometheus es responsable 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
Si unimos todo esto, un despliegue típico tiene el siguiente aspecto:

Vale... parece mucho más complejo de lo que es en realidad. De hecho, es bastante sencillo:
Contenedor exportador de Sync Gateway
Los contenedores Exporter y Sync Gateway deben estar ubicados en el mismo pod utilizando el patrón sidecar. 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. Dado que el exportador consulta la API de administración de Sync Gateway para obtener estadísticas, 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.
Servicio Exportador de Sync Gateway
Los pods de Sync Gateway que contienen el exportador deben estar expuestos a otros servicios del clúster. En Kubernetes, esto se hace a través de un comando Servicio de red Kubernetes. El servicio exportador de Sync Gateway expone los pods de Sync Gateway y los hace accesibles al servicio Prometheus.
Operador de Prometheus
Sondea continuamente el exportador en busca de estadísticas, que a su vez sondea el punto final REST de Sync Gateway. El servidor utiliza las reglas definidas en el rules.yaml para enviar alertas al Gestor de alertas. La forma más sencilla de desplegar Prometheus en el clúster de Kubernetes es utilizando el comando Operador de Prometheus. El Operador de Prometheus se encarga de desplegar la pila de Prometheus incluyendo el Gestor de Alertas y Grafana.
El operador actúa sobre una serie de definiciones de recursos personalizadas (CRD). La más interesante es la Monitor de servicio. El monitor de servicios se encarga de definir cómo se van a supervisar los servicios. En este caso, se supervisan los pods de Sync Gateway que se exponen a través del servicio Sync Gateway Exporter.
Grafana
El servicio 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. Para acceder al panel de Grafana desde fuera del clúster, tendrá que utilizar el reenvío de puertos. También podría exponerlo utilizando NodePort o el equivalente en Kubernetes. De nuevo, Prometheus Operator debería encargarse de desplegarlo.
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. La buena noticia es que es de código abierto e incluye detallada instrucciones sobre cómo ampliarlo para que admita estadísticas adicionales.
Clona el código fuente de Exporter de Github y actualiza los submódulos relevantes. El repositorio incluye todos los yaml que se utilizarán para la implantación.
|
1 2 3 |
git clonar https://github.com/couchbaselabs/couchbase-sync-gateway-exporter git submódulo actualización --init --rebase --remoto --recursivo |
En yaml Los archivos de configuración a los que se hace referencia en este post están disponibles en la carpeta "kubernetes".
|
1 |
cd /ruta/a/clonado/exportador/fuente/kubernetes |
Instalación
En el resto del post, vamos a caminar a través de los pasos para configurar el monitoreo en un clúster Couchbase Mobile en el clúster Kubernetes. Las instrucciones aquí descritas deberían aplicarse a cualquier despliegue gestionado de Kubernetes.
Despliegue del clúster de servidores Couchbase
Siga las instrucciones aquí para desplegar la última versión del cluster de Couchbase Server usando Couchbase Autonomous Operator.
Despliegue del clúster de Sync Gateway
Siga las instrucciones aquí para desplegar un clúster de Sync Gateway en Kubernetes
Despliegue de Prometheus y Grafana
Existen varios opciones para desplegar Prometheus. De hecho, la mayoría de los servicios gestionados de Kubernetes pueden tener opciones
Una de las opciones más sencillas es desplegar utilizando la función Operador de Prometheus utilizando Timón.
El gráfico de Prometheus desplegará toda la pila de monitorización, incluido el servidor de Prometheus, Grafana, Alert Manager, etc.
Instalación de Helm
Si ya tiene Helm funcionando en su cluster, omita este paso
|
1 2 3 4 |
kubectl crear cuenta de servicio --espacio de nombres kube-sistema labrador kubectl crear clusterrolebinding labrador-grupo-admin --clusterrole=grupo-admin --cuenta de servicio=kube-sistema:labrador timón init --servicio-cuenta labrador --actualizar |
Instalación de Prometheus
Instale el Operador Prometheus ejecutando este comando desde la raíz del repositorio clonado.
- Cree un nuevo archivo de configuración llamado valores.yaml utilizando un editor de texto. La clave es la contraseña de administrador por defecto que se utiliza para iniciar sesión en el panel de control de Grafana. Puedes cambiarla después del inicio de sesión inicial.
- En valores.yaml también está disponible en repositorio de fuentes.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
prometheus: prometheusSpec: réplicas: 1 imagen: etiqueta: v2.10.0 serviceMonitorSelectorNilUsesHelmValues: falso serviceMonitorNamespaceSelector: {} serviceMonitorSelector: {} ruleSelectorNilUsesHelmValues: falso ruleNamespaceSelector: {} ruleSelector: {} prometheusOperator: imagen: etiqueta: v0.30.0 grafana: adminContraseña: admin |
- Despliegue del Cuadro de Mando
El gráfico Prometheus se despliega en el prometheus espacio de nombres
|
1 |
timón instale --espacio de nombres prometheus --nombre baile de graduación estable/prometheus-operador -f valores.yaml --versión 5.10.4 |
- Verificar la instalación
La salida debería mostrar los Pods correspondientes a la pila Prometheus
|
1 2 3 4 5 6 7 8 9 10 11 |
kubectl -n prometheus consiga vainas NOMBRE LISTO ESTADO RESTARTS EDAD alertmanager-baile de graduación-prometheus-operador-alertmanager-0 2/2 Ejecutar 0 27d baile de graduación-grafana-6459ffb669-6qzht 2/2 Ejecutar 9 27d baile de graduación-kube-estado-métricas-55bc76f8c4-dppcz 1/1 Ejecutar 0 27d baile de graduación-prometheus-nodo-exportador-6j9lz 1/1 Ejecutar 0 27d baile de graduación-prometheus-nodo-exportador-7wd68 1/1 Ejecutar 0 27d baile de graduación-prometheus-nodo-exportador-7wqgz 1/1 Ejecutar 0 27d baile de graduación-prometheus-operador-operador-6b48475c74-srwwl 1/1 Ejecutar 0 27d prometheus-baile de graduación-prometheus-operador-prometheus-0 3/3 Ejecutar 0 27d |
Implantación de Sync Gateway Exporter
Con la pila de monitorización de Prometheus configurada, es hora de instalar el Exportador para la monitorización.
El contenedor Exporter se desplegará en el mismo pod que el Sync Gateway utilizando el patrón de contenedor sidecar. Para ello, actualizaremos el clúster Sync Gateway Despliegue para incluir el despliegue del contenedor Exportador con couchbasesamples/sync-gateway-prometheus-exporter:latest disponible en Docker Hub.
- Abra el sgw-despliegue.yaml en un editor de texto y actualícelo para incluir el contenedor Exportador como se muestra a continuación.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
apiVersion: extensiones/v1beta1 amable: Despliegue metadatos: nombre: sincronizar-pasarela spec: réplicas: 1 plantilla: metadatos: etiquetas: aplicación: sincronizar-pasarela spec: afinidad: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - clave: aplicación operador: En valores: - sincronizar-pasarela topologíaClave: "kubernetes.io/hostname" contenedores: - nombre: sincronizar-pasarela imagen: couchbase/sincronizar-pasarela:2.6.0-empresa args: ["/sync-gateway-config/sgw-config.json"] volumeMounts: - nombre: sgw-config-volumen mountPath: /sincronizar-pasarela-config readOnly: verdadero env: - nombre: GOMAXPROCS valor: "1" recursos: solicita: cpu: 250m límites: cpu: 250m - nombre: exportador imagen: couchbasesamples/sincronizar-pasarela-prometheus-exportador:última args: ["--log.level=info"] env: - nombre: GOMAXPROCS valor: "1" puertos: - nombre: http containerPort: 9421 recursos: solicita: cpu: 100m límites: cpu: 100m volúmenes: - nombre: sgw-config-volumen secreto: secretName: sgw-config |
Si tiene un nodo de importación Sync Gateway, tendrá que actualizar sgw-deployment-import.yaml también.
- Una vez actualizado el archivo yaml, aplíquelo a su clúster
|
1 |
kubectl aplicar -f sgw-despliegue.yaml |
- Compruebe el estado de la implantación. Este clúster de muestra incluye dos nodos Sync Gateway.
|
1 2 3 4 5 6 7 8 9 10 |
kubectl consiga vainas NOMBRE LISTO ESTADO RESTARTS EDAD cb-ejemplo-0000 1/1 Ejecutar 0 35d cb-ejemplo-0001 1/1 Ejecutar 0 35d cb-ejemplo-0002 1/1 Ejecutar 0 35d couchbase-operador-84cd9f6598-6mm8r 1/1 Ejecutar 4 56d couchbase-operador-admisión-6c974bf6f-77qmk 1/1 Ejecutar 0 56d sincronizar-pasarela-54b46fdbc6-2c56l 2/2 Ejecutar 0 29d sincronizar-pasarela-importar-b448f69dd-wjd8g 2/2 Ejecutar 0 29d |
- Puede ver los detalles del pod Sync Gateway y comprobar que contiene el contenedor exportador
|
1 2 3 4 5 6 |
kubectl top vaina sincronizar-pasarela-54b46fdbc6-2c56l --contenedores POD NOMBRE CPU(núcleos) MEMORIA(bytes) sincronizar-pasarela-54b46fdbc6-2c56l sincronizar-pasarela 140m 20Mi sincronizar-pasarela-54b46fdbc6-2c56l exportador 0m 3Mi |
Implantación del servicio exportador de Sync Gateway
A continuación, desplegamos un servicio Kubernetes que expone los nodos Sync Gateway y los pone a disposición de otros nodos del clúster.
- Cree un nuevo archivo de configuración llamado svc.yaml utilizando un editor de texto. El sitio svc.yaml también está disponible en repositorio de fuentes.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
apiVersion: v1 amable: Servicio metadatos: nombre: sincronizar-pasarela-exportador espacio de nombres: couchbase etiquetas: aplicación: sincronizar-pasarela spec: puertos: - puerto: 9421 protocolo: TCP targetPort: http nombre: http selector: aplicación: sincronizar-pasarela tipo: ClusterIP |
- Despliegue del servicio
|
1 |
kubectl aplicar -f svc.yaml |
- Verifique la instalación. El punto clave a tener en cuenta en la salida es que el servicio apunta a los dos puntos finales de Sync Gateway.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
kubectl describa servicio sincronizar-pasarela-exportador Nombre: sincronizar-pasarela-exportador Espacio de nombres: por defecto Etiquetas: aplicación=sincronizar-pasarela Anotaciones: kubectl.kubernetes.io/último-aplicado-configuración={"apiVersion":"v1","tipo":"Servicio","metadatos":{"anotaciones":{},"etiquetas":{"app":"sync-gateway"},"nombre":"sync-gateway-exporter","espacio de nombres":"por defecto"},... Selector: aplicación=sincronizar-pasarela Tipo: ClusterIP IP: 10.15.254.14 Puerto: http 9421/TCP Puerto de destino: http/TCP Puntos finales: 10.12.0.41:9421,10.12.2.42:9421 Sesión Afinidad: Ninguno Eventos: <ninguno> |
Configuración de Prometheus Service Monitor
Para que Prometheus descubra el servicio Sync Gateway Exporter, tendremos que definir una directiva ServiceMonitor. Como ya se ha dicho, el Prometheus ServiceMonitor especifica cómo deben supervisarse los servicios. Prometheus Operator genera la configuración de raspado de Prometheus basándose en la definición.
- Cree un nuevo archivo de configuración llamado servicemonitor.yaml utilizando un editor de texto. El sitio servicemonitor.yaml también está disponible en repositorio de fuentes.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
apiVersion: control.coreos.com/v1 amable: ServiceMonitor metadatos: nombre: sincronizar-pasarela espacio de nombres: por defecto etiquetas: aplicación: sincronizar-pasarela spec: jobLabel: sincronizar-pasarela selector: matchLabels: aplicación: sincronizar-pasarela namespaceSelector: matchNames: - por defecto puntos finales: - puerto: http # comente las siguientes líneas para utilizar la IP del pod en lugar de su nombre como instancia: reetiquetado: - sourceLabels: [__meta_kubernetes_pod_name] separador: ; regex: (.*) targetLabel: instancia sustitución: $1 acción: sustituir |
- Despliegue del servicio
|
1 |
kubectl aplicar -f servicemonitor.yaml |
Configuración de las alertas de Prometheus
Este paso es opcional y sólo es necesario si desea que Prometheus Alerting Manager envíe alertas. Las alertas se basan en un conjunto de reglas de alerta configuradas:
- Una muestra rules.yaml está disponible en repositorio de fuentes. Incluye algunas reglas de ejemplo definidas por este especificación. Puedes editarlo para adaptarlo a tu entorno.
- Aplicar las normas
|
1 |
kubectl aplicar -f normas.yaml |
Unirlo todo
Verificación de la supervisión de Prometheus
Ahora verificaremos que el Prometheus ServiceMonitor es capaz de acceder y monitorizar el servicio Sync Gateway.
- Habilite el reenvío de puertos desde su máquina local al servidor Prometheus remoto en el puerto 9090. Esto sólo es necesario para realizar pruebas. No es necesario habilitar el reenvío de puertos para las operaciones normales.
|
1 |
kubectl -n prometheus puerto-adelante svc/baile de graduación-prometheus-operador-prometheus 9090:9090 |
Acceda a la webUI de Prometheus en su navegador local
|
1 |
abra http://localhost:9090 |
Si todo va bien, debería ver los nodos de Sync Gateway Exporter listados en el Objetivos menú

Verificación de Grafana
- Habilite el reenvío de puertos desde su máquina local al servidor remoto de Grafana.
|
1 |
kubectl -n prometheus puerto-adelante svc/baile de graduación-grafana 3000:80 |
- Acceda a la webUI del panel de control de Grafana en su navegador local.
|
1 |
abra http://localhost:3000 |
- 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 es configurarlo con el panel de Sync Gateway

- Un cuadro de mandos por defecto "Couchbase Sync Gateway" llamado
salpicadero.jsonnetestá disponible en repositorio de fuentes como jsonnet archivo. - 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 hemos proporcionado un script ¡que hará todo eso por ti!
En primer lugar, asegúrese de que el servicio Grafana se está ejecutando en el puerto 3000. Ejecute el script desde la raíz de su repositorio clonado utilizando el siguiente comando ejecutandoescriba aen elgrafana-devobjetivo. Esto hace lo siguiente:- Regenera el
dashboard.jsonsalpicadero delsalpicadero.jsonnetarchivo - Utiliza la API de Grafana para añadir Prometheus como fuente de datos
- Utiliza la API de Grafana para cargar el
dashboard.jsongenerado en el paso anterior
- Regenera el
|
1 |
escriba a grafana-dev |
Estadísticas de Grafana
- Una vez que el script se ejecute correctamente, debes actualizar la interfaz de usuario web de Grafana en tu navegador web. Verás el "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 correctamente la monitorización de Couchbase Sync Gateway Kubernetes con Prometheus. Ahora puedes controlar las réplicas con clientes Couchbase Lite y monitorizarlas.
El panel por defecto de Sync Gateway es un punto de partida. Puede personalizar el panel editando el archivo salpicadero.jsonnet o directamente a través de la interfaz de usuario de Grafana.
El futuro
Prometheus es muy adecuado para supervisar las implantaciones de Kubernetes. 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 supervisión de tus clústeres de Couchbase Mobile.
Además del Exportador, hemos proporcionado un panel de control Grafana predeterminado que puedes personalizar. Además de personalizar el panel en sí, también puedes personalizar las reglas para las alertas.
Si tiene preguntas o comentarios, déjelos a continuación. O no dude en ponerse en contacto conmigo en Twitter @rajagp o por 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.