Introducció

Prometheus és una eina de monitorització i alerta de codi obert dissenyada per recollir i processar dades de mètriques en temps real. És àmpliament utilitzada en entorns de Kubernetes per la seva capacitat de gestionar grans volums de dades i la seva integració amb altres eines com Grafana per a la visualització de dades.

Objectius d'Aprenentatge

En aquesta secció, aprendràs:

  • Què és Prometheus i com funciona.
  • Com desplegar Prometheus en un clúster de Kubernetes.
  • Com configurar Prometheus per recollir mètriques de les aplicacions.
  • Com utilitzar Grafana per visualitzar les mètriques recollides per Prometheus.

Què és Prometheus?

Prometheus és un sistema de monitorització i alerta que recull mètriques de diverses fonts, les emmagatzema en una base de dades de sèries temporals i permet realitzar consultes sobre aquestes dades utilitzant el seu llenguatge de consulta, PromQL.

Característiques Clau de Prometheus

  • Model de dades de sèries temporals: Emmagatzema les dades com a sèries temporals, que són seqüències de dades amb marques de temps.
  • PromQL: Un llenguatge de consulta potent per extreure i analitzar dades.
  • Alertes: Permet definir regles d'alerta que poden enviar notificacions quan es compleixen determinades condicions.
  • Exportadors: Components que recullen mètriques de diverses fonts i les exposen a Prometheus.

Desplegament de Prometheus en Kubernetes

Pas 1: Instal·lació de Prometheus

Per instal·lar Prometheus en un clúster de Kubernetes, podem utilitzar Helm, una eina de gestió de paquets per Kubernetes.

  1. Instal·la Helm (si no ho tens instal·lat):

    curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
    
  2. Afegeix el repositori de Helm per Prometheus:

    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
    helm repo update
    
  3. Instal·la Prometheus utilitzant Helm:

    helm install prometheus prometheus-community/prometheus
    

Pas 2: Configuració de Prometheus

Després d'instal·lar Prometheus, necessitem configurar-lo per recollir mètriques de les nostres aplicacions.

  1. Crea un fitxer de configuració per Prometheus (prometheus-config.yaml):

    global:
      scrape_interval: 15s
    
    scrape_configs:
      - job_name: 'kubernetes-apiservers'
        kubernetes_sd_configs:
          - role: endpoints
        relabel_configs:
          - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
            action: keep
            regex: default;kubernetes;https
    
      - job_name: 'kubernetes-nodes'
        kubernetes_sd_configs:
          - role: node
        relabel_configs:
          - action: labelmap
            regex: __meta_kubernetes_node_label_(.+)
          - target_label: __address__
            replacement: kubernetes.default.svc:443
          - source_labels: [__meta_kubernetes_node_name]
            regex: (.+)
            target_label: __metrics_path__
            replacement: /api/v1/nodes/${1}/proxy/metrics
    
  2. Aplica la configuració a Prometheus:

    kubectl apply -f prometheus-config.yaml
    

Visualització de Mètriques amb Grafana

Grafana és una eina de visualització de dades que es pot integrar amb Prometheus per crear panells de control interactius.

Pas 1: Instal·lació de Grafana

  1. Instal·la Grafana utilitzant Helm:

    helm install grafana grafana/grafana
    
  2. Obté la contrasenya per defecte de Grafana:

    kubectl get secret --namespace default grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
    
  3. Accedeix a la interfície web de Grafana:

    • Obre un navegador web i ves a http://<grafana-ip>:3000.
    • Inicia sessió amb el nom d'usuari admin i la contrasenya obtinguda en el pas anterior.

Pas 2: Configuració de Grafana per utilitzar Prometheus

  1. Afegeix Prometheus com a font de dades:

    • Ves a Configuration > Data Sources > Add data source.
    • Selecciona Prometheus.
    • Introdueix l'URL de Prometheus (http://prometheus-server.default.svc.cluster.local:9090).
    • Fes clic a Save & Test.
  2. Crea un panell de control:

    • Ves a Create > Dashboard.
    • Afegeix un nou panell (Add new panel).
    • Selecciona la font de dades Prometheus.
    • Escriu una consulta PromQL per obtenir les mètriques que vols visualitzar, per exemple:
      sum(rate(http_requests_total[5m])) by (job)
      
    • Guarda el panell (Save).

Exercici Pràctic

Objectiu

Desplegar Prometheus i Grafana en un clúster de Kubernetes i configurar-los per recollir i visualitzar mètriques d'una aplicació simple.

Passos

  1. Desplega una aplicació simple en Kubernetes (per exemple, una aplicació Nginx):

    kubectl create deployment nginx --image=nginx
    kubectl expose deployment nginx --port=80 --type=NodePort
    
  2. Instal·la Prometheus i Grafana seguint els passos anteriors.

  3. Configura Prometheus per recollir mètriques de l'aplicació Nginx.

  4. Crea un panell de control en Grafana per visualitzar les mètriques de Nginx.

Solució

  1. Desplegament de Nginx:

    kubectl create deployment nginx --image=nginx
    kubectl expose deployment nginx --port=80 --type=NodePort
    
  2. Instal·lació de Prometheus i Grafana:

    • Segueix els passos descrits en les seccions anteriors.
  3. Configuració de Prometheus:

    • Afegeix una nova configuració de scrape_config per Nginx en el fitxer prometheus-config.yaml:
      - job_name: 'nginx'
        kubernetes_sd_configs:
          - role: endpoints
        relabel_configs:
          - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
            action: keep
            regex: default;nginx;http
      
  4. Creació del panell de control en Grafana:

    • Afegeix una nova consulta PromQL per obtenir les mètriques de Nginx, per exemple:
      sum(rate(nginx_http_requests_total[5m])) by (job)
      

Conclusió

En aquesta secció, hem après a desplegar i configurar Prometheus en un clúster de Kubernetes per recollir mètriques de les nostres aplicacions. També hem vist com utilitzar Grafana per visualitzar aquestes mètriques de manera efectiva. Aquestes eines són essencials per mantenir la salut i el rendiment de les aplicacions en un entorn de Kubernetes.

Curs de Kubernetes

Mòdul 1: Introducció a Kubernetes

Mòdul 2: Components Bàsics de Kubernetes

Mòdul 3: Gestió de Configuració i Secrets

Mòdul 4: Xarxes en Kubernetes

Mòdul 5: Emmagatzematge en Kubernetes

Mòdul 6: Conceptes Avançats de Kubernetes

Mòdul 7: Monitorització i Registre

Mòdul 8: Seguretat en Kubernetes

Mòdul 9: Escalabilitat i Rendiment

Mòdul 10: Ecosistema i Eines de Kubernetes

Mòdul 11: Estudis de Cas i Aplicacions del Món Real

Mòdul 12: Preparació per a la Certificació de Kubernetes

© Copyright 2024. Tots els drets reservats