Piste d'audit et suivi d'utilisation¶
AKKO fournit un systeme complet de piste d'audit et de suivi d'utilisation qui offre aux administrateurs une visibilite totale sur l'activite de la plateforme. Essentiel pour la conformite (RGPD, SOC 2, ISO 27001) et l'allocation des couts.
Ce qui est suivi¶
| Source | Donnees collectees | Methode de collecte |
|---|---|---|
| Trino | Utilisateur, requete SQL, tables touchees, lignes scannees, duree, statut | Event listener -> stdout -> log shipper -> logs layer |
| LiteLLM | Utilisateur, modele, tokens consommes, latence, cout estime | Metriques Prometheus + logs JSON -> logs layer |
| JupyterHub | Utilisateur, demarrage/arret serveur, noyau, duree session, memoire | Metriques Prometheus (jupyterhub_*) |
| object storage | Utilisation par bucket, nombre d'objets, stockage par bucket | Metriques Prometheus (minio_bucket_*) |
| Keycloak | Connexion, deconnexion, changement de mot de passe, inscription, sessions actives | Event listeners (jboss-logging, metrics-listener) |
| OPA | Decisions d'autorisation (autoriser/refuser), masquage de colonnes, filtres de lignes | Logs de decisions -> logs layer |
| PostgreSQL | Tailles des bases de donnees par instance | Metriques Prometheus (pg_database_size_bytes) |
Dashboard Dashboards¶
Le dashboard AKKO Audit Trail & Usage (akko-audit-usage) contient 14 panneaux :
- Timeline d'activite -- Journal unifie de toutes les sources (table, filtrable)
- Top utilisateurs par requetes Trino -- Jauge a barres, fenetre 24h
- Top utilisateurs par tokens LLM -- Jauge a barres, fenetre 24h
- Sessions JupyterHub actives -- Panneau statistique
- Total utilisateurs JupyterHub -- Panneau statistique
- Utilisateurs en ligne vs total -- Sessions actives Keycloak vs inscrits
- Stockage par bucket -- Utilisation object storage par bucket (diagramme a barres)
- Utilisation CPU par pods utilisateur -- Pods JupyterHub singleuser (serie temporelle)
- Utilisation memoire par pods utilisateur -- Pods JupyterHub singleuser (serie temporelle)
- Evenements d'authentification Keycloak -- Panneau de logs connexion/deconnexion
- Journal de requetes Trino -- Requetes SQL avec utilisateur et duree
- Decisions d'autorisation OPA -- Logs de decisions de politiques
- Taux de requetes LiteLLM -- Requetes de la passerelle IA par modele (serie temporelle)
- Volume d'evenements d'audit -- Diagramme a barres empilees de tous les types d'evenements
Acces via : Dashboards > dossier AKKO > "AKKO Audit Trail & Usage"
Page Usage du Cockpit¶
Le cockpit inclut une page Usage dediee (barre laterale > Usage, administrateurs uniquement) qui fournit :
- Cartes KPI : Utilisateurs totaux, utilisateurs en ligne, requetes Trino (24h), requetes LLM (24h), notebooks actifs
- Onglet Vue d'ensemble : Dashboard Dashboards d'audit integre en mode kiosque
- Onglet Requetes Trino : Table du journal de requetes recent
- Onglet Utilisation LLM : Consommation de tokens, latence, utilisation des modeles, taux d'erreur
- Onglet Sessions : Sessions JupyterHub actives + evenements d'authentification Keycloak
- Onglet Stockage : Utilisation des buckets object storage + tailles des bases PostgreSQL avec diagramme
- Onglet Ressources : Consommation CPU et memoire par pod utilisateur
Configuration¶
Event Listener Trino¶
Configure dans values.yaml et values-trino.yaml :
trino:
eventListenerProperties:
- event-listener.name=log
- log.query-created=true
- log.query-completed=true
- log.split-completed=false
Ceci enregistre les evenements de requetes sur stdout, que log shipper collecte et envoie a logs layer.
Suivi d'utilisation LiteLLM¶
LiteLLM est configure avec des callbacks Prometheus dans la configuration :
litellm_settings:
success_callback: ["prometheus"]
failure_callback: ["prometheus"]
json_logs: true
store_audit_logs: true
Quand database_url est defini (pointant vers PostgreSQL), LiteLLM persiste
egalement les donnees d'utilisation pour l'analyse historique.
Evenements Keycloak¶
Le realm a les evenements actives avec deux listeners :
jboss-logging-- Ecrit les evenements dans les logs serveur (collectes par log shipper)metrics-listener-- Expose les compteurs d'evenements comme metriques Prometheus
Types d'evenements actives : LOGIN, LOGOUT, REGISTER, TOKEN_EXCHANGE, CLIENT_LOGIN, UPDATE_PASSWORD, UPDATE_PROFILE, RESET_PASSWORD, et plus.
Les evenements d'administration sont egalement actives (adminEventsEnabled: true) pour
le suivi des operations administratives.
Logs de decisions OPA¶
OPA est configure avec la journalisation des decisions activee. Toutes les decisions d'autorisation Trino (autoriser/refuser, masquage de colonnes, filtrage de lignes) sont journalisees et collectees par log shipper.
Retention des donnees¶
- logs layer : Retention par defaut de 7 jours (configurable via
values-loki.yaml) - Prometheus : Retention par defaut de 15 jours (configurable via
values-monitoring.yaml) - LiteLLM PostgreSQL : Persistant, suit le calendrier de sauvegarde de la base de donnees
Pour des exigences de conformite depassant ces valeurs par defaut, augmentez la retention ou configurez le transfert de logs vers un SIEM externe.
Controle d'acces¶
La page Usage et le dashboard Dashboards sont restreints aux utilisateurs ayant le
role akko-admin. Les utilisateurs non-administrateurs ne peuvent pas acceder aux donnees d'audit.