Aller au contenu

Aide-mémoire — epitech-tracker

Agent Python installé en service systemd sur les laptops Ubuntu des étudiants EPITECH Côte d'Ivoire. Toutes les 5 minutes il observe l'activité machine (app active, projet git ouvert, présence) et envoie un snapshot JSON signé à l'API Zeno — ce signal pèse 15 % du score d'effort affiché aux parents.

Nom local vs nom réel

Le dossier de travail historique s'appelle Tracker_student_work, mais le projet et le dépôt GitHub s'appellent epitech-tracker (org EpitechAfrik). Utiliser ce nom dans toute communication/documentation.

Accès rapides

Élément Lien
Repo GitHub — EpitechAfrik/epitech-tracker (privé)
API cible (Zeno) https://zeno.epitech.africa — routes /api/sonde/* (projet/dépôt distinct, non documenté ici)
README source (référence complète) Tracker_student_work/tracker/README.md dans l'environnement de dev de Yémalin

En 2 lignes

Un while True (src/main.py) toutes les 5 minutes : détecte le projet EPITECH actif (detector.py), collecte un snapshot machine (observer.py + watcher.py), le signe HMAC (identity.py) et l'envoie à POST /api/sonde/ingest (sender.py) — hors ligne, il part dans une queue locale (queue_manager.py) rejouée dès la reconnexion.

Pages liées

Page Contenu
overview.md Architecture, ce qui est/n'est pas collecté, formule du score d'effort, format du snapshot, packaging .deb, systemd
troubleshooting.md Pannes réelles et modes d'échec attendus, avec fichier source cité
diagnostics.md Commandes systemd/journalctl, où vivent logs/config, inspection du build .deb
runbook.md Panne flotte entière vs poste isolé, procédure de publication d'une version
continuite-acces-externes.md Accès externes détenus par une seule personne — audit de continuité

Chemins clés (sur le laptop étudiant)

/opt/epitech-tracker/*.py                     sources Python installées
/etc/epitech-tracker/identity.json             identité du poste (deviceId + clé HMAC), root:600
/etc/epitech-tracker/tracker.env               EPITECH_TRACKER_API_URL, root:600
/var/lib/epitech-tracker/queue/*.json          queue hors-ligne (7 jours / 50 Mo max)
/var/log/epitech-tracker.log                   logs (StandardOutput du service)
/lib/systemd/system/epitech-tracker.service    unité systemd

Commandes essentielles

# Installer / enrôler un poste (une seule commande, sans secret)
curl -fsSL https://zeno.epitech.africa/sonde/install.sh | sudo bash

# État du service + logs
systemctl status epitech-tracker
journalctl -u epitech-tracker -f

# Identité du poste (root uniquement)
sudo cat /etc/epitech-tracker/identity.json

# Queue hors-ligne
ls -lh /var/lib/epitech-tracker/queue/

# Construire le .deb (depuis tracker/, nécessite dpkg-dev ; macOS via Docker/Colima)
./build.sh

Variables d'environnement (noms uniquement)

Variable Défaut Rôle
EPITECH_TRACKER_API_URL https://zeno.epitech.africa URL de base de l'API
EPITECH_TRACKER_QUEUE_DIR /var/lib/epitech-tracker/queue Répertoire de la queue locale
EPITECH_TRACKER_LOG_FILE /var/log/epitech-tracker.log Fichier de log
EPITECH_TRACKER_LOG_LEVEL INFO Niveau de log
EPITECH_TRACKER_IDENTITY_FILE /etc/epitech-tracker/identity.json Fichier d'identité (surchargeable pour les tests)

Aucun secret partagé entre machines (« secret de parc ») : chaque poste signe ses snapshots avec sa propre clé HMAC, écrite dans identity.json à l'enrôlement. Voir overview.md § Authentification.

Contacts

Rôle Contact
Développeur & Mainteneur YemalinModeste — yemalin1.agbangla@epitech.eu
Repo EpitechAfrik/epitech-tracker