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.
-
Instal·la Helm (si no ho tens instal·lat):
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
-
Afegeix el repositori de Helm per Prometheus:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update
-
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.
-
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
-
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
-
Instal·la Grafana utilitzant Helm:
helm install grafana grafana/grafana
-
Obté la contrasenya per defecte de Grafana:
kubectl get secret --namespace default grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
-
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.
- Obre un navegador web i ves a
Pas 2: Configuració de Grafana per utilitzar Prometheus
-
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
.
- Ves a
-
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
).
- Ves a
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
-
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
-
Instal·la Prometheus i Grafana seguint els passos anteriors.
-
Configura Prometheus per recollir mètriques de l'aplicació Nginx.
-
Crea un panell de control en Grafana per visualitzar les mètriques de Nginx.
Solució
-
Desplegament de Nginx:
kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --port=80 --type=NodePort
-
Instal·lació de Prometheus i Grafana:
- Segueix els passos descrits en les seccions anteriors.
-
Configuració de Prometheus:
- Afegeix una nova configuració de
scrape_config
per Nginx en el fitxerprometheus-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
- Afegeix una nova configuració de
-
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)
- Afegeix una nova consulta PromQL per obtenir les mètriques de Nginx, per exemple:
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
- Què és Kubernetes?
- Arquitectura de Kubernetes
- Conceptes i Terminologia Clau
- Configuració d'un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
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
- Monitorització amb Prometheus
- Registre amb Elasticsearch, Fluentd i Kibana (EFK)
- Controls de Salut i Probes
- Servidor de Mètriques
Mòdul 8: Seguretat en Kubernetes
- Control d'Accés Basat en Rols (RBAC)
- Polítiques de Seguretat de Pods
- Seguretat de Xarxa
- Seguretat d'Imatges
Mòdul 9: Escalabilitat i Rendiment
- Autoscalat Horitzontal de Pods
- Autoscalat Vertical de Pods
- Autoscalat de Clúster
- Optimització del Rendiment
Mòdul 10: Ecosistema i Eines de Kubernetes
Mòdul 11: Estudis de Cas i Aplicacions del Món Real
- Desplegament d'una Aplicació Web
- CI/CD amb Kubernetes
- Execució d'Aplicacions Stateful
- Gestió Multi-Clúster