Monitoring
Prometheus guarda l'historial de mètriques dels teus contenidors i dispara una alerta quan un se'n va de mare; Grafana el dibuixa.
Introducció
A Recursos vas fer servir docker stats per veure què consumia un contenidor.
NAME CPU % MEM USAGE / LIMIT
burner 100.00% 2.91MiB / 11.74GiBServeix per mirar, però no per administrar.
docker stats només et diu què passa ara mateix, i les preguntes que et faran mai són sobre ara mateix:
- «El web anava lent ahir a les tres. Què passava?»
- «Aquest contenidor sempre ha gastat tanta memòria, o ha crescut aquesta setmana?»
- «Qui em truca quan un servei es queda sense CPU a les quatre de la matinada?»
Cap de les tres la pot respondre una foto.
Necessites tres coses: algú que prengui mesures cada pocs segons, un lloc on quedin guardades, i una regla que avisi quan una mesura passa d’un límit.
Entorn de treball
Munta-ho amb tres contenidors:
- cAdvisor mesura els contenidors del host i publica les mesures.
- Prometheus les va a buscar cada pocs segons i se les guarda.
- Grafana les dibuixa.
Crea el directori monitoring i, a dins, el fitxer compose.yaml:
services:
prometheus:
image: prom/prometheus:v3.7.3
ports:
- 9090:9090
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- ./alerts.yml:/etc/prometheus/alerts.yml
cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.52.1
privileged: true
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /sys:/sys:ro
- /var/lib/docker:/var/lib/docker:ro
grafana:
image: grafana/grafana:12.3.1
ports:
- 3000:3000
environment:
GF_SECURITY_ADMIN_PASSWORD: secretFixa’t en els volums de cAdvisor: llegeix /sys i el socket de docker del host, en només lectura.
És un contenidor que mira des de dins el que passa a fora, i per això necessita privileged.
Mètriques
Una mètrica és un número que canvia amb el temps, amb un nom i unes etiquetes que diuen de qui és.
Crea prometheus.yml:
global:
scrape_interval: 5s
rule_files:
- alerts.yml
scrape_configs:
- job_name: prometheus
static_configs:
- targets:
- job_name: cadvisor
static_configs:
- targets: Un scrape és una petició HTTP: cada 5 segons Prometheus demana /metrics a cadascun dels targets i es queda el que li tornen.
Prometheus no espera que ningú li enviï res — va ell a buscar-ho.
Crea també alerts.yml, encara buit de regles però necessari perquè el fitxer existeixi:
groups: Estàs llegint una vista prèvia.
Inicia la sessió amb Google per llegir la pàgina sencera.
Inicia la sessió amb GoogleNomés et demanarem que acceptis les condicions del servei.