Requisitos previos

Como se menciona en Parte 1 del blog, necesitamos ejecutar Prometheus y Grafana en el entorno Kubernetes en nuestro Amazon EKS. La forma recomendada es utilizar Kube-Prometheusun proyecto de código abierto. Esto no sólo simplificará el despliegue, sino que añade muchos más componentes, como el Exportador de nodos Prometheus que supervisa las métricas del host Linux y se utiliza normalmente en un entorno Kubernetes. 

Clonar el https://github.com/coreos/kube-prometheus de Github, pero no crees ningún manifiesto todavía.

Componentes incluidos en este paquete:

Nota:

Este tutorial funciona sobre la base de que los manifiestos que traen los recursos pertinentes para Prometheus Operator todavía se encuentran en la carpeta manifiestos.

Si se han producido cambios, le rogamos que se adapte a ellos, ya que el repositorio es experimental y está sujeto a cambios.

 

Crear el Couchbase ServiceMonitor

ServiceMonitor indica a Prometheus que supervise un recurso de servicio que define los puntos finales que Prometheus rastrea para las métricas entrantes proporcionadas por couchbase-exporter. Este archivo,couchbase-serviceMonitor.yaml, debe ser kube-prometheus/manifestos directorio. 

Leyenda:

  1. Puede que desee incluir nuestro Couchbase ServiceMonitor en el control junto con los demás espacios de nombres ServicioMonitores. Para los ejemplos de este tutorial lo hemos dejado en el por defecto para facilitar su uso.
  2. En puerto puede ser un valor de cadena y funcionará para diferentes números de puerto del servicio siempre que el nombre coincida.
  3. intervalo indica a Prometheus la frecuencia con la que debe rastrear el endpoint. En este caso queremos que coincida con el espacio de nombres del archivo Servicio que crearemos en el siguiente paso,
  4. tenga en cuenta que el espacio de nombres nuestro Servicio debe coincidir con el espacio de nombres del clúster de Couchbase del que queremos obtener las métricas.
  5. Similar a la namespaceSelector, se trata de un simple labelSelector que seleccionará el servicio que vamos a crear.

Crear el servicio de métricas Couchbase

En Servicio definirá el puerto que describimos en nuestro ServiceMonitor en spec.endpoint[0].port antes. su expediente,couchbase-service.yaml, debe ser kube-prometheus/manifestos directorio. 

Leyenda:

  1. Como se ha mencionado anteriormente, asegúrese de que el Servicio está en el mismo espacio de nombres que el clúster de Couchbase del que desea obtener métricas, de lo contrario no se seleccionará ningún pod y no se mostrará ningún endpoint en Prometheus Targets. Asegúrese también de que este valor coincide con spec.namespaceSelector en el ServiceMonitor.
  2. Mantenga este puerto en su valor por defecto de 9091 ya que este es el puerto al que exportará Couchbase Exporter.
  3. Se puede añadir un nivel más de granularidad a tu selector en el caso de que tengas más de un Cluster Couchbase funcionando en el mismo espacio de nombres.

Descubrimiento de servicios dinámicos Prometheus

Prometheus descubre los puntos finales de monitorización, dinámicamente, haciendo coincidir las etiquetas del ServiceMonitor con los Servicios que especifican el clúster y los puntos finales, Puerto 9091 en nuestro caso.

Crear los manifiestos

Siga el comando específico dado en el LÉEME de Github para que aparezcan nuestros recursos creados junto con los demás manifiestos predeterminados proporcionados.

Componentes como Prometheus, AlertManager, NodeExporter y Grafana deberían arrancar y podemos confirmarlo inspeccionando los pods en el namespace control.

Comencemos.

Crear el espacio de nombres Kubernetes y CRDs

Espere unos minutos antes del siguiente paso, pero puede ser necesario ejecutar el comando varias veces para que todos los componentes se creen correctamente.

Crear los recursos restantes

Comprobar los espacios de nombres de supervisión

Componentes como Prometheus, AlertManager, NodeExporter y Grafana deberían arrancar y podemos confirmarlo inspeccionando los pods en el namespace control.

Comprueba que nuestro ServiceMonitor ha sido creado.

Comprobar que nuestro Servicio ha sido creado.

En la salida anterior, no sólo vemos los servicios, sino también los puertos. Usaremos esta información para reenviar estos puertos, como hicimos con la interfaz de administración de Couchbase, para acceder a estos servicios.

Para comprobar que todo funciona correctamente con la implantación de Prometheus Operator, ejecute el siguiente comando para ver los registros:

Reenvío de puertos

Ya hemos reenviado el puerto 8091 de Couchbase Admin UI desde un nodo de Couchbase anteriormente, pero voy a dar esto de nuevo, esta vez desde el punto de vista del servicio. 

