Kubernetes

Monitorización Prometheus de Couchbase Mobile Kubernetes Cluster

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.

En yaml Los archivos de configuración a los que se hace referencia en este post están disponibles en la carpeta "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

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.

  • Despliegue del Cuadro de Mando
    El gráfico Prometheus se despliega en el prometheus espacio de nombres

  • Verificar la instalación
    La salida debería mostrar los Pods correspondientes a la pila Prometheus

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.

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

  • Compruebe el estado de la implantación. Este clúster de muestra incluye dos nodos Sync Gateway.

  • Puede ver los detalles del pod Sync Gateway y comprobar que contiene el contenedor exportador

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.

  • Despliegue del servicio

  • 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.

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.

  • Despliegue del servicio

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

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.

Acceda a la webUI de Prometheus en su navegador local

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.

  • Acceda a la webUI del panel de control de Grafana en su navegador local.

  • 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.jsonnet está 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 ejecutando escriba a en el grafana-dev objetivo. Esto hace lo siguiente:

    • Regenera el dashboard.json salpicadero del salpicadero.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

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.

 

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Priya Rajagopal, Directora de Gestión de Productos

Priya Rajagopal es directora sénior de gestión de productos en Couchbase y responsable de las plataformas de desarrollo para la nube y el perímetro. Lleva más de 20 años dedicándose profesionalmente al desarrollo de software en varios puestos de liderazgo técnico y de producto, con más de 10 años centrados en tecnologías móviles. Como delegada de estándares IPTV de TISPAN, fue una colaboradora clave en las especificaciones de estándares IPTV. Tiene 22 patentes en las áreas de redes y seguridad de plataformas.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.