maj du readme
This commit is contained in:
123
README.md
123
README.md
@ -1,72 +1,85 @@
|
||||
# 🛠️ Ops-GPT : Orchestrateur SRE (Modèle GPT-OSS:20B)
|
||||
# Ops-GPT MCP Ecosystem 🚀
|
||||
|
||||
**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.
|
||||
Ce dépôt contient une infrastructure de diagnostic et de base de connaissances SRE (Site Reliability Engineering) basée sur le protocole **Model Context Protocol (MCP)**. L'objectif est de permettre à un orchestrateur LLM d'automatiser le diagnostic d'incidents système et la recherche de solutions passées.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Spécifications des Outils MCP
|
||||
## 🏗️ Architecture du Projet
|
||||
|
||||
### 📂 `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]
|
||||
```
|
||||
Le projet est composé de trois services principaux interconnectés :
|
||||
|
||||
### 🔌 `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))
|
||||
```
|
||||
1. **`ops-gpt-mcp` (Diagnostic Engine)** :
|
||||
* Simulateur d'outils SRE (Inventory, Sockets, Metrics, Configs).
|
||||
* Interface directe avec les fichiers de données brutes des hôtes cibles.
|
||||
* Propulsé par `FastMCP`.
|
||||
|
||||
2. **`chroma-mcp` (Knowledge Base)** :
|
||||
* Assistant de gestion d'historique d'incidents.
|
||||
* [cite_start]Utilise ChromaDB pour la recherche vectorielle de solutions techniques. [cite: 2]
|
||||
* [cite_start]Propulsé par `FastMCP`. [cite: 2]
|
||||
|
||||
### 📊 `get_system_metrics` (VictoriaMetrics)
|
||||
* **Fonction** : Extraction des statistiques descriptives (Load, CPU, I/O Wait).
|
||||
3. **`chroma-db`** :
|
||||
* [cite_start]Base de données vectorielle (ChromaDB) servant de backend au service `chroma-mcp`. [cite: 2]
|
||||
|
||||
---
|
||||
|
||||
## 🛡️ Règles de Gouvernance SRE
|
||||
## 🛠️ Catalogue des Outils (Tools)
|
||||
|
||||
### 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).
|
||||
### Diagnostics Système (`ops-gpt-mcp`)
|
||||
* **`list_services_with_config`** : Identifie les middlewares actifs avec configurations agrégées.
|
||||
* **`get_rpm_inventory`** : Audit complet des paquets RPM et version du noyau.
|
||||
* **`get_network_sockets`** : État détaillé des sockets d'écoute (`ss -ntulop`).
|
||||
* **`get_system_metrics`** : Extraction des métriques CPU/RAM/IO (VictoriaMetrics).
|
||||
* **`get_live_config`** : Lecture du contenu brut des fichiers de configuration spécifiques.
|
||||
|
||||
### 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.
|
||||
### [cite_start]Base de Connaissances (`chroma-mcp`) [cite: 2]
|
||||
* [cite_start]**`find_incident_solution`** : Recherche vectorielle de solutions basées sur une erreur ou un log. [cite: 2]
|
||||
* [cite_start]**`add_incident_report`** : Archivage d'un nouvel incident résolu dans la base. [cite: 2]
|
||||
* [cite_start]**`list_all_incidents`** : Consultation de l'historique des entrées de la base. [cite: 2]
|
||||
|
||||
---
|
||||
|
||||
## 📋 Exemple de Corrélation Avancée
|
||||
## 🚀 Déploiement
|
||||
|
||||
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.
|
||||
### Prérequis
|
||||
* Docker et Docker Compose.
|
||||
* Structure de données attendue dans `./data/[hostname]/`.
|
||||
|
||||
### Lancement de la stack
|
||||
Pour démarrer l'ensemble des services :
|
||||
|
||||
```bash
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
### Vérification des serveurs
|
||||
Les serveurs exposent des interfaces SSE sur les ports suivants :
|
||||
* **Ops-GPT MCP** : `http://localhost:8081/sse`
|
||||
* **Chroma MCP** : `http://localhost:8080/sse`
|
||||
|
||||
---
|
||||
|
||||
## 📁 Structure des Données de Diagnostic
|
||||
Le simulateur `ops-gpt-mcp` s'appuie sur une structure de fichiers spécifique pour fonctionner :
|
||||
```text
|
||||
./data/
|
||||
└── srv-rhel-prod-01/
|
||||
├── rpm_inventory.txt
|
||||
├── network_ss.txt
|
||||
├── metrics_vm.txt
|
||||
└── nginx_conf.txt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Technologies utilisées
|
||||
* [cite_start]**Langage** : Python 3.11-slim [cite: 1]
|
||||
* [cite_start]**Protocol** : Model Context Protocol (MCP) [cite: 2]
|
||||
* [cite_start]**Framework** : FastMCP [cite: 2]
|
||||
* [cite_start]**Database** : ChromaDB (Vector Store) [cite: 2]
|
||||
* [cite_start]**Server** : Uvicorn (Transport SSE) [cite: 3]
|
||||
|
||||
---
|
||||
|
||||
## 📝 Configuration Git
|
||||
Toute recherche ou stockage dans la base de données doit se faire en langue anglaise pour correspondre à la documentation technique majoritaire. Les solutions sont système-based afin de prioriser la restauration de service sans perte de données.
|
||||
|
||||
Reference in New Issue
Block a user