Aller au contenu

Supervision

Vuisio expose ses métriques au format Prometheus et fournit un tableau de bord Grafana prêt à l’emploi.

Le SFU expose un endpoint /metrics au format Prometheus. Il est désactivé par défaut : il n’apparaît que si le jeton VUISIO_METRICS_TOKEN est configuré. Les requêtes doivent porter l’en-tête Authorization: Bearer <jeton> (comparaison à temps constant). Sans jeton configuré, l’endpoint répond 404 ; avec un mauvais jeton, 403.

Compteurs (cumuls depuis le démarrage) :

MétriqueMesure
vuisio_packets_received_totalpaquets UDP reçus
vuisio_packets_sent_totalpaquets UDP envoyés aux clients
vuisio_packets_dropped_totalpaquets abandonnés (aucun destinataire)
vuisio_media_forwarded_totalpaquets média retransmis
vuisio_audio_forwarded_totalpaquets audio retransmis
vuisio_rooms_created_totalsalles créées
vuisio_participants_joined_totalparticipants ayant rejoint
vuisio_datachannel_send_failures_totaléchecs d’envoi sur datachannel

Jauges (valeurs instantanées) :

MétriqueMesure
vuisio_rooms_activesalles actives
vuisio_participants_activeparticipants actifs
vuisio_moderators_activemodérateurs actifs
vuisio_cameras_activecaméras activées
vuisio_mics_activemicros activés
vuisio_screen_shares_activepartages d’écran actifs
vuisio_speakers_activesalles avec un orateur actif
vuisio_sfu_threadsnombre de threads SFU
vuisio_max_participants_per_roomplafond de participants par salle
vuisio_process_cpu_seconds_totaltemps CPU du processus
vuisio_process_resident_memory_bytesmémoire résidente
vuisio_process_open_fdsdescripteurs de fichiers ouverts
vuisio_sfu_thread_cpu_seconds_totaltemps CPU par thread SFU (label thread)
vuisio_cross_thread_queue_depthprofondeur de la file inter-threads (label thread)

L’installeur peut déployer une pile de supervision complète (Prometheus + Grafana), désactivée par défaut. Vous l’activez pendant l’installation (ou plus tard avec vuisio reconfigure).

  • Prometheus scrute le SFU (/metrics) toutes les 15 secondes en passant le jeton en bearer, et collecte aussi les métriques de l’hôte (node exporter, process exporter).
  • Grafana charge automatiquement un tableau de bord « Vuisio overview ».
  • Grafana est servi derrière nginx sur le chemin /grafana/, restreint aux plages d’adresses (CIDR) que vous autorisez.

Si vous avez déjà votre propre Prometheus, il suffit de scruter l’endpoint /metrics avec le jeton.

Une fois la pile activée, ouvrez https://<votre-domaine>/grafana/ depuis une adresse autorisée, puis sélectionnez le tableau de bord « Vuisio overview ». Il se remplit dès que des réunions ont lieu.

Le tableau de bord regroupe trois familles d’informations. Chaque panneau porte une icône d’aide : survolez son titre pour afficher un rappel de ce qu’il montre.

  • Vue d’ensemble des salles : évolution du nombre de salles, de participants, de caméras, de micros, de personnes qui parlent et de partages d’écran.
  • Salles actives et Participants actifs : les valeurs du moment.
  • Max salles et Max participants simultanés : les pics atteints sur la période affichée, utiles pour dimensionner le serveur.
  • Partages d’écran : nombre de partages en cours.
  • Charge processeur (CPU) : part de processeur consommée par chaque brique (le serveur Vuisio, Redis, l’interface web, etc.). 100 % correspond à un cœur entier ; le total peut dépasser 100 % puisqu’un serveur a plusieurs cœurs. Les lignes « SFU » détaillent la charge des fils d’exécution internes du serveur.
  • Mémoire vive (RAM) : mémoire consommée par chaque brique. Une courbe qui monte sans jamais redescendre signale une fuite de mémoire à surveiller.
  • Espace disque libre : stockage restant par disque. Un disque plein bloque le serveur.
  • Bande passante réseau : débit entrant (flux reçus des participants qui publient) et sortant (flux redistribués à toute la salle). Le sortant est normalement bien supérieur, puisque chaque flux publié est renvoyé à tout le monde.
  • Saturation interne du serveur : messages en attente entre les rouages internes. Proche de zéro au repos. S’ils s’accumulent durablement, le serveur n’absorbe plus la charge : c’est le premier signe, avant la latence ressentie par les participants.
  • Paquets réseau perdus : morceaux d’audio ou de vidéo qui n’ont pas pu être transmis. Quelques pertes ponctuelles sont normales ; une valeur élevée et durable annonce des coupures de son ou d’image.
  • Échecs d’envoi de messages : messages de service (chat, réactions, présence) non délivrés. Doit rester à zéro.
  • Trafic réseau temps réel : paquets audio et vidéo reçus, envoyés et perdus par seconde. Le volume suit directement le nombre de caméras et de micros actifs.