Serveurs de Jeux & Python

Description du projet

Contexte et objectifs

En tant que passionné de jeux vidéo et d'informatique, j'ai développé et maintenu une infrastructure de serveurs pour différents jeux. Face aux défis de gestion manuelle, j'ai décidé de créer des scripts Python pour automatiser les tâches répétitives et améliorer la qualité de service.

Les principaux objectifs étaient :

  • Automatiser le déploiement et la maintenance des serveurs
  • Surveiller les performances et la disponibilité en temps réel
  • Mettre en place des sauvegardes automatiques
  • Développer une API pour la gestion à distance
  • Créer des outils d'analyse des journaux système

Technologies utilisées

Langages et frameworks

  • Python 3.9
  • Flask pour l'API REST
  • Bash pour les scripts système
  • SQLite pour le stockage local

Outils et environnement

  • Linux (Ubuntu Server)
  • Docker pour la conteneurisation
  • Prometheus et Grafana pour le monitoring
  • Git pour le versioning

Principales fonctionnalités

1. Système d'automatisation

Ensemble de scripts Python permettant de démarrer, arrêter, mettre à jour et sauvegarder les serveurs selon un calendrier prédéfini ou en réponse à des événements spécifiques.

exemple.py
# Exemple simplifié de script d'automatisation
import subprocess
import logging
import schedule
import time

def backup_server(server_id):
    logging.info(f"Starting backup for server {server_id}")
    try:
        subprocess.run(["./backup.sh", server_id], check=True)
        logging.info(f"Backup completed for server {server_id}")
    except Exception as e:
        logging.error(f"Backup failed: {e}")

# Planification des sauvegardes
schedule.every().day.at("03:00").do(backup_server, "minecraft-1")
schedule.every().day.at("04:00").do(backup_server, "factorio-1")

while True:
    schedule.run_pending()
    time.sleep(60)

2. API de gestion

API REST développée avec Flask permettant de contrôler les serveurs à distance, de consulter les statistiques et de gérer les utilisateurs.

3. Système de monitoring

Implémentation de Prometheus pour collecter les métriques système et Grafana pour les visualiser. Des alertes sont configurées pour notifier en cas de problèmes.

4. Analyse de journaux

Scripts Python permettant d'analyser les fichiers logs des serveurs pour détecter les erreurs, suivre l'activité des joueurs et générer des rapports périodiques.

Compétences développées

Programmation Python

Maîtrise de Python pour des scripts d'automatisation et le développement d'API.

Administration Linux

Configuration et maintenance de serveurs Linux, gestion des services système.

Monitoring système

Mise en place de solutions de surveillance avec Prometheus et Grafana.

Réseau

Configuration réseau, gestion de ports, sécurisation des accès.

Résultats et conclusion

Ce projet personnel m'a permis de développer des compétences pratiques en administration système Linux et en programmation Python, tout en résolvant des problèmes concrets de gestion de serveurs.

Les principaux résultats obtenus sont :

  • Réduction de 75% du temps consacré aux tâches de maintenance grâce à l'automatisation
  • Amélioration de la disponibilité des serveurs (uptime de 99.5%)
  • Système de sauvegarde fiable avec vérification d'intégrité
  • Interface de gestion centralisée accessible à distance

Les difficultés rencontrées, notamment les problèmes de performance et les conflits entre services, m'ont permis d'améliorer mes compétences en dépannage et optimisation système. Ce projet continue d'évoluer avec l'intégration de nouvelles fonctionnalités et l'adoption de meilleures pratiques.