GNU/Linux >> Tutoriales Linux >  >> Linux

Utilizando Grafana y Prometheus Kubernetes Cluster Monitoring

Supervisar su clúster de Kubernetes es fundamental para garantizar que sus servicios estén siempre disponibles y en funcionamiento. Y antes de buscar en Internet un sistema de monitoreo, ¿por qué no probar el monitoreo de clústeres de Grafana y Prometheus Kubernetes?

En esta guía, aprenderá a monitorear su clúster de Kubernetes, viendo las métricas de estado internas con un tablero de Prometheus y Grafana.

¡Siga leyendo para que pueda vigilar de cerca sus recursos!

Requisitos

  • Una máquina Linux con Docker instalado:este tutorial utiliza una máquina Ubuntu 20.04 LTS con Docker versión 20.10.7. Aquí se explica cómo instalar Ubuntu.
  • Un clúster de Kubernetes de un solo nodo.
  • Helm Package Manager instalado:para implementar el operador Prometheus.
  • La interfaz de línea de comandos de Kubectl está instalada y configurada en su clúster.

Implementación de Kube-Prometheus Stack Helm Chart

La supervisión de Grafana y Prometheus Kubernetes Cluster proporciona información sobre posibles cuellos de botella en el rendimiento, el estado del clúster y las métricas de rendimiento. Al mismo tiempo, visualice el uso de la red, los patrones de uso de recursos de los pods y una descripción general de alto nivel de lo que sucede en su clúster.

Pero antes de configurar un sistema de monitoreo con Grafana y Prometheus, primero implementará el gráfico Helm de la pila kube-prometheus. La pila contiene Prometheus, Grafana, Alertmanager, Prometheus operator y otros recursos de monitoreo.

1. SSH en su máquina Ubuntu 20.04 (si está ejecutando en un servidor en la nube) o simplemente inicie sesión en su máquina Ubuntu 20.04 instalada localmente para comenzar.

2. A continuación, ejecute el kubectl create Comando a continuación para crear un namespace llamado monitoring para todas las implementaciones relacionadas con Prometheus y Grafana.

kubectl create namespace monitoring

3. Ejecute el siguiente helm repo comandos para agregar el (prometheus-community ) Helm repo y actualice su Helm repo.

# Add prometheus-community repo
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

# Update helm repo
helm repo update

4. Después de agregar el repositorio de Helm, ejecute helm install Comando a continuación para implementar el gráfico de Helm de la pila kube-prometheus. Reemplazar prometheus con el nombre de lanzamiento deseado.

Este gráfico de Helm configura una pila completa de supervisión de Prometheus kubernetes actuando en función de un conjunto de definiciones de recursos personalizadas (CRD).

helm install prometheus prometheus-community/kube-prometheus-stack --namespace monitoring

Una vez que se complete la implementación, obtendrá el siguiente resultado.

5. Finalmente, ejecute el siguiente comando para confirmar la implementación de su pila kube-prometheus.

kubectl get pods -n monitoring

El siguiente resultado muestra la implementación de la pila kube-prometheus. Como puede ver, cada componente de la pila se ejecuta en su clúster.

Acceso a la instancia de Prometheus

Ha implementado con éxito su instancia de Prometheus en su clúster y está casi listo para monitorear su clúster de Kubernetes. Pero, ¿cómo accede a su instancia de Prometheus? Reenviarás un puerto local 9090 a su clúster a través de su servicio Prometheus con el kubectl port-forward comando.

1. Ejecute el kubectl get Comando a continuación para ver todos los servicios en el espacio de nombres de monitoreo para verificar su servicio Prometheus.

kubectl get svc -n monitoring

Todos los servicios implementados en el espacio de nombres de monitoreo se muestran a continuación, incluido el servicio Prometheus. Utilizará el servicio de Prometheus para configurar el reenvío de puertos para que se pueda acceder a su instancia de Prometheus fuera de su clúster.

2. A continuación, ejecute el siguiente kubectl port-forward comando para reenviar el puerto local 9090 a su clúster a través del servicio Prometheus (svc/prometheus-kube-prometheus-prometheus ).

kubectl port-forward svc/prometheus-kube-prometheus-prometheus -n monitoring 9090

Pero si está ejecutando un clúster de Kubernetes de un solo nodo en un servidor en la nube, ejecute el siguiente comando en su lugar.

kuebctl port-forward --address 0.0.0.0 svc/prometheus-kube-prometheus-prometheus -n monitoring 9090 

Para ejecutar el comando kubectl port-forward como un proceso en segundo plano, liberando su terminal para su uso posterior, agregue el símbolo &al final del comando. Continúe presionando las teclas Ctrl+C para detener el proceso de primer plano de reenvío de puerto (si lo hace, no afectará el proceso de fondo de reenvío de puerto).

