Aller au contenu principal

Monitoring de k8s avec prometheus et grafana

· 3 minutes de lecture
Stéphane ROBERT
Consultant DevOps

Sans monitoring difficile de comprendre ce qui se passe sur notre cluster kubernetes k3s. Parfois il peut arriver que certains de vos pods ne répondent plus ou votre cluster n’accepte plus aucune commande kubectl, mais comment comprendre ce qu’il s’est passé si vous n’avez de système de monitoring à part fouiller dans les events.

Pour vous superviser mon cluster Kubernetes k3s j’ai fait le choix d’utiliser Prometheus et Grafana :

  • Prometheus est un outil open source de monitoring qui s’installe très facilement sur un cluster k3s. * C’est lui qui va se charger de collecter les métriques de Kubernetes et de les stocker dans sa base de données.
  • Grafana est un logiciel open source, qui permet la visualisation et la mise en forme de données métriques stockées entre autre dans Prometheus.

Installation de la stack Prometheus/Grafana

Nous allons utiliser un helm chart permettant d'installer toute la stack promotheus/grafana. Cette stack contient tout ce qu'il faut pour monitorer un cluster kubernetes, même les dashboards s'y trouvent.

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/kube-prometheus-stack

Pour personnaliser l'installation générée le fichier de valeurs et faites-y vos modifications.

helm show values prometheus-community/kube-prometheus-stack >>my-values.yml

Maintenant lançons le provisionnement de notre stack:

kubectl create ns monitoring
kubectl config set-context --current --namespace=monitoring

Au bout de quelques minutes vous devriez avoir ceci dans votre namespace monitoring :

kubectl get pod -o wide -n monitoring
NAME                                                     READY   STATUS    RESTARTS   AGE   IP              NODE      NOMINATED NODE   READINESS GATES
prometheus-prometheus-node-exporter-wm88p                1/1     Running   0          17h   192.168.1.101   devbox1   <none>           <none>
prometheus-kube-prometheus-operator-54bf65d8fc-jwxct     1/1     Running   0          17h   10.42.0.232     devbox1   <none>           <none>
alertmanager-prometheus-kube-prometheus-alertmanager-0   2/2     Running   0          17h   10.42.0.234     devbox1   <none>           <none>
prometheus-kube-state-metrics-77698656df-c8lxk           1/1     Running   0          17h   10.42.0.231     devbox1   <none>           <none>
prometheus-grafana-7c7dcd556b-mnhwr                      3/3     Running   0          17h   10.42.0.233     devbox1   <none>           <none>
prometheus-prometheus-kube-prometheus-prometheus-0       2/2     Running   0          17h   10.42.0.235     devbox1   <none>           <none>

Création de l'ingress Grafana

Je crée mon propre ingress comme pour celui d'Ansible AWX avec un certificat auto-signé avec mkcert. Il suffit de créer un fichier (n’oubliez pas de modifier le domain avec le vôtre) :

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.ingress.kubernetes.io/frontend-entry-points: http,https
    traefik.ingress.kubernetes.io/redirect-entry-point: https
    traefik.ingress.kubernetes.io/redirect-permanent: "true"
  name: grafana-ingress
  namespace: prometheus
spec:
  rules:
  - host: grafana.robert.local
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: prometheus-grafana
            port:
              number: 80
  tls:
  - hosts:
    - grafana.robert.local
    secretName: wildcard-tls-cert

Maintenant allez sur l’url de grafana (n'oubliez pas de l'ajouter à votre fichier hosts ou à votre serveur DNS.)

Ah oui !!! Le user c’est admin et mot de passe il faut le récupérer :

kubectl get secret --namespace prometheus prometheus-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

Maintenant vous pouvez comment à regarder tous les dashboards qui sont à votre disposition.

Je vous propose maintenant de voir comment installer loki, un outil de centralisation de logs s'appuyant sur prometheus.