Files
ipwatch/SUIVI_EQUIPEMENTS.md
2026-02-07 16:57:37 +01:00

8.6 KiB

📊 Fonctionnalité de Suivi d'Équipements - IPWatch

Vue d'ensemble

Cette nouvelle fonctionnalité permet de suivre des équipements spécifiques du réseau avec des actions de gestion à distance (Wake-on-LAN, arrêt).

Modifications apportées

🔧 Backend (FastAPI)

1. Modèle de données

  • Fichier: backend/app/models/ip.py
  • Changement: Ajout du champ tracked (Boolean) avec index dans la table IP

2. Nouveau router tracking

  • Fichier: backend/app/routers/tracking.py
  • Endpoints:
    • GET /api/tracking/ - Récupère toutes les IPs suivies
    • POST /api/tracking/wol/{ip_address} - Envoie un paquet Wake-on-LAN
    • POST /api/tracking/shutdown/{ip_address} - Éteint un équipement (à implémenter selon infrastructure)
    • PATCH /api/tracking/{ip_address}/toggle - Bascule l'état tracked d'une IP

3. Migration de base de données

  • Fichier: backend/app/migrations/add_tracked_field.py
  • Commande: python -m backend.app.migrations.add_tracked_field
  • Action: Ajoute la colonne tracked et son index

4. Dépendances

  • Fichier: backend/requirements.txt
  • Ajout: wakeonlan==3.1.0 pour l'envoi de paquets Magic Packet

🎨 Frontend (Vue 3)

1. Routing

  • Fichier: frontend/src/router/index.js
  • Routes:
    • / - Page principale (MainView)
    • /tracking - Page de suivi des équipements (TrackingView)

2. Composants modifiés

  • IPDetails.vue: Ajout d'une checkbox "IP suivie"
  • AppHeader.vue: Ajout d'un bouton "Suivi" (jaune/orange)
  • App.vue: Remplacé par <router-view /> pour le routing

3. Nouveaux composants

  • views/MainView.vue: Page principale (anciennement App.vue)
  • views/TrackingView.vue: Page de suivi avec grille d'équipements

4. Dépendances

  • Fichier: frontend/package.json
  • Ajout: vue-router@^4.2.5

📋 Instructions de déploiement

Étape 1: Mise à jour du backend

# Se placer dans le répertoire backend
cd backend

# Installer la nouvelle dépendance wakeonlan
pip install -r requirements.txt

# Exécuter la migration de base de données
python -m backend.app.migrations.add_tracked_field

Sortie attendue:

→ Ajout de la colonne 'tracked' à la table IP...
→ Création de l'index sur 'tracked'...
✓ Migration terminée avec succès!
  - Colonne 'tracked' ajoutée
  - Index 'idx_ip_tracked' créé

Étape 2: Mise à jour du frontend

# Se placer dans le répertoire frontend
cd frontend

# Installer les nouvelles dépendances
npm install

# Rebuilder le frontend
npm run build

Étape 3: Redémarrer l'application

Mode Docker:

# Reconstruire l'image
docker-compose build

# Redémarrer le conteneur
docker-compose up -d

Mode développement:

# Terminal 1 - Backend
cd backend
python -m backend.app.main

# Terminal 2 - Frontend
cd frontend
npm run dev

🎯 Utilisation

1. Marquer une IP comme suivie

  1. Cliquez sur une cellule IP dans la grille
  2. Dans le panneau de gauche (détails), cochez "IP suivie"
  3. Cliquez sur "Enregistrer"

2. Accéder à la page de suivi

  1. Cliquez sur le bouton "Suivi" dans le header (jaune/orange avec icône étoile)
  2. Vous arrivez sur /tracking avec la liste des équipements suivis

3. Actions disponibles

Pour chaque équipement suivi:

  • WOL (bouton vert): Envoie un paquet Wake-on-LAN

    • Nécessite une adresse MAC
    • Désactivé si l'équipement est déjà en ligne
  • Éteindre (bouton rose): Commande d'arrêt

    • ⚠️ Nécessite une configuration supplémentaire (voir ci-dessous)
    • Désactivé si l'équipement est hors ligne
  • Détails (bouton violet): Retourne à la page principale avec l'IP sélectionnée

⚙️ Configuration Wake-on-LAN

Prérequis matériels

Pour que WOL fonctionne, l'équipement cible doit avoir:

  1. BIOS/UEFI: Option "Wake-on-LAN" activée
  2. Carte réseau: Support WOL activé dans les propriétés (Windows) ou via ethtool (Linux)
  3. Alimentation: Alimentation connectée (ATX)

Configuration réseau