Además de ese puerto, en realidad sólo necesitamos el acceso al servicio Grafana, Puerto 3000. Sin embargo, vamos a acceder al servicio Prometheus Puerto 9090 también. Entonces podemos echar un vistazo a todas las métricas de los diferentes exportadores y probar un poco de PromQL, el Prometheus Query Language también. 

Ahora bien, las 3 anteriores deberían ser suficientes. Sin embargo, hay alguna ventaja adicional de echar un vistazo a las métricas de cada servicio individual también. El exportador de Couchbase expone las métricas de Couchbase en el puerto 9091. Por lo tanto, podemos reenviar esos puertos también. Ten en cuenta que sólo necesitas acceso a Grafana.

Echa un vistazo a Prometheus Targets

Acceso: http://localhost:9090/targets

Todos los objetivos de Prometheus deberían estar ARRIBA. Hay bastantes de estos desde Kube-Prometheus desplegado un montón de exportadores.

Consulta las métricas de Couchbase sin procesar

Acceso: http://localhost:9091/metrics

Esta salida es útil, ya que permite buscar rápidamente en la lista.

Prueba una consulta PromQL básica

En la interfaz de usuario anterior, haga clic en Gráfico primero.

El cuadro desplegable le ofrece la lista de métricas raspadas. Esta es la lista completa de todos las métricas raspadas por todos los exportadores y esa es una lista bastante desalentadora. Un método para reducir la lista a sólo métricas Couchbase, es, por supuesto, acceder al punto final 9091 como se describió anteriormente.

Eche un vistazo a Grafana

Acceso: http://localhost:3000

El nombre de usuario y la contraseña son: admin/admin

El despliegue kube-prometheus de Grafana ya tiene definida la fuente de datos Prometheus y un amplio conjunto de Cuadros de mando por defecto. Echemos un vistazo al Cuadro de mandos del nodo por defecto

Crear un panel de Grafana de ejemplo para supervisar las métricas de Couchbase

No vamos a construir un Dashboard completo, sino una pequeña muestra con algunos paneles para mostrar cómo se hace. Este dashboard monitorizará el número de elementos en un bucket y el número de operaciones GET y SET.

Nota: Por favor, ejecute la aplicación de lucha de almohadas tal y como se describe en la Parte 1. Esto generará las operaciones que nos interesa monitorizar.

Métricas Prometheus

Acceso: http://localhost:9091/gráfico

Estamos interesados en los elementos actuales de un cubo. Hay un par de métricas que proporcionan esto, a nivel de cluster y por nodo. Vamos a utilizar la métrica por nodo. Así permitiremos que Prometheus gestione todas las agregaciones, según las mejores prácticas. Otra ventaja es que incluso podemos mostrar los elementos actuales en el cubo, por nodo, sólo para comprobar si nuestro conjunto de datos está sesgado.

Veamos un elemento:

En el ejemplo anterior, nos interesan estas etiquetas: cuboparte de nodo (la parte central, cb-ejemplo que es el nombre del cluster, y vaina. También estamos interesados en servicio para filtrar. Esto nos ayudará a diseñar un panel de control en el que podremos ver las métricas por bucket, nodo o clúster.

El cuadro de mandos de muestra

Vamos a crear un nuevo salpicadero de muestra en blanco.

Añadir variables

Como queremos las métricas por cubo, nodo y cluster, vamos a añadir estas variables para que se puedan seleccionar en un desplegable.

El ejemplo anterior crea la variable bucket. Observe la expresión Query y Regex. 

Vamos a crear 2 más para tener 3 variables:

La consulta no cambia para estos 3, pero aquí están las expresiones Regex:

Creación de un panel

Crear 3 paneles para elementos actuales, GETs y SETs

Puede duplicar cada panel y editarlos. Estas son las consultas:

Panel Items: sum(cbpernodebucket_curr_items{bucket=~"$bucket",pod=~"$node"}) by (bucket)

Panel GETs: sum(cbpernodebucket_cmd_get{bucket=~"$bucket",pod=~"$node"}) by (bucket)

Panel SETs: sum(cbpernodebucket_cmd_set{bucket=~"$bucket",pod=~"$node"}) by (bucket)

El ejemplo completo de Grafana Dashboard

Este es el aspecto final de nuestro panel de control de muestra.

Limpieza

Por último, limpie su despliegue:

Recursos:

Autor

Publicado por Prasad Doddi

Prasad es Gerente Senior de Producto para Couchbase Supportability, Manageability and Tools. Antes de Couchbase, trabajó en IBM en varios departamentos, incluyendo Desarrollo, QA, Soporte y Ventas Técnicas. Prasad tiene un máster en Chem. Engg. de la Universidad de Clarkson, NY.

Dejar una respuesta