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
vuisio_audio_packets_without_level_totalpaquets audio reçus sans l’extension de niveau audio. La détection de parole ne lit que celle-ci : leur émetteur n’est jamais entendu parler, et son temps de parole reste à zéro
vuisio_talk_turns_started_totaltours de parole ouverts
vuisio_talk_turns_ended_totaltours de parole fermés. Un temps de parole n’est crédité qu’à la fermeture d’un tour : des ouvertures qui prennent durablement de l’avance sur les fermetures veulent dire que les bilans mesurent une présence et l’appellent parole
vuisio_video_layer_gaps_totalcouches vidéo reçues qui ont perdu pour de bon une image dont les suivantes dépendent. Le SFU les retient jusqu’à la prochaine image clé, qu’il demande à l’émetteur : les participants gardent la dernière image nette au lieu d’afficher une mosaïque. Une hausse régulière désigne un émetteur dont la connexion décroche
vuisio_video_temporal_gaps_totalcouches vidéo reçues qui ont pu perdre une image secondaire. Seules les images qui n’en dépendent pas passent jusqu’à la prochaine image de synchronisation, soit une fluidité réduite pendant environ un quart de seconde
vuisio_video_frames_held_after_gap_totalimages vidéo retenues pour l’une de ces deux raisons, pour tous les participants à la fois
vuisio_video_relay_gaps_totalparticipants mis en attente d’une image clé parce que des images de la vidéo qu’ils regardaient n’ont pas pu passer d’un thread du SFU à un autre, un thread saturé. Chaque hausse accompagne une hausse de vuisio_cross_thread_media_dropped_total et signale un serveur à la limite de sa capacité

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.