Pourquoi la supervision est essentielle en streaming live

Un flux live fonctionne ou ne fonctionne pas. Il n’y a pas de « déployer et oublier ». Les conditions réseau changent, les encodeurs dysfonctionnent, les points d’ingest CDN tombent, et le matériel se dégrade avec le temps. Sans supervision en temps réel, vous découvrez les problèmes quand vos spectateurs se plaignent — ou pire, quand ils partent.

Vajra Cast intègre un système de métriques qui expose chaque mesure pertinente de votre infrastructure de streaming. Ces métriques s’intègrent avec la stack standard Prometheus et Grafana, vous offrant tableaux de bord, alertes et analyse historique clés en main.

Métriques intégrées

Vajra Cast expose les métriques au endpoint /metrics au format d’exposition Prometheus :

http://votre-serveur:8080/metrics

Aucune authentification n’est requise par défaut pour le endpoint de métriques (configurable). Prometheus scrape ce endpoint à intervalle régulier (typiquement 15 secondes) et stocke les données de séries temporelles.

Métriques de flux

Métriques par route, par entrée et par sortie :

MétriqueTypeDescription
vajracast_input_bitrate_bpsGaugeDébit d’entrée actuel en bits par seconde
vajracast_output_bitrate_bpsGaugeDébit de sortie actuel en bits par seconde
vajracast_input_packets_totalCounterTotal des paquets reçus par entrée
vajracast_output_packets_totalCounterTotal des paquets envoyés par sortie
vajracast_input_connectedGauge1 si l’entrée est connectée, 0 sinon
vajracast_output_connectedGauge1 si la sortie est connectée, 0 sinon
vajracast_failover_switches_totalCounterTotal des basculements failover par route
vajracast_active_input_priorityGaugeNuméro de priorité de l’entrée actuellement active

Métriques spécifiques SRT

Pour les entrées et sorties SRT, des métriques supplémentaires au niveau protocolaire :

MétriqueTypeDescription
vajracast_srt_rtt_msGaugeTemps aller-retour en millisecondes
vajracast_srt_packet_loss_percentGaugePourcentage de perte de paquets actuel
vajracast_srt_retransmit_rateGaugeTaux de retransmission
vajracast_srt_recv_buffer_msGaugeNiveau du tampon de réception en millisecondes
vajracast_srt_send_buffer_msGaugeNiveau du tampon d’envoi en millisecondes
vajracast_srt_bandwidth_mbpsGaugeBande passante disponible estimée

Métriques système

Mesures au niveau infrastructure :

MétriqueTypeDescription
vajracast_cpu_usage_percentGaugeUsage CPU de l’application
vajracast_memory_usage_bytesGaugeUsage mémoire de l’application
vajracast_gpu_encoder_usage_percentGaugeUtilisation de l’encodeur matériel
vajracast_routes_activeGaugeNombre de routes actives
vajracast_uptime_secondsGaugeTemps de fonctionnement de l’application

Toutes les métriques incluent des labels pour le nom de la route, l’ID d’entrée/sortie et le protocole, vous permettant de filtrer et d’agréger sur l’ensemble de votre déploiement.

Configuration Prometheus

Ajoutez Vajra Cast à votre configuration de scraping Prometheus :

# prometheus.yml
scrape_configs:
  - job_name: 'vajracast'
    scrape_interval: 10s
    static_configs:
      - targets: ['vajracast-host:8080']
        labels:
          environment: 'production'
          location: 'studio-a'

Pour plusieurs instances Vajra Cast, ajoutez chacune comme cible :

    static_configs:
      - targets:
          - 'vajracast-studio-a:8080'
          - 'vajracast-studio-b:8080'
          - 'vajracast-remote:8080'

Si vous exécutez Vajra Cast dans Docker ou Kubernetes, utilisez la découverte de services plutôt que des cibles statiques. Prometheus supporte nativement la découverte de services Docker et Kubernetes.

Tableaux de bord Grafana

Grafana transforme les métriques brutes Prometheus en tableaux de bord visuels. Un tableau de bord de streaming bien conçu vous montre la santé de toute votre infrastructure en un coup d’œil.

Panneaux de tableau de bord recommandés

Ligne de vue d’ensemble :

  • Total des routes actives (statistique unique)
  • Total des entrées connectées / total des entrées (ratio)
  • Total des sorties connectées / total des sorties (ratio)
  • Usage CPU et mémoire système (jauges)

