33800 Docs

← Retour

Logging Centralisé

Source : CLAUDE.md lignes 877-974

Architecture

┌─────────────────────────────────────────────────────────────────┐
│  SOURCES (Promtail agents)                                       │
│  PVE, nginx, gitlab, prod-portainer, dev-portainer              │
│                           │                                      │
│                           ▼                                      │
│                    ┌──────────┐                                  │
│                    │   LOKI   │  Hot storage (30j)               │
│                    │ :3100    │  prod-portainer                  │
│                    └──────────┘                                  │
│                      │      │                                    │
│              ┌───────┘      └───────┐                            │
│              ▼                      ▼                            │
│       ┌──────────┐           ┌──────────┐                        │
│       │ GRAFANA  │           │ O2SWITCH │  Cold archive (90j)    │
│       │ :3000    │           │ ~/logs/  │                        │
│       └──────────┘           └──────────┘                        │
└─────────────────────────────────────────────────────────────────┘

Machines avec Promtail

Machine Config Logs collectés
PVE /etc/promtail/config.yml syslog, crons, zfs, monitoring, journal
nginx /etc/promtail/config.yml access, error, vhosts, syslog, auth
gitlab /etc/promtail/config.yml rails, nginx, sidekiq, syslog
prod-portainer Docker compose Tous containers Docker (29+)
dev-portainer /etc/promtail/config.yml Containers Docker DEV

Labels Loki (convention)

env: "prod" | "dev"           # Environnement
host: "pve" | "nginx" | ...   # Machine source
type: "system" | "app" | "cron" | "access" | "error"
service: "docker" | "nginx" | "gitlab" | ...
container: "ntfy" | "loki" | ...  # Nom container Docker
stack: "monitoring" | "notifications" | ...  # Compose project

Requêtes utiles Grafana

# Tous les logs d'un host
{host="nginx"}

# Erreurs uniquement
{type="error"} |= "error"

# Logs d'un container
{container="ntfy"}

# Nginx 5xx
{host="nginx", type="access"} |~ " 5[0-9]{2} "

Ajouter logs pour un nouveau service

1. VM Linux (nouvelle machine)

# Copier et exécuter le script d'installation
scp /stock_8to/33800-stack/scripts/logs/install-promtail.sh user@machine:/tmp/
ssh user@machine "sudo /tmp/install-promtail.sh <hostname>"

2. Container Docker (sur prod-portainer)

3. Container Docker (autre machine)

Scripts

Script Usage
/stock_8to/33800-stack/scripts/logs/install-promtail.sh Installer Promtail sur une VM
/stock_8to/33800-stack/scripts/logs/sync-logs-o2switch.sh Archiver logs vers O2switch

Crons Logs

# /etc/cron.d/sync-logs-o2switch (PVE)
0 3 * * * gouroubleu /stock_8to/33800-stack/scripts/logs/sync-logs-o2switch.sh

URLs