# 🛠️ Ops-GPT : Orchestrateur SRE (Modèle GPT-OSS:20B) **Ops-GPT** est un assistant SRE spécialisé dans l'écosystème **RHEL / CentOS / Rocky Linux**. Il utilise les données temps réel pour diagnostiquer les pannes de service et les conflits de ressources. ## 📌 Architecture de Diagnostic L'intelligence du système repose sur la corrélation de cinq flux de données via le protocole **MCP (Model Context Protocol)** : 1. **Inventaire (RPM)** : Identification des versions OS et paquets. 2. **Performance (VictoriaMetrics)** : Monitoring (CPU, RAM, I/O, Network). 3. **Réseau & Sockets (`ss -ntulop`)** : État réel des ports et processus à l'écoute. 4. **Configuration Live par Service** : Lecture ciblée des fichiers de configuration (`/etc/`). 5. **Mémoire Collective (ChromaDB)** : Base vectorielle des incidents passés. --- ## 🚀 Spécifications des Outils MCP ### 📂 `get_live_config(service_name)` * **Fonction** : Récupère intelligemment l'ensemble des fichiers de configuration liés à un service spécifique. * **Comportement** : Si `service_name="nginx"`, l'outil renvoie `/etc/nginx/nginx.conf` et les fichiers dans `/etc/nginx/conf.d/`. * **Format de sortie** : ```text SERVICE: [service_name] FILES_COLLECTED: /etc/[service]/... --- FILE: [path] --- [Content] ``` ### 🔌 `get_network_sockets` * **Fonction** : Fournit la sortie brute de la commande `ss -ntulop`. * **Utilité** : Permet au LLM de corréler les ports configurés avec les processus réellement en cours d'exécution (PID, Users, Inodes). * **Format de sortie** : ```text NETWORK_STATE (ss -ntulop): Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1234,fd=6)) ``` ### 📊 `get_system_metrics` (VictoriaMetrics) * **Fonction** : Extraction des statistiques descriptives (Load, CPU, I/O Wait). --- ## 🛡️ Règles de Gouvernance SRE ### 1. Sécurité et Anonymisation Le modèle applique un filtre systématique : * `IPs` ➔ `[IP_SOURCE]` / `[IP_DEST]` * `Hostnames` ➔ `[HOSTNAME]` * `Secrets` ➔ `[REDACTED]` (Clés, Passwords dans les confs). ### 2. Stratégie Linguistique * **Interface Client** : Français. * **Backend & Archivage** : Anglais Technique. ### 3. Philosophie d'Intervention * **Périmètre** : OS & Middleware (RHEL-based). * **Priorité** : Restauration immédiate (MTTR) via Workarounds. * **Données** : Zéro perte de données tolérée. --- ## 📋 Exemple de Corrélation Avancée 1. **Input** : "Impossible de démarrer Apache sur [HOSTNAME]." 2. **Action 1 (`get_network_sockets`)** : Le modèle voit que le port 80 est déjà "LISTEN" par le PID 567 (nginx). 3. **Action 2 (`get_live_config("apache")`)** : Le modèle confirme que le `Listen 80` est configuré. 4. **Action 3 (`get_rpm_inventory`)** : Vérifie si une mise à jour récente a installé `nginx` par erreur (dépendance). 5. **Synthèse** : "Conflit détecté : Nginx occupe déjà le port 80. Souhaitez-vous arrêter Nginx ou changer le port d'Apache ?" 6. **Archivage** : Enregistre le conflit de port dans ChromaDB.