Aller au contenu principal

Logs

Vue d'ensemble​

L'interface de logs permet de consulter l'activité du système et de diagnostiquer les problèmes.

Accès : /admin/logs (nécessite le rôle administrateur)


Types de logs​

Logs d'activité utilisateur​

ÉvénementDescription
user.loginConnexion réussie
user.login_failedÉchec de connexion
user.logoutDéconnexion
user.signupCréation de compte
user.password_changeChangement de mot de passe
user.consent_grantedConsentement Enedis accordé
user.consent_revokedConsentement Enedis révoqué

Logs d'accès API​

ÉvénementDescription
api.consumption.readLecture de consommation
api.production.readLecture de production
api.contract.readLecture de contrat
api.load_curve.readLecture courbe de charge

Logs système​

ÉvénementDescription
system.token_refreshRefresh token Enedis
system.token_expiredToken expiré
system.cache_missDonnée non en cache
system.cache_hitDonnée trouvée en cache
system.rate_limitLimite atteinte
system.scraper_runExécution scraper offres

Logs d'erreur​

ÉvénementDescription
error.enedis_apiErreur API Enedis
error.rte_apiErreur API RTE
error.databaseErreur base de données
error.cacheErreur cache Valkey

Interface de consultation​

Filtres disponibles​

FiltreOptions
PériodeDernière heure / Aujourd'hui / 7 jours / 30 jours / Personnalisé
NiveauDebug / Info / Warning / Error / Critical
TypeUser / API / System / Error
UtilisateurSélection par email
ActionRecherche textuelle

Colonnes affichées​

ColonneDescription
DateHorodatage précis
NiveauNiveau de log (icône colorée)
ActionType d'événement
UtilisateurEmail (si applicable)
IPAdresse IP source
DétailsInformations supplémentaires

Export des logs​

Export CSV​

Admin → Logs → Exporter → CSV

Colonnes exportées :

  • timestamp
  • level
  • action
  • user_email
  • ip_address
  • details (JSON)

Export JSON​

Admin → Logs → Exporter → JSON

Format complet avec tous les champs.


Rétention des logs​

TypeRétention
Logs d'activité90 jours
Logs d'erreur365 jours
Logs de debug7 jours

Configuration de la rétention​

# Variables d'environnement
LOG_RETENTION_ACTIVITY_DAYS=90
LOG_RETENTION_ERROR_DAYS=365
LOG_RETENTION_DEBUG_DAYS=7

Purge manuelle​

Admin → Logs → Actions → Purger les anciens logs

⚠️ Cette action est irréversible.


Alertes​

Alertes configurables​

AlerteSeuil par défaut
Erreurs API Enedis> 10/heure
Erreurs API RTE> 5/heure
Échecs de connexion> 20/heure (même IP)
Tokens expirésImmédiat
Quotas dépassésImmédiat

Canaux de notification​

  • Email : Notification à ADMIN_EMAILS
  • Webhook : POST vers URL configurée

Configuration des alertes​

# Variables d'environnement
ALERT_EMAIL_ENABLED=true
ALERT_WEBHOOK_URL=https://example.com/webhook
ALERT_ENEDIS_ERROR_THRESHOLD=10
ALERT_LOGIN_FAILURE_THRESHOLD=20

Métriques​

Dashboard système​

Admin → Dashboard

Métriques affichées :

  • Utilisateurs actifs (24h)
  • Requêtes API (24h)
  • Taux de cache hit
  • Erreurs (24h)
  • Tokens à expirer (7j)

Graphiques​

  • Requêtes par heure : Histogramme des appels API
  • Cache hit ratio : Évolution du taux de cache
  • Erreurs par type : Répartition des erreurs
  • Connexions : Connexions réussies/échouées

API Endpoints​

Lister les logs​

GET /api/admin/logs
GET /api/admin/logs?level=error
GET /api/admin/logs?user_id=xxx
GET /api/admin/logs?action=user.login
GET /api/admin/logs?start=2024-01-01&end=2024-01-31

Métriques​

GET /api/admin/metrics
GET /api/admin/metrics/requests?period=24h
GET /api/admin/metrics/cache?period=7d

Santé système​

GET /api/health
GET /api/health/detailed # Admin uniquement

Intégration externe​

Prometheus​

Endpoint métriques compatible Prometheus :

GET /metrics

Métriques exposées :

  • myelectricaldata_requests_total
  • myelectricaldata_cache_hits_total
  • myelectricaldata_cache_misses_total
  • myelectricaldata_errors_total
  • myelectricaldata_active_users

Grafana​

Dashboard pré-configuré disponible :

docs/monitoring/grafana-dashboard.json

Import via Grafana → Dashboards → Import.

Loki​

Pour l'agrégation de logs avec Loki, configurer le driver Docker :

# docker-compose.override.yml
services:
backend:
logging:
driver: loki
options:
loki-url: "http://loki:3100/loki/api/v1/push"
labels: "app=myelectricaldata,service=backend"