Le paquet Magic Packet WOL est envoyé en broadcast sur le réseau local. Assurez-vous que:

  • Le serveur IPWatch et l'équipement cible sont sur le même réseau local
  • Aucun firewall ne bloque les paquets UDP broadcast

🔧 Configuration Shutdown (avancé)

La fonctionnalité d'arrêt nécessite une configuration selon votre infrastructure:

Option 1: SSH (Linux)

# Dans backend/app/routers/tracking.py
import paramiko

def shutdown_via_ssh(ip_address, username, password):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(ip_address, username=username, password=password)
    ssh.exec_command("sudo shutdown -h now")
    ssh.close()

Dépendance: pip install paramiko

Option 2: WMI (Windows)

# Nécessite wmi-client-wrapper
import wmi

def shutdown_via_wmi(ip_address, username, password):
    c = wmi.WMI(computer=ip_address, user=username, password=password)
    os = c.Win32_OperatingSystem(Primary=1)[0]
    os.Shutdown()

Dépendance: pip install wmi-client-wrapper

Option 3: API REST (Équipements réseau)

Pour les équipements réseau (routeurs, switches) avec API REST.

⚠️ Sécurité

IMPORTANT: Stockez les credentials de manière sécurisée:

  • Utilisez des variables d'environnement
  • Ou un gestionnaire de secrets (Vault, AWS Secrets Manager)
  • JAMAIS en clair dans le code

🎨 Personnalisation visuelle

Couleurs utilisées (Monokai)

La page de suivi utilise la palette Monokai définie dans guidelines-css.md:

  • Vert (#A6E22E): Équipement en ligne, bouton WOL
  • Rose (#F92672): Équipement hors ligne, bouton Éteindre
  • Jaune (#E6DB74): Bouton "Suivi" dans le header
  • Cyan (#66D9EF): Bouton Rafraîchir
  • Violet (#AE81FF): Bouton Détails

Layout

  • Grille responsive: 1-4 colonnes selon la taille d'écran
  • Cartes d'équipements: Bordure dynamique selon l'état (en ligne/hors ligne)
  • Halo lumineux: Effet de shadow pour les équipements en ligne

🐛 Dépannage

Erreur: "La bibliothèque 'wakeonlan' n'est pas installée"

pip install wakeonlan==3.1.0

Erreur: "IP non trouvée dans la base de données"

Assurez-vous que:

  1. L'IP existe dans la base (scan réseau effectué)
  2. La migration a bien été exécutée

WOL ne fonctionne pas

Vérifiez:

  1. L'adresse MAC est bien renseignée pour l'IP
  2. L'équipement cible a WOL activé dans le BIOS
  3. Le serveur et la cible sont sur le même réseau local

Le bouton "Suivi" ne s'affiche pas

Vérifiez:

  1. npm install a bien été exécuté
  2. Le frontend a été rebuilé (npm run build)
  3. Le navigateur n'a pas de cache (Ctrl+Shift+R pour forcer le refresh)

📊 Structure des fichiers

ipwatch/
├── backend/
│   ├── app/
│   │   ├── models/ip.py                    [MODIFIÉ]
│   │   ├── routers/
│   │   │   ├── ips.py                       [MODIFIÉ]
│   │   │   └── tracking.py                  [NOUVEAU]
│   │   ├── migrations/
│   │   │   └── add_tracked_field.py         [NOUVEAU]
│   │   └── main.py                          [MODIFIÉ]
│   └── requirements.txt                      [MODIFIÉ]
│
├── frontend/
│   ├── src/
│   │   ├── router/
│   │   │   └── index.js                     [NOUVEAU]
│   │   ├── views/
│   │   │   ├── MainView.vue                 [NOUVEAU]
│   │   │   └── TrackingView.vue             [NOUVEAU]
│   │   ├── components/
│   │   │   ├── AppHeader.vue                [MODIFIÉ]
│   │   │   └── IPDetails.vue                [MODIFIÉ]
│   │   ├── App.vue                          [MODIFIÉ]
│   │   └── main.js                          [MODIFIÉ]
│   └── package.json                          [MODIFIÉ]
│
└── SUIVI_EQUIPEMENTS.md                      [CE FICHIER]

🚀 Améliorations futures

  • Groupes d'équipements (ex: "Serveurs", "Imprimantes")
  • Historique des démarrages/arrêts
  • Notifications push lors de changements d'état
  • Planification horaire (démarrage/arrêt automatique)
  • Graphiques d'uptime
  • Support IPMI/iLO/iDRAC pour serveurs
  • Export CSV/Excel des équipements suivis
  • Tags personnalisés

📞 Support

Pour toute question ou problème:

  1. Consultez les logs du backend: docker logs ipwatch_backend
  2. Consultez la console du navigateur (F12)
  3. Vérifiez que la migration a bien été exécutée