Paneles Grafana para la administración de Kubernetes

Hola a todos! Hoy continuamos compartiendo material traducido específicamente para estudiantes del curso de la Plataforma de Infraestructura basada en Kubernetes . Que tengas una buena lectura.



Introduccion




Desde hace algún tiempo he estado experimentando con la creación de paneles de Grafana para administrar Kubernetes. Como propietario y administrador de varios grupos de Kubernetes, quería obtener una representación visual de algunas de las métricas. Primero, necesito paneles normales de Grafana para los componentes de Kubernetes Control Plane y Node: kube-api, kube-Scheduler, kube-controller-manager, así como kubelet y kube-proxy . En segundo lugar, me gustaría publicar los paneles resultantes en GitHub para que otros puedan dejar sugerencias e informes de errores (problemas), enviar solicitudes de cambios (solicitudes de extracción), paneles de actualización (extracción de git) y ayudarme a trabajar en ellos.

Publicar paneles de Grafana


Los paneles de Grafana ahora se publican principalmente en grafana.com/dashboards . Para obtener el panel deseado, debe encontrarlo en la página, copiar el identificador e importarlo a la instancia local de Grafana. Aunque importar paneles es relativamente simple, la experiencia muestra que la mayoría de los usuarios encuentran inconveniente trabajar con ellos. Hay varias razones para esto.

Primero, las personas usan diferentes selectores de etiquetas para indicar los objetivos de monitoreo en Prometheus. En segundo lugar, en las nuevas versiones de los exportadores y aplicaciones de Prometheus para acceder a las métricas, los nombres de las métricas cambian y se eliminan constantemente. En tercer lugar, es extremadamente difícil encontrar paneles de instrumentos de muy alta calidad: nunca se sabe lo que se obtendrá después de la importación. Una vez seleccionado el panel, debe revisar todos los gráficos y editar las métricas junto con los selectores de las etiquetas, y esto es una gran cantidad de trabajo manual.

Proyecto de Monitoreo Mixins


Encontré un proyecto genial llamado Monitoring Mixins. De hecho, este es un tipo de ecosistema diseñado para superar todos los problemas de panel adolorido. La idea le llegó a Frederic Branczyk, y fue él quien escribió el documento de diseño original , que le recomiendo que lea. Además, pensó en un mecanismo real para actualizar los paneles y extraerlos de varios repositorios de GitHub. Este mecanismo es muy similar a go get , y realmente me gustó. Aquí puede leer una breve descripción del administrador de paquetes jsonnet-bundler utilizando este mecanismo. ¡Muchas gracias a Frederick por desarrollos útiles!

Kubernetes Grafana Mixin Package


Si lees a este lugar, puedes tomarte un descanso y disfrutar de las bellas imágenes.

Servidor API



Panel de control del servidor Kubernetes API

Gerente controlador



Panel de control de Kubernetes Controller Manager

Planificador



Panel de control de Kubernetes

Kublet (agente de nodo)



Kubernetes Cublet Dashboard


Kubernetes Cublet Dashboard

Proxy Kube



Panel de Proxy Kube

Usando Kubernetes Grafana Mixin


Primero necesita instalar jsonnet y jsonnet-bundler .

Jsonnet


Si está utilizando macOS, puede utilizar el brew install jsonnet . De lo contrario, es mejor compilar este componente usted mismo.

 git clone https://github.com/google/jsonnet.git jsonnet_git cd jsonnet_git make sudo mv jsonnet /usr/local/bin/ 

Jsonnet bundler


 go get -u github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb 

Importar paneles


Cree un nuevo directorio para el proyecto e ingréselo con el cd .

Instalar mixin :

 jb init jb install https://github.com/povilasv/kubernetes-grafana-mixin 

Ahora cree un nuevo archivo config.libsonnet .

 local kubedashboards = import 'kubernetes-grafana-mixin/mixin.libsonnet'; kubedashboards { _config+:: { kubeletSelector: 'job="kubernetes-nodes2"', kubeSchedulerSelector: 'job="kube-scheduler2"', kubeControllerManagerSelector: 'job="kube-controller-manager2"', kubeApiserverSelector: 'job="kube-apiserver2"', kubeProxySelector: 'job="kube-proxy2"', }, } 

Después de eso, se importa el panel de información y se sobrescriben los selectores de trabajo.
Corrija los selectores de etiquetas Prometheus para adaptarlos a su entorno.
Ahora cree el directorio de dashboards . Finalmente, ejecute jsonnet para compilar config.libsonnet :

 jsonnet -J vendor -m dashboards -e '(import "config.libsonnet").grafanaDashboards' 

Verá la siguiente lista:

 dashboards/kube-apiserver.json dashboards/kube-controller-manager.json dashboards/kube-proxy.json dashboards/kube-scheduler.json dashboards/kubelet.json 

Resultado


Mostrar el contenido del catálogo del tablero de instrumentos.

 ls -l dashboards 

 -rw-r--r-- 1 povilasv povilasv 35746 Apr 26 08:29 kube-apiserver.json -rw-r--r-- 1 povilasv povilasv 34790 Apr 26 08:29 kube-controller-manager.json -rw-r--r-- 1 povilasv povilasv 62845 Apr 26 08:29 kubelet.json -rw-r--r-- 1 povilasv povilasv 27673 Apr 26 08:29 kube-proxy.json -rw-r--r-- 1 povilasv povilasv 25650 Apr 26 08:29 kube-scheduler.json 

Agregar paneles a Grafana


Ya he dicho que recomiendo colocar paneles a través de archivos de configuración. Puede obtener más información sobre cómo se hace esto en la documentación de Grafana .

Por otro lado, nada le impide abrir la interfaz de Grafana y agregar paneles a través de ella.

Actualizar paneles


Con el tiempo, los paneles cambiarán. Para actualizarlos, el siguiente comando es suficiente:

 jb update 

Eso es todo por hoy.

Espero que disfrutes mis tableros. En otro artículo hablaré sobre cómo los creé y por qué los hice así, así que asegúrese de suscribirse a las actualizaciones. Los suscriptores ven mi trabajo primero, incluso antes de la publicación.

También estoy extremadamente interesado en sus comentarios. Si utilizó mis paneles, evalúe qué tan útiles fueron para usted o comparta si lo ayudaron en una situación de trabajo real. Solo deja un comentario!

Por cierto, si quieres agradecerme por mis esfuerzos, puedes mirar mi lista de deseos abierta y comprarme, por ejemplo, un buen libro.

Realmente aprecio los proyectos de código abierto de calidad. El paquete kubernetes-grafana-mixin está disponible bajo una licencia de licencia Apache 2 . Si te gustó el proyecto, échale un vistazo en Github!

Source: https://habr.com/ru/post/456946/


All Articles