33800 Docs

← Retour

Proposition : Refactoring collect.sh / generate.sh

Date : 11/01/2026 20:15 Status : IMPLEMENTEE Priorite : Moyenne Effort estime : 4-6h


Probleme actuel

Fichier Lignes Probleme
collect.sh ~1500 Monolithique, difficile a maintenir
generate.sh ~5700 Tres volumineux, genere toutes les pages

Solution proposee

Structure cible

/stock_8to/33800-stack/monitoring/
├── collect.sh                    # Orchestrateur principal
├── collect.d/                    # Modules de collecte
│   ├── _common.sh                # Fonctions partagees
│   ├── 01-pve.sh                 # PVE + ZFS
│   ├── 02-proxmox1.sh            # Proxmox 155
│   ├── 03-prod-portainer.sh      # Docker PROD
│   ├── 04-dev-portainer.sh       # Docker DEV
│   ├── 05-gitlab.sh              # GitLab
│   ├── 06-nginx.sh               # Nginx reverse proxy
│   ├── 07-jellyfin.sh            # Media server
│   ├── 08-win11.sh               # Windows
│   ├── 09-services.sh            # Services externes (Supabase, NeedFinder, etc.)
│   ├── 10-crons.sh               # Status crons
│   └── 11-schedulers.sh          # Schedulers containers
│
├── generate.sh                   # Orchestrateur principal
├── generate.d/                   # Modules de generation
│   ├── _common.sh                # Header HTML, CSS, fonctions
│   ├── _templates.sh             # Templates HTML reutilisables
│   ├── index.sh                  # Page principale
│   ├── services.sh               # Page services
│   ├── crons.sh                  # Page crons
│   ├── nginx.sh                  # Page nginx
│   ├── raidz.sh                  # Page RAIDZ
│   ├── needfinder.sh             # Page NeedFinder (existe deja)
│   ├── alerts.sh                 # Page alertes
│   ├── secrets.sh                # Page secrets
│   ├── montages.sh               # Page montages
│   ├── endpoints.sh              # Page endpoints
│   ├── doc.sh                    # Page documentation
│   └── yolo.sh                   # Page YOLO
│
└── current.json                  # Donnees collectees

Avantages

  1. Modularite : Chaque machine/page dans son fichier
  2. Maintenance : Plus facile a debugger et modifier
  3. Collecte partielle : ./collect.sh --only=gitlab,nginx
  4. Generation partielle : ./generate.sh --only=crons,index
  5. Parallelisation : Collecter plusieurs machines en parallele
  6. Tests : Tester une section sans tout relancer

Implementation

Phase 1 : collect.sh (2-3h)

  1. Creer collect.d/_common.sh avec fonctions partagees
  2. Extraire chaque section dans son module
  3. Modifier collect.sh pour sourcer les modules
  4. Ajouter support --only= et --exclude=

Phase 2 : generate.sh (2-3h)

  1. Creer generate.d/_common.sh avec CSS/HTML commun
  2. Extraire chaque page dans son module
  3. Modifier generate.sh pour appeler les modules
  4. Ajouter support --only= et --exclude=

Phase 3 : Tests (30min)

  1. Lancer collecte complete
  2. Verifier toutes les pages
  3. Tester collecte/generation partielle

Usage cible

# Collecte complete (comme avant)
./collect.sh

# Collecte partielle
./collect.sh --only=gitlab,nginx
./collect.sh --exclude=win11

# Generation complete (comme avant)
./generate.sh

# Generation partielle
./generate.sh --only=crons,needfinder

Risques


Decision