Para mejorar la accesibilidad de nuestras estadísticas, Couchbase Lanzamiento de Sync Gateway 2.8 integra la Exportador Prometheus directamente en Sync Gateway, lo que reduce los pasos necesarios para configurar una pila de supervisión. En este artículo, explicaremos de dónde proceden las estadísticas y los pasos necesarios para configurar el servidor Prometheus y el panel Grafana para la supervisión nativa en la nube y la visualización de estadísticas.
Esta capacidad estaba disponible en Vista previa para desarrolladores en la versión 2.8, pero luego se convirtió en una función totalmente compatible, activada por defecto en 2.8.2.
Esta entrada del blog sigue en general el mismo formato que la versión anterior de "Monitorización de Couchbase Sync Gateway con Prometheus y Grafana" en el que se hablaba de la supervisión de Sync Gateway mediante un Exportador Prometheus de Sync Gateway.
Fondo
Informes estadísticos de Sync Gateway
Las estadísticas de Sync Gateway se publican en JSON y se puede acceder a ellas fácilmente a través del punto final _expvar que, antes de la versión 2.8, sólo se exponía en la interfaz REST del administrador. Como parte de la versión 2.8, se ha añadido una nueva función métricas que expone las estadísticas de Sync Gateway en un puerto dedicado, al tiempo que garantiza que la interfaz de administración sigue estando protegida. La nueva interfaz métricas también expone una nueva interfaz /_metrics que expone las estadísticas en Formato compatible con Prometheus. A continuación se muestra un ejemplo de todas las categorías de estadísticas disponibles.
Prometeo
Prometheus es una plataforma de alerta y monitorización de sistemas de código abierto alojada en la Cloud Native Computing Foundation. Su núcleo es el servidor Prometheus, responsable de sondear los "objetivos Prometheus" para obtener estadísticas y almacenarlas como datos de series temporales. Los objetivos de 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.
Pasarela de sincronización Prometheus
Como se ha dicho antes, Prometheus necesita un objetivo para sondear las estadísticas. Antes de Sync Gateway 2.8 existía un exportador independiente que se situaba fuera de Sync Gateway. Se trataba de una aplicación independiente que, cuando se consultaba, obtenía las métricas JSON expvar de Sync Gateway y las convertía al formato de Prometheus. Para mejorar la experiencia en el futuro esto ya no es necesario, ya que el exportador se ha integrado directamente en Sync Gateway, accesible en el punto final /_metrics. Esto significa que una vez establecida la configuración, Sync Gateway puede utilizarse directamente como destino para Prometheus.
Arquitectura de implantación
- Sync Gateway - La interfaz de métricas se puede exponer en cualquier puerto elegido. Los únicos datos disponibles en este puerto son las estadísticas expvar y las estadísticas Prometheus.
- Prometheus Server sondeará continuamente las instancias de Sync Gateway en busca de estadísticas. El servidor utiliza los archivos yaml para descubrir las instancias de Sync Gateway que debe sondear y las reglas yaml para enviar alertas al gestor de modificaciones.
- El servicio Grafana se comunica con el servidor Prometheus y lo consulta utilizando el lenguaje de consulta Prometheus (promQL) y grafica las estadísticas en un panel basado en web.
Configurar
Para el resto de este post voy a caminar a través de los pasos para configurar un clúster Sync Gateway con el seguimiento en el lugar usando Prometheus y Grafana. Estas instrucciones están pensadas para un entorno de desarrollo, pero pueden modificarse fácilmente para adaptarse a un entorno de producción.
Para facilitar la configuración, utilizaremos Docker para configurar el entorno, sin embargo, todos los pasos deberían ser relativamente fáciles de traducir en instalaciones directas.
Crear una red Docker
Como hay múltiples componentes y por lo tanto múltiples contenedores involucrados en este proceso se recomienda ejecutar todos los componentes en la misma red Docker. Por lo tanto crearemos una red Docker llamada sgmonitoring usando el siguiente comando:
1 |
docker red crear sgmonitoring |
Configurar Couchbase Server
También debe configurarse una instancia de Couchbase Server para que Sync Gateway se comunique con ella. Para facilitar el proceso de configuración, utilizaremos una imagen Docker preconfigurada que contiene Couchbase Server v6.0.1 con el bucket de ejemplo travel-sample y un usuario con el permiso "Application Access" con el que Sync Gateway se conectará.
También puedes instalar la imagen Docker de Couchbase Server y configurar tu propio bucket y usuario manualmente.
1 |
docker ejecute -d --nombre couchbase --red sgmonitoring -p 8091-8094:8091-8094 -p 11210:11210 couchbase/servidor-arenero:6.5.0 |
Configurar Sync Gateway
Para configurar Sync Gateway primero tenemos que establecer una configuración adecuada que lo conectará a nuestra instancia de Couchbase Server y exponer la interfaz de métricas. La configuración utilizada será la siguiente:
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 |
{ "interfaz": ":4984", "adminInterface": ":4985", "metricsInterface": ":4986", "registro": { "consola": { "activado": verdadero, "log_level": "info", "log_keys": ["*"], "color_enabled": verdadero }, "info": { "rotación": { "tamaño_máximo": 1, "max_age": 30, "hora local": verdadero } } }, "bases de datos": { "viaje-muestra": { "usuarios": { "admin": { "contraseña": "contraseña", "admin_canales": [ "*" ] } }, "servidor": "http://couchbase:8091", "nombre de usuario": "admin", "contraseña": "contraseña", "cubo": "viaje-muestra", "enable_shared_bucket_access": verdadero, "use_views": falso, "num_index_replicas": 0, "importar_docs": verdadero } } } |
La mayoría de estas opciones de configuración deberían ser relativamente familiares, siendo la única nueva metricsInterface
. Como se mencionó anteriormente, esta opción permitirá que tanto las expvars JSON como las métricas con formato Prometheus se expongan en un puerto distinto al del resto de interfaces REST de Sync Gateway. Por defecto, la interfaz de métricas se expone en "127.0.0.1:4986", lo que significa que sólo está disponible en localhost de forma predeterminada. En el ejemplo de configuración anterior hemos modificado esto a ":4986" lo que significa que se expondrá en cualquier dirección en el puerto 4986. Esta configuración se puede guardar en cualquier lugar, pero el siguiente comando asumirá que se guarda en el directorio actual como "sync-gateway-config.json".
A continuación, podemos abrir nuestra instancia de Sync Gateway con lo siguiente:
1 |
docker ejecute -d --nombre sync_gateway --red sgmonitoring -p 4984-4986:4984-4986 -v `pwd`/sincronizar-pasarela-config.json:/etc/sync_gateway/sync_gateway.json` couchbase/sincronizar-pasarela:2.8.0-empresa /etc/sync_gateway/sync_gateway.json |
Para confirmar que Sync Gateway está en funcionamiento y que la metricsInterface está activa, intente obtener las estadísticas de Prometheus desde el punto final accesible en http://localhost:4986/_metrics. A continuación se muestra un fragmento de la parte inferior de las métricas en el punto final.
Obtenga una configuración de muestra de Prometheus y Grafana
En este punto de la configuración, tenemos una instancia de Sync Gateway comunicándose con Couchbase Server y esa instancia tiene su punto final de métricas Prometheus expuesto.
En los siguientes pasos se configurarán los servidores Prometheus y Grafana. Hemos preparado previamente los archivos de configuración de Prometheus y un ejemplo de panel de control de Grafana que se puede encontrar en el directorio de ejemplos del repositorio GitHub de Sync Gateway. Esto se puede obtener simplemente ejecutando el siguiente comando en su directorio de trabajo.
1 |
git clonar https://github.com/couchbase/sync_gateway.git |
Prometeo
Ahora necesitamos configurar el Servidor Prometheus que leerá desde nuestro endpoint /_metrics.
Configurar el archivo prometheus.yml
Este prometheus.yml
configura la configuración básica del servidor Prometheus. Un ejemplo prometheus.yml
se encuentra en el repositorio de Sync Gateway previamente descargado dentro de la carpeta examples/prometheus. Hay una serie de parámetros en el archivo, cada uno de los cuales se explica a continuación:
1 2 3 |
global: intervalo_raspado: 5s intervalo_de_evaluación: 5s |
intervalo_raspado
es un parámetro que especifica la frecuencia con la que Prometheus Server sondeará el punto final de métricas.intervalo_de_evaluación
es un parámetro que especifica la frecuencia con la que se evalúan las reglas. Las reglas se explican con más detalle a continuación.
1 2 |
archivos_regla: - '/etc/prometheus/rules/*'' |
archivos_de_reglas
especifica la ubicación del directorio del archivo Prometheus Rules. Hemos preparado previamente un archivo de reglas prometheus ubicado, de nuevo, en el directorio examples en examples/prometheus/rules/sync-gateway.rules.yml que debe ser montado en el directorio /etc/prometheus/rules como se ha definido en el archivo de configuración anterior. Este montaje se mostrará como parte del comando de configuración del contenedor docker. El archivo rules de ejemplo contiene algunas alertas y un registro que agregará el recuento de consultas en un nuevo registro llamado total_queries.
1 2 3 4 5 |
scrape_configs: - nombre_trabajo: swg static_configs: - objetivos: - sync_gateway:4986/Métricas |
- La scrape_configs
se utiliza para especificar los objetivos con los que Prometheus se comunicará para recopilar estadísticas. Esto especifica que el nombre del objetivo es 'swg' y este objetivo puede ser sondeado en sync_gateway:4986/_metrics. Cuando una parte de la misma red Docker podemos comunicarnos con otros contenedores con sus nombres, es por eso que sync_gateway se puede utilizar para comunicarse con nuestra instancia de Sync Gateway.
Configuración del contenedor Docker
Navegue hasta el directorio sync_gateway clonado y ejecute el siguiente comando. Esta navegación es necesaria para acceder a los archivos yaml utilizados en el comando de abajo, alternativamente, estos archivos se pueden mover a su directorio de trabajo elegido.
1 |
docker ejecute -d --nombre prometheus --red sgmonitoring -p 9090:9090 -v `pwd`/ejemplos/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v `pwd`/ejemplos/prometheus/normas:/etc/prometheus/normas baile de graduación/prometheus |
Esto debería configurar un contenedor Prometheus con la instancia de Sync Gateway como destino. Esto puede explorarse accediendo a http://localhost:9090 en un navegador web. Asegúrese de que el objetivo se ha configurado correctamente haciendo clic en los botones "Estado" y "Objetivos". Asegúrese de que el objetivo está (1/1 up)
Grafana
Ahora vamos a configurar Grafana que nos permitirá visualizar las estadísticas. Una vez más, como se mencionó anteriormente, hemos preparado un panel de Grafana que muestra la mayoría de las estadísticas disponibles de una manera que consideramos útil, sin embargo, esto es totalmente configurable dentro de la interfaz de usuario web para que pueda cambiarlo para que se adapte mejor a sus necesidades.
En primer lugar, es necesario instalar la imagen Grafana Docker utilizando el siguiente comando:
1 |
docker ejecute -d --nombre grafana --red sgmonitoring -p 3000:3000 -v `pwd`/grafana/datos:/var/lib/grafana grafana/grafana |
La bandera -v en este comando vinculará la base de datos Grafana que se utiliza para persistir el tablero de instrumentos y otros datos pertinentes. En el comando anterior estamos vinculando este directorio a su directorio actual dentro de una carpeta grafana/data, sin embargo, puede vincular esto en otro lugar si es necesario.
El panel de control predeterminado está disponible como parte del repositorio de Sync Gateway en el directorio examples/grafana. Desde este directorio tiene dos opciones:
- Ejecutar
hacer grafana
esto generará el archivo grafana dashboard.json que luego puede ser importado a Grafana. Hay dos métodos para hacer esto: cargar a través del navegador o cargar mediante API. - Ejecutar
make grafana-dev
que ejecutará el comando anterior para generar el archivo dashboard.json y luego intentará cargar el dashboard a una instancia de Grafana que se espera que se ejecute en localhost:3000, así como configurar la fuente de datos Prometheus, que se espera que se ejecute en el puerto 3000 con el nombre de contenedor "prometheus".
Tenga en cuenta que estos comandos requieren Golang y Jsonnet para que funcione correctamente. Para obtener más información sobre los requisitos y posibles pasos para solucionar problemas, puede visitar la página LÉAME.
Una vez ejecutado correctamente el script, el panel de control de Sync Gateway debería estar disponible en Grafana. Para comprobarlo, abra Grafana en su navegador web e inicie sesión. Las credenciales predeterminadas serán el nombre de usuario "admin" y la contraseña "admin".
Una vez iniciada la sesión, deberías poder encontrar "Couchbase Sync Gateway Dashboard" en la lista de dashboards disponibles.
Haga clic en él y podrá ver todas las diferentes estadísticas que se han representado gráficamente en el panel por defecto:
Cada uno de los paneles es totalmente configurable y haciendo clic en ellos podrás ver con relativa facilidad cómo se construye ese gráfico en particular u otro componente. El cuadro de mandos, aunque es totalmente funcional, no está pensado para ser utilizado en producción, sino más bien como ejemplo de lo que es posible y de cómo se puede construir un cuadro de mandos que se adapte mejor a un caso de uso particular.
¡Así que con eso está todo hecho! Hemos configurado correctamente la monitorización de Sync Gateway mediante el exportador Prometheus integrado y el panel Grafana.
Resumen
El nuevo punto final de métricas en Sync Gateway simplifica enormemente la supervisión de la salud y el estado de su clúster Sync Gateway. Al incorporar la funcionalidad del exportador de Prometheus directamente en Sync Gateway, todo el proceso resulta relativamente sencillo y se elimina la necesidad de un exportador independiente. Esto es especialmente cierto en el caso de los entornos nativos de la nube, en los que puede eliminar la necesidad de desplegar y gestionar un contenedor exportador independiente utilizando un sidecar patrón.
También proporcionamos el panel Grafana para mostrar fácilmente las capacidades de las estadísticas proporcionadas por Sync Gateway y el exportador Prometheus. Al personalizar este panel, puede ajustar los gráficos para supervisar mejor las estadísticas aplicables a su configuración.
Si tiene alguna pregunta o sugerencia, deje un comentario a continuación o póngase en contacto conmigo en jacques.rascagneres@couchbase.com