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 |