Ligne par route (répétée pour chaque route) :

  • Débit d’entrée dans le temps (graphique)
  • Débit de sortie dans le temps (graphique)
  • Indicateur d’entrée active (montrant quel niveau de priorité est actif)
  • Marqueurs d’événements de failover (annotations sur le graphique)

Ligne santé SRT :

  • RTT dans le temps par connexion SRT (graphique)
  • Pourcentage de perte de paquets par connexion SRT (graphique)
  • Niveau du tampon de réception (graphique — devrait rester sous 80 % de la latence configurée)
  • Taux de retransmission (graphique)

Ligne transcodage (si le transcodage matériel est utilisé) :

  • Utilisation de l’encodeur GPU (graphique)
  • FPS d’encodage vs FPS cible (devrait toujours être égal ou supérieur à la cible)
  • Métriques de qualité de sortie (si VMAF est activé)

Exemples de requêtes PromQL

Débit d’entrée moyen sur toutes les routes :

avg(vajracast_input_bitrate_bps) / 1e6

Perte de paquets maximale sur toutes les connexions SRT :

max(vajracast_srt_packet_loss_percent)

Événements de failover dans la dernière heure :

increase(vajracast_failover_switches_total[1h])

Routes où l’entrée active n’est pas la priorité 1 (failover actif) :

vajracast_active_input_priority > 1

Alertes

Prometheus Alertmanager et Grafana supportent tous deux les règles d’alerte. Pour le streaming live, configurez des alertes pour les conditions nécessitant une intervention immédiate.

Alertes critiques (appeler quelqu’un)

# prometheus-rules.yml
groups:
  - name: vajracast-critical
    rules:
      - alert: StreamDisconnected
        expr: vajracast_input_connected == 0 and vajracast_output_connected == 1
        for: 30s
        labels:
          severity: critical
        annotations:
          summary: "Entrée déconnectée sur la route {{ $labels.route }}"

      - alert: AllInputsDown
        expr: sum by (route) (vajracast_input_connected) == 0
        for: 10s
        labels:
          severity: critical
        annotations:
          summary: "Toutes les entrées sont tombées sur la route {{ $labels.route }}"

Alertes d’avertissement (notifier l’équipe)

      - alert: FailoverActive
        expr: vajracast_active_input_priority > 1
        for: 1m
        labels:
          severity: warning
        annotations:
          summary: "Failover actif sur la route {{ $labels.route }}, utilisant la priorité {{ $value }}"

      - alert: HighPacketLoss
        expr: vajracast_srt_packet_loss_percent > 5
        for: 2m
        labels:
          severity: warning
        annotations:
          summary: "Perte de paquets SRT supérieure à 5 % sur {{ $labels.route }}"

      - alert: LowBitrate
        expr: vajracast_input_bitrate_bps < 500000
        for: 1m
        labels:
          severity: warning
        annotations:
          summary: "Débit d'entrée inférieur à 500 kbps sur la route {{ $labels.route }}"

Routez ces alertes vers Slack, PagerDuty, email ou tout autre canal de notification via Alertmanager.

Analyse qualité VMAF

Pour les flux transcodés, le débit seul ne vous dit pas si la sortie est visuellement satisfaisante. VMAF (Video Multimethod Assessment Fusion) est la métrique de qualité vidéo open-source de Netflix qui corrèle étroitement avec la perception humaine.

Vajra Cast peut calculer des scores VMAF en temps réel en comparant la sortie transcodée avec l’entrée originale :

  • Plage de score VMAF : 0-100 (plus élevé = meilleur)
  • 93+ : Excellent — visuellement indistinguable de la source
  • 80-93 : Bon — différences mineures visibles uniquement en comparaison côte à côte
  • 70-80 : Correct — artefacts perceptibles en examinant attentivement
  • Inférieur à 70 : Médiocre — perte de qualité visible

Les scores VMAF sont exposés comme métriques Prometheus :

vajracast_vmaf_score{route="main-production", profile="1080p"} 94.2
vajracast_vmaf_score{route="main-production", profile="720p"} 89.7

Configurez des alertes quand le VMAF descend sous votre seuil de qualité pour détecter les problèmes de transcodage avant qu’ils n’affectent l’expérience des spectateurs.

Note : Le calcul VMAF en temps réel nécessite des ressources CPU supplémentaires. Activez-le sélectivement sur les routes où la vérification de qualité est critique.

Prochaines étapes