Métriques temps réel : Supervision Prometheus et Grafana
Supervisez Vajra Cast avec Prometheus et Grafana. Métriques intégrées, tableaux de bord, règles d'alerte et analyse qualité VMAF.
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étrique | Type | Description |
|---|---|---|
vajracast_input_bitrate_bps | Gauge | Débit d’entrée actuel en bits par seconde |
vajracast_output_bitrate_bps | Gauge | Débit de sortie actuel en bits par seconde |
vajracast_input_packets_total | Counter | Total des paquets reçus par entrée |
vajracast_output_packets_total | Counter | Total des paquets envoyés par sortie |
vajracast_input_connected | Gauge | 1 si l’entrée est connectée, 0 sinon |
vajracast_output_connected | Gauge | 1 si la sortie est connectée, 0 sinon |
vajracast_failover_switches_total | Counter | Total des basculements failover par route |
vajracast_active_input_priority | Gauge | Numé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étrique | Type | Description |
|---|---|---|
vajracast_srt_rtt_ms | Gauge | Temps aller-retour en millisecondes |
vajracast_srt_packet_loss_percent | Gauge | Pourcentage de perte de paquets actuel |
vajracast_srt_retransmit_rate | Gauge | Taux de retransmission |
vajracast_srt_recv_buffer_ms | Gauge | Niveau du tampon de réception en millisecondes |
vajracast_srt_send_buffer_ms | Gauge | Niveau du tampon d’envoi en millisecondes |
vajracast_srt_bandwidth_mbps | Gauge | Bande passante disponible estimée |
Métriques système
Mesures au niveau infrastructure :
| Métrique | Type | Description |
|---|---|---|
vajracast_cpu_usage_percent | Gauge | Usage CPU de l’application |
vajracast_memory_usage_bytes | Gauge | Usage mémoire de l’application |
vajracast_gpu_encoder_usage_percent | Gauge | Utilisation de l’encodeur matériel |
vajracast_routes_active | Gauge | Nombre de routes actives |
vajracast_uptime_seconds | Gauge | Temps 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
- Retournez au Guide logiciel de streaming broadcast pour la vue d’ensemble complète
- Découvrez le transcodage matériel pour optimiser les flux que vous supervisez
- Explorez l’API REST pour l’accès programmatique aux métriques et au statut