3. Abra su navegador web favorito y navegue a cualquiera de las siguientes URL para acceder a su instancia de Prometheus.

  • Navegue a http://localhost:9090 si está siguiendo junto con una máquina Ubuntu local
  • Navegue a la dirección IP de su servidor seguida del puerto 9090 (es decir, http://YOUR_SERVER_IP:9090) si está utilizando un servidor en la nube.

Para este tutorial, Prometheus se ejecuta en un servidor en la nube.

Si su servicio Prometheus funciona, obtendrá la siguiente página en su navegador web.

4. Por último, en su terminal, presione las teclas Ctrl+C para cerrar el proceso de reenvío de puertos. Si lo hace, Prometheus será inaccesible en su navegador.

Visualización de métricas de estado interno del clúster de Prometheus Kubernetes

Ver las métricas de estado internas de su clúster de Kubernetes es posible con la herramienta Kube-state-metrics (KSM). Con la herramienta KSM, puede realizar un seguimiento de la salud y el uso de sus recursos, y también de los objetos de estado internos. Algunos de los puntos de datos que se pueden ver potencialmente a través de KSM son; métricas de nodo, métricas de implementación y métricas de pod.

La herramienta KSM viene preempaquetada en la pila kube-prometheus y se implementa automáticamente con el resto de los componentes de monitoreo.

Reenviará un puerto local a su clúster a través del kube-state-metrics Servicio. Al hacerlo, KSM puede extraer las métricas internas del sistema de su clúster y generar una lista de consultas y valores. Pero antes del reenvío de puertos, verifique primero su servicio KSM Kubernetes.

1. Ejecute el siguiente comando para verificar su kube-state-metrics Servicio de Kubernetes.

kubectl get svc -n monitoring | grep kube-state-metrics

A continuación, puede ver el nombre del servicio KSM Kubernetes (prometheus-kube-state-metrics) junto con ClusterIP. Anote el nombre del servicio KSM Kubernetes, ya que lo necesitará para realizar el reenvío de puertos en el siguiente paso.

2. A continuación, ejecute el siguiente comando para port-forward el prometheus-kube-state-metrics servicio al puerto 8080 .

kubectl port-forward svc/prometheus-kube-state-metrics -n monitoring 8080 

Si está siguiendo este tutorial con una máquina Ubuntu 20.04 alojada por un proveedor de la nube, agregue el indicador (–address 0.0.0.0) al comando kubectl port-forward. Si lo hace, permite el acceso externo al puerto local a través de la dirección IP pública de su servidor.

3. Finalmente, en su navegador web, navegue a cualquiera de las siguientes URL para ver la página Kube Metrics, como se muestra a continuación.

  • Navegue a http://localhost:8080 si está en una máquina Ubuntu local
  • Navegue a la dirección IP de su servidor seguido del puerto 8080 (es decir, http://YOUR_SERVER_IP:8080) si está utilizando un servidor en la nube.

Haga clic en el enlace de métricas para acceder a las métricas de estado internas de su clúster.

Puede ver a continuación las métricas de estado interno de un clúster similares a las suyas.

Visualización de la métrica de estado interno de un clúster en Prometheus

Ha realizado con éxito la implementación del gráfico de Helm de la pila de kube-prometheus, el raspado de métricas de estado de kube y las configuraciones de trabajo de Prometheus. Como resultado, CoreDNS, el servidor kube-api, el operador Prometheus y otros componentes de Kubernetes se configuraron automáticamente como objetivos en Prometheus.

1. Navegue a cualquiera de los http://localhost:9090/targets o http:// terminales en su navegador web. Si lo hace, podrá verificar que estos objetivos se han configurado correctamente.

Acceder al punto final también le permite verificar que Prometheus está extrayendo sus métricas y almacenando los datos en una base de datos de series temporales (TSDB),

Recuerde reenviar Prometheus como se muestra en la sección "Acceder a la instancia de Prometheus" en el paso dos, antes de navegar hasta el punto final. También puede ejecutarlo como un proceso en segundo plano.

Como puede ver a continuación, diferentes componentes internos de Kubernetes y componentes de monitoreo están configurados como objetivos en Prometheus.

2. Haga clic en el Gráfico menú para llegar a una página donde ejecutará una consulta PromQL (Prometheus Query Language).

3. Inserte la muestra PromQL (Prometheus Query Language) consulta a continuación en el espacio de expresión provisto, luego haz clic en Ejecutar. La consulta devuelve la cantidad total de memoria no utilizada en su clúster.

sum((container_memory_usage_bytes{container!="POD",container!=""} - on (namespace,pod,container) avg by (namespace,pod,container)(kube_pod_container_resource_requests{resource="memory"})) * -1 >0 ) / (1024*1024*1024)

4. Para ver los resultados de la consulta PromQL ejecutada en el paso 3 en formato gráfico, haga clic en Gráfico . Este gráfico mostrará la cantidad total de memoria no utilizada en su clúster por tiempo determinado.

Con todo configurado correctamente, la métrica de clúster de muestra debería verse similar al gráfico a continuación.

Accediendo al Panel de Grafana

Es posible que haya notado que las capacidades de visualización de Prometheus son limitadas, ya que solo tiene un Gráfico opción. Prometheus es excelente para extraer métricas de objetivos configurados como trabajos, agregar esas métricas y almacenarlas en una TSDB localmente en la máquina Ubuntu. Pero cuando se trata de monitoreo de recursos estándar, Prometheus y Grafana son un gran dúo.

Prometheus agrega las métricas exportadas por los componentes del servidor, como el exportador de nodos, CoreDNS, etc. Mientras que Grafana, siendo la visualización su punto fuerte, recibe estas métricas de Prometheus y las muestra a través de numerosas opciones de visualización.

Durante la implementación del timón de pila de kube-prometheus, Grafana se instaló y configuró automáticamente, por lo que puede configurar el acceso a Grafana en su clúster.

Para acceder a su panel de control de Grafana, primero deberá obtener su nombre de usuario y contraseña almacenados como secretos creados automáticamente de forma predeterminada en su clúster de Kubernetes.

1. Ejecute el siguiente kubectl comando para ver los datos almacenados como secret en su clúster de Kubernetes (prometheus-grafana ) en formato YAML (-o yaml ).

kubectl get secret -n monitoring prometheus-grafana -o yaml

Como puede ver a continuación, el nombre de usuario y la contraseña para acceder a su panel de Grafana están codificados en base64. Anote los valores de administrador-contraseña y administrador-usuario secretos, ya que deberás decodificarlos en el siguiente paso.

2. A continuación, ejecute cada comando a continuación para --decode ambos secretos (admin-password y admin-user ). Reemplazar YOUR_USERNAME y YOUR_PASSWORD con el admin-password y admin-user valores secretos que anotó en el paso uno.

Este tutorial no tiene una salida para cada comando por razones de seguridad.

# Decode and print the username
echo YOUR_USERNAME | base64 --decode
# Decode and print the password
echo YOUR_PASSWORD | base64 --decode

3. Ejecute el kubectl comando a continuación a port-forward a un puerto local en 3000 vinculando el puerto Grafana 80 al puerto 3000 . Al hacerlo, tendrá acceso a la interfaz de usuario web de Grafana en su navegador.

kubectl port-forward svc/prometheus-grafana -n monitoring 3000:80

Agregue el indicador –address 0.0.0.0 si está siguiendo usando una máquina Ubuntu 20.04 alojada por un proveedor de la nube.

4. Finalmente, en su navegador, navegue a cualquiera de los puntos finales a continuación según la configuración de su máquina:

  • http://localhost:3000 (local)
  • o http://:3000 (nube)

Ingrese su valor secreto decodificado para usuario-administrador y contraseña-administrador en el nombre de usuario y la contraseña en el espacio provisto.

Una vez que haya iniciado sesión, obtendrá el panel de control de Grafana, como se muestra a continuación.

Interactuando con Grafana

De forma predeterminada, la pila Kube-Prometheus implementa Grafana con algunos paneles preconfigurados para cada objetivo configurado en Prometheus. Con estos paneles preconfigurados, no necesitará configurar manualmente un panel para visualizar cada métrica agregada por Prometheus.

Haga clic en el ícono del tablero —> Examinar y su navegador lo redirige a una página donde verá una lista de paneles (paso dos).

Haga clic en cualquiera de los paneles preconfigurados a continuación para ver su recurso de cómputo visual. Pero para este tutorial, haga clic en Kubernetes/Recursos informáticos/Espacio de nombres (Pods) panel de control.

A continuación se muestra un panel preconfigurado de muestra para visualizar el uso de recursos informáticos por parte de los pods en cualquiera de los espacios de nombres disponibles.

Para este tutorial, la Fuente de datos se ha establecido en Prometheus y el espacio de nombres para la visualización se establece en supervisión .

Conclusión

En este tutorial, aprendió cómo implementar el operador Prometheus usando Helm y vio las métricas de estado internas de su clúster para monitorear su clúster de Kubernetes. También configuró Grafana y vio las métricas de su clúster configurando su tablero de Grafana.

En este punto, ya tiene un monitoreo de clúster de Kubernetes completamente funcional. Pero puede mejorar personalmente este nuevo conocimiento, como configurar Alertmanager con Slack para recibir alertas en tiempo real.


Linux
  1. Cómo usar Ansible para configurar el monitoreo del sistema con Prometheus

  2. Cómo implementar su primer pod en un clúster de Kubernetes

  3. Configurar el clúster de Kubernetes con Rancher

  4. Monitoree el servidor Linux usando Prometheus y Grafana

  5. Prometheus vs Zabbix:comparación de herramientas de monitoreo de red

Cómo crear un clúster de Kubernetes con AWS CLI

Cómo implementar el clúster de Kubernetes en AWS con Amazon EKS

Una introducción a las métricas y la supervisión del rendimiento de Prometheus

Comience a aprender Kubernetes desde su máquina local

Creación de un clúster de Kubernetes de plano de control único con kubeadm

Clúster de Kubernetes usando K3S con Multipass de Canonical