# Installation Beszel - Monitoring Infrastructure ## Vue d'ensemble Beszel est un système de monitoring léger pour serveurs avec historique, stats Docker et alertes. ### Architecture ``` ┌─────────────────────────────────────────────────────────────┐ │ NAS Synology (192.168.1.25) │ │ Beszel Hub │ │ Port: 8090 │ └─────────────────────────────────────────────────────────────┘ │ │ │ │ ▼ ▼ ┌─────────────────────────────┐ ┌─────────────────────────────┐ │ FolzoCorp (192.168.1.11) │ │ EffiServer (192.168.1.27) │ │ Agent Beszel │ │ Agent Beszel │ │ GPU: AMD RX 7800 XT │ │ CPU: Intel J5040 │ │ RAM: 32GB │ │ RAM: 8GB │ └─────────────────────────────┘ └─────────────────────────────┘ ``` --- ## 1. Installation Hub - NAS Synology (192.168.1.25) ### Étape 1: Copier les fichiers ```bash # Sur le NAS Synology (via SSH) mkdir -p ~/beszel && cd ~/beszel # Copier le fichier docker-compose depuis FolzoCorp scp folzo@192.168.1.11:~/Documents/OpenCode/Projets/Effi/beszel/docker-compose-hub.yml ./ ``` ### Étape 2: Démarrer le Hub ```bash cd ~/beszel docker compose up -d ``` ### Étape 3: Créer le compte admin 1. Ouvrir http://192.168.1.25:8090 2. Créer un compte admin 3. Noter les identifiants --- ## 2. Installation Agent - FolzoCorp (192.168.1.11) ### Étape 1: Préparer le répertoire ```bash mkdir -p ~/beszel-agent && cd ~/beszel-agent ``` ### Étape 2: Copier la configuration Le fichier `docker-compose-agent-folzocorp.yml` est dans le projet Effi: ```bash cp ~/Documents/OpenCode/Projets/Effi/beszel/docker-compose-agent-folzocorp.yml ./ ``` ### Étape 3: Démarrer l'agent ```bash docker compose up -d ``` ### Étape 4: Ajouter le système dans Beszel UI 1. Ouvrir http://192.168.1.25:8090 2. Cliquer **Add System** 3. Choisir **Socket** comme type 4. Utiliser le chemin: `/var/run/beszel-agent/beszel.sock` 5. Récupérer le TOKEN et KEY affichés ### Étape 5: Configurer TOKEN et KEY ```bash # Arrêter l'agent docker compose down # Éditer docker-compose.yml et ajouter TOKEN et KEY nano docker-compose.yml # Redémarrer docker compose up -d ``` ### Vérification GPU ```bash # Vérifier que le monitoring GPU fonctionne docker exec beszel-agent beszel-agent status # Ou vérifier les logs docker logs beszel-agent | grep -i gpu ``` --- ## 3. Installation Agent - EffiServer (192.168.1.27) ### Étape 1: Se connecter en SSH ```bash ssh effi@192.168.1.27 ``` ### Étape 2: Préparer le répertoire ```bash mkdir -p ~/beszel-agent && cd ~/beszel-agent ``` ### Étape 3: Copier la configuration ```bash scp folzo@192.168.1.11:~/Documents/OpenCode/Projets/Effi/beszel/docker-compose-agent-effiserver.yml ./ ``` ### Étape 4: Démarrer l'agent ```bash docker compose up -d ``` ### Étape 5: Ajouter dans Beszel UI Même procédure que FolzoCorp, mais utiliser `/var/run/beszel-agent/beszel.sock` --- ## 4. Endpoints API Beszel Beszel expose une API REST pour qu'Effi puisse récupérer les métriques. ### Authentification ```bash # Login pour obtenir un token curl -X POST http://192.168.1.25:8090/api/auth/login \ -H "Content-Type: application/json" \ -d '{"identity": "admin", "password": "votre_password"}' ``` ### Récupérer les stats d'un système ```bash # Lister les systèmes curl http://192.168.1.25:8090/api/systems \ -H "Authorization: Bearer " # Stats détaillées d'un système curl http://192.168.1.25:8090/api/systems//stats \ -H "Authorization: Bearer " ``` ### Exemple de réponse stats ```json { "cpu": 12.5, "memory": 45.2, "swap": 8.1, "disk": 67.3, "load": [1.2, 0.8, 0.5], "temperature": {}, "gpu": { "AMD RX 7800 XT": { "memory_used": 1788194816, "memory_total": 17163091968, "utilization_gpu": 3, "power_draw": 20 } }, "containers": [ { "id": "abc123", "name": "comfyui", "cpu_percent": 0.5, "memory_percent": 48.69 } ] } ``` --- ## 5. Scripts Effi pour interroger Beszel ### Script Python pour récupérer les stats ```python import requests import os BESZEL_URL = "http://192.168.1.25:8090" USERNAME = os.getenv("BESZEL_USER", "admin") PASSWORD = os.getenv("BESZEL_PASSWORD", "") def get_beszel_token(): response = requests.post(f"{BESZEL_URL}/api/auth/login", json={ "identity": USERNAME, "password": PASSWORD }) return response.json().get("token") def get_system_stats(system_id, token): headers = {"Authorization": f"Bearer {token}"} response = requests.get(f"{BESZEL_URL}/api/systems/{system_id}/stats", headers=headers) return response.json() def check_resource_usage(): token = get_beszel_token() # FolzoCorp folzo_stats = get_system_stats("folzocorp", token) if folzo_stats["memory"]["used_percent"] > 90: print("⚠️ FolzoCorp RAM > 90%") # EffiServer effi_stats = get_system_stats("effiserver", token) if effi_stats["cpu"] > 80: print("⚠️ EffiServer CPU > 80%") ``` --- ## 6. Alertes ### Configurer des alertes dans Beszel UI 1. Ouvrir http://192.168.1.25:8090 2. Cliquer sur un système → **Edit** 3. Aller dans **Alerts** tab 4. Configurer les alertes souhaitées: | Métrique | Seuil Warning | Seuil Critical | |----------|---------------|----------------| | CPU | 70% | 90% | | RAM | 80% | 95% | | VRAM | 80% | 95% | | Disk | 80% | 90% | --- ## 7. Dépannage ### Agent ne démarre pas ```bash # Vérifier les logs docker logs beszel-agent # Vérifier la connectivité au Hub curl http://192.168.1.25:8090/health ``` ### GPU non détecté sur FolzoCorp ```bash # Vérifier les permissions GPU ls -la /dev/kfd ls -la /dev/dri/ # Tester rocm-smi manuellement rocm-smi --showmeminfo vram ``` ### Socket non accessible ```bash # Vérifier que le socket existe ls -la /var/run/beszel-agent/ # Redémarrer l'agent docker restart beszel-agent ``` --- ## Fichiers de configuration | Fichier | Emplacement | Description | |---------|-------------|-------------| | `docker-compose-hub.yml` | Synology NAS | Configuration Hub | | `docker-compose-agent-folzocorp.yml` | FolzoCorp | Agent FolzoCorp avec GPU AMD | | `docker-compose-agent-effiserver.yml` | EffiServer | Agent EffiServer (CPU only) | --- ## Monitoring GPU ### FolzoCorp (AMD RX 7800 XT) - Utilise `amd_sysfs` collector (recommandé) - Métriques: VRAM, utilisation GPU, power draw - Pas besoin de `rocm-smi` (amd_sysfs plus efficace) ### EffiServer (Intel J5040) - GPU monitoring désactivé (`SKIP_GPU=true`) - J5040 n'a pas de GPU dédié --- ## Liens utiles - [Beszel GitHub](https://github.com/henrygd/beszel) - [Documentation Beszel](https://beszel.dev) - [GPU Monitoring](https://beszel.dev/guide/gpu) - [REST API](https://beszel.dev/guide/rest-api)