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 APIGerente controlador
Panel de control de Kubernetes Controller ManagerPlanificador
Panel de control de KubernetesKublet (agente de nodo)
Kubernetes Cublet Dashboard
Kubernetes Cublet DashboardProxy Kube
Panel de Proxy KubeUsando 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:
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:
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!