Source : CLAUDE.md lignes 877-974
┌─────────────────────────────────────────────────────────────────┐
│ SOURCES (Promtail agents) │
│ PVE, nginx, gitlab, prod-portainer, dev-portainer │
│ │ │
│ ▼ │
│ ┌──────────┐ │
│ │ LOKI │ Hot storage (30j) │
│ │ :3100 │ prod-portainer │
│ └──────────┘ │
│ │ │ │
│ ┌───────┘ └───────┐ │
│ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ │
│ │ GRAFANA │ │ O2SWITCH │ Cold archive (90j) │
│ │ :3000 │ │ ~/logs/ │ │
│ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────────┘
| 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 |
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
# 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} "
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)
sudo systemctl restart promtail| 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 |
# /etc/cron.d/sync-logs-o2switch (PVE)
0 3 * * * gouroubleu /stock_8to/33800-stack/scripts/logs/sync-logs-o2switch.sh