Monitorització
monitoring és la màquina d'observabilitat: Prometheus per a les mètriques, Loki per als logs, Tempo per a les traces, Grafana per explorar-ho tot, Traefik publicant-ho per HTTPS i cAdvisor informant dels mateixos contenidors.
Una VM, sis contenidors, cadascun en el seu propi projecte de Docker Compose.
Que cada servei sigui un projecte separat no és casualitat: amb un de sol, una imatge que no es pot descarregar fa caure els sis contenidors. Així, un tag erroni només afecta el seu servei.
Desplegament
La plantilla Monitoring es desplega en tres fases:
| Fase | Què fa |
|---|---|
| 1 | Crea la VM amb el seu disc de dades |
| 2 | Instal·la Docker, crea la xarxa ingress i prepara el que comparteixen els serveis |
| 3 | Desplega els sis serveis en paral·lel, un treball per servei |
Si alguna cosa falla, el treball fallit indica exactament quin servei ha estat.
| Recurs | Recomanat | Mínim |
|---|---|---|
| vCPU | 4 | 2 |
| Memòria | 8 GiB | 4 GiB |
| Disc arrel | 32 GiB | 32 GiB |
| Disc de dades | 50 GiB | 32 GiB |
La retenció és de 15 dies per a les tres senyals. Són dades de vida curta i reproduïbles, així que no tenen còpia de seguretat.
Loki triga uns tres minuts a estar llest. El seu check de Nagios fa servir una plantilla lenta perquè un reinici no generi alertes.
Noms i certificats
Cada servei respon en un nom escollit entre els àlies del registre DNS de la màquina a Horizon, així que cal crear-los abans de desplegar:
| Nom | Servei | Accés |
|---|---|---|
grafana.<domini> | Grafana | Login propi de Grafana (i Keycloak) |
prometheus.<domini> | Prometheus | Autenticació bàsica |
loki.<domini> | Loki | Autenticació bàsica |
tempo.<domini> | Tempo (OTLP per HTTP) | Autenticació bàsica |
Traefik obté un únic certificat de Let's Encrypt per a tots mitjançant el repte DNS-01, així que els noms només cal que resolguin dins de la xarxa, però el domini ha d'existir públicament.
Les credencials d'ingesta són les sortides ingest_username i ingest_password del treball traefik. Són les que fa servir FluxCD per enviar la telemetria del clúster. Si ingest_password es deixa buit al primer desplegament, es genera.
Recollida de dades
- VMs: Prometheus recull el Node Exporter (
9100) de cada VM. Els targets dels stacks els escriu Horizon des de la seva pàgina de Prometheus. - Kubernetes: el clúster envia mètriques, logs i traces als tres endpoints. La màquina de monitorització no necessita accés al clúster ni cap credencial seva, i continua funcionant quan es reconstrueix el clúster.
- Autocontrol: Prometheus recull els seus propis serveis i avisa si algun deixa de respondre.
Canvis
No hi ha accions: tot ajust és una variable del seu treball, i editar-la torna a executar únicament aquell treball.
| Per | Editar |
|---|---|
| Actualitzar un servei | image_version al seu treball |
| Canviar una retenció | settings a Prometheus, Loki o Tempo |
| Afegir un dashboard o una alerta de base | Els fitxers de services/grafana/ i tornar a desplegar el treball grafana |
| Rotar la credencial d'ingesta | ingest_password al treball traefik |
Les versions són exactes (mai latest), de manera que actualitzar és un canvi deliberat i tornar enrere és posar el tag anterior.
La contrasenya d'administrador de Grafana, l'inici de sessió amb Keycloak i el correu no són d'aquest stack: els gestiona Horizon des d'Admin › Grafana. Si l'SSO falla i ningú no hi pot entrar, la contrasenya es pot restablir a la màquina:
printf '%s' "$password" | sudo docker exec -i grafana \
grafana-cli --homepath /usr/share/grafana admin reset-admin-password --password-from-stdin
Documentació
- architecture.md: components, ports, emmagatzematge i mida.
- operations.md: fases, canvis i manteniment.
- networking.md: Traefik, certificats i noms.
- alerting.md: les alertes de Grafana i el seu repartiment amb Nagios.
- kubernetes.md: el contracte amb el clúster i la configuració recomanada d'Alloy.