Analyseur de journaux automatisé avec Intelligence Artificielle (IA) et alertes, conçu pour surveiller, résumer et détecter les incidents critiques dans vos logs applicatifs ou systèmes.
- Collecte automatique des logs depuis Elasticsearch
- Détection intelligente d'incidents, erreurs, problèmes de sécurité ou de performance via IA (Google Gemini)
- Alertes automatiques par e-mail en cas de problème critique
- Gestion d'état pour chaque client (pas de doublons, continuité assurée)
- Enrichissement des résultats (métadonnées, échantillons, etc.) pour faciliter l'analyse dans Kibana
- Configuration flexible via variables d'environnement
- Python 3.8+
- Pile ELK (Elasticsearch + Kibana + Filebeat/Logstash) installée et fonctionnelle – OBLIGATOIRE
- Testé avec Elasticsearch 8/9.
- Les logs doivent être ingérés (ex: via Filebeat →
filebeat-*).
- Une clé API Google Gemini (https://aistudio.google.com/app/apikey)
- Accès SMTP pour l'envoi d'e-mails (optionnel)
- Vérifier Elasticsearch est UP:
curl -s http://localhost:9200 | jq . # ou simplement curl http://localhost:9200
- Vérifier un index de logs existe (ex: Filebeat):
curl -s http://localhost:9200/_cat/indices/filebeat-*?v - Vérifier l'accès à Kibana:
http://localhost:5601(ou l’URL de votre instance)
- Clonez le dépôt :
git clone https://github.com/Demonshuraisha/ia-log-analyzer.git cd ia-log-analyzer - Créez un environnement virtuel et activez-le :
python -m venv env source env/bin/activate # ou .\env\Scripts\activate sous Windows
- Installez les dépendances :
pip install -r requirements.txt
Créez un fichier .env (ou exportez les variables d'environnement) avec les paramètres suivants :
# Elasticsearch
ES_HOST=http://localhost:9200
ES_USER=elastic
ES_PASSWORD=changeme
LOG_INDEX_PATTERN=filebeat-*
ANALYSIS_STATE_INDEX=ia-analysis-state
IA_RESULTS_INDEX=ia-analysis-results
CLIENT_ID_FIELD=host.name.keyword
# API IA
GEMINI_API_KEY=sk-xxxxxxx
# Script
ANALYSIS_INTERVAL_SECONDS=300
MAX_LOGS_PER_BATCH=50
INITIAL_LOOKBACK_SECONDS=3600
ACTIVE_CLIENTS_LOOKBACK_TIME=24h
# Notifications e-mail
ENABLE_EMAIL_NOTIFICATIONS=True
SMTP_SERVER=smtp.example.com
SMTP_PORT=587
SMTP_USERNAME=monuser
SMTP_PASSWORD=monpass
EMAIL_FROM=ia-analyzer@yourdomain.com
EMAIL_TO=admin@yourdomain.com
EMAIL_SUBJECT_PREFIX=[IA Log Analyzer Alert]
ALERT_SEVERITIES=critical,highLancez simplement le script principal :
python main.pyLe script tourne en boucle, analyse les logs pour chaque client actif, envoie les résultats dans Elasticsearch et alerte par e-mail si besoin.
Linux (systemd):
[Unit]
Description=IA Log Analyzer
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/ia-log-analyzer
EnvironmentFile=/opt/ia-log-analyzer/.env
ExecStart=/usr/bin/python3 /opt/ia-log-analyzer/main.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.targetWindows (Task Scheduler):
- Créer une tâche planifiée qui démarre au boot, action:
python.exe C:\path\to\ia-log-analyzer\main.py, définir le répertoire de démarrage.
- Dans Kibana → Discover, vérifiez l’index
ia-analysis-results. - Filtrez par
client_idet par@timestamprécent. - En cas d'alerte, surveillez la boîte mail configurée.
graph TD;
A[Collecte clients actifs] --> B[Extraction logs par client]
B --> C[Preparation et enrichissement des logs]
C --> D[Analyse IA - Google Gemini]
D --> E[Stockage des resultats dans Elasticsearch]
D --> F{Probleme critique detecte}
F -->|Oui| G[Envoi alerte e-mail]
F -->|Non| H[Attente prochain cycle]
G --> H
E --> H
Sous licence MIT (voir LICENSE).
Les contributions sont les bienvenues !
- Auteur : Unamed
- Contact : via Github
- Issues & suggestions : via GitHub
Q : Le script ne se connecte pas à Elasticsearch, que faire ?
R : Vérifiez l'URL, le port, les identifiants et que le service Elasticsearch est bien démarré. Consultez les logs pour plus de détails.
Q : Comment tester l'envoi d'e-mails d'alerte ?
R : Activez ENABLE_EMAIL_NOTIFICATIONS, configurez correctement le SMTP et déclenchez une alerte critique (ex : insérez un log simulant une erreur critique).
Q : Comment changer la fréquence d'analyse ?
R : Modifiez la variable d'environnement ANALYSIS_INTERVAL_SECONDS (en secondes) dans votre fichier .env.
Q : Peut-on utiliser une autre IA que Google Gemini ?
R : Le code est modulaire, il suffit d'adapter le module core/ia_api_handler.py pour intégrer une autre API IA.
Q : Où trouver les résultats d'analyse ?
R : Les résultats sont stockés dans l'index Elasticsearch défini par IA_RESULTS_INDEX (par défaut : ia-analysis-results).
- Première version stable de l'analyseur IA de logs
- Collecte automatique des logs par client
- Analyse IA (Google Gemini) et enrichissement des résultats
- Alertes e-mail en cas de problème critique
- Gestion d'état d'analyse par client
- Configuration flexible via variables d'environnement