Hoe je Jitsi Videobridge-statistieken kunt monitoren met Prometheus en Grafana

Wanneer een Jitsi-vergadering hapert, kan een beheerder klachten zien over haperende audio of bevroren video, maar heeft hij of zij geen snelle manier om te achterhalen of de bridge overbelast, onbereikbaar of simpelweg meer verkeer dan normaal verwerkt. Jitsi Videobridge (JVB) biedt operationele statistieken die Prometheus kan verzamelen en Grafana kan weergeven. Deze handleiding beschrijft een praktische configuratie, beginnend met een lokale endpointcontrole en eindigend met een dashboard dat u kunt controleren.

Voorbeeldscenario: Stel je een kleine organisatie voor die één JVB op een Linux-host draait, en Prometheus en Grafana op diezelfde host. Dit is een illustratief voorbeeld, geen verslag van een daadwerkelijke implementatie of test. Als je services in aparte containers of op verschillende servers draaien, vervang dan de IP-adressen door de bereikbare interne IP-adressen en behoud dezelfde netwerkbeperkingen.

Wat u gaat controleren

De huidige JVB-projectdocumentatie beschrijft een ingebouwd Prometheus/OpenMetrics-eindpunt op /metricsde privé-HTTP-interface van de bridge. Het toont statistieken zoals actieve conferenties, eindpunten, inkomende en uitgaande bitrate, pakketsnelheden en bridgebelasting. De Prometheus-weergave bevat niet noodzakelijkerwijs alle statistieken die beschikbaar zijn via de andere rapportageformaten van JVB, dus beschouw het eindpunt dat door uw geïnstalleerde release wordt aangeboden als de bron van waarheid. De referentieconfiguratie schakelt momenteel de Prometheus REST-resource in en koppelt de privé-HTTP-interface aan loopback; de gedocumenteerde standaard privé-HTTP-poort is 8080. Oudere pakketten en implementatiesjablonen kunnen afwijken.

Prometheus verzamelt en slaat de tijdreeksen op. Grafana maakt verbinding met Prometheus als gegevensbron en voert query's uit op deze opgeslagen reeksen. Een aparte Jitsi-exporteur is niet nodig voor dit directe pad naar JVB-metrieken. Zie de documentatie van Jitsi over statistieken en Prometheus-eindpunten , de configuratie van de privé-HTTP-interface en de referentieconfiguratie . Deze upstream-bestanden kunnen wijzigen; controleer de configuratie en de geïnstalleerde versie op uw eigen bridge voordat u voorbeeldwaarden toepast.

Stap 1: Controleer of JVB meetgegevens levert.

Identificeer eerst de actieve configuratie op de JVB-machine. Een veelvoorkomend Debian- of Ubuntu-pakket gebruikt /etc/jitsi/videobridge/jvb.conf, maar Jitsi merkt op dat het daadwerkelijke bestand het pad is dat aan het bridge-proces wordt doorgegeven. Containerimplementaties kunnen in plaats daarvan een gegenereerde configuratie gebruiken. Ga er niet vanuit dat een voorbeeldbestand hetzelfde is als het bestand dat de draaiende service leest.

In de configuratie-editor is te zien dat de privé HTTP-host van Jitsi Videobridge is ingesteld op 127.0.0.1.
Voorbeeld: de privé JVB HTTP-interface is gekoppeld aan loopback, waardoor alleen lokale processen er toegang toe hebben.

Voer met de standaardpoort en loopback-binding van het voorbeeld de volgende opdracht uit op de JVB-host:

curl -fsS http://127.0.0.1:8080/metrics | head
In een terminal wordt een curl-opdracht weergegeven die het lokale Jitsi Videobridge-metrics-eindpunt opvraagt.
Controleer het lokale /metricseindpunt voordat u Prometheus configureert.

Een succesvolle reactie is platte tekst met Prometheus-metriekfamilies, vaak met # HELPregels # TYPEgevolgd door voorbeelden. De afbeelding toont alleen de opdracht; het is geen bewijs van een live serverreactie. Een verbindingsweigering betekent meestal dat JVB is gestopt, luistert op een ander adres of poort, of dat de geïnstalleerde configuratie die HTTP-listener uitschakelt. Een HTTP 404 suggereert dat de server heeft geantwoord, maar dat de route niet beschikbaar is in die build of API-configuratie. Controleer de JVB-logboeken en de configuratie van uw geïnstalleerde release in plaats van de niet-gerelateerde Colibri-besturings-API in te schakelen om het Prometheus-pad werkend te krijgen.

U kunt de namen en typen van de meetwaarden direct inspecteren met:

curl -fsS http://127.0.0.1:8080/metrics | grep -E '^(# HELP|# TYPE)' | head -n 40

JVB documenteert dat de beschikbare Prometheus-metrics geen volledige weerspiegeling zijn van de JSON-statistieken. Het documenteert ook dat histogrammen van conferentiegroottes alleen beschikbaar zijn in het Prometheus-formaat. Controleer wat uw geïnstalleerde versie daadwerkelijk retourneert voordat u PromQL-query's schrijft of een dashboard importeert dat specifieke namen veronderstelt.

Stap 2: Houd de privé-interface privé

Als Prometheus op dezelfde host draait als JVB, laat dan de privé-interface ingeschakeld 127.0.0.1. Dit voorkomt dat er een extra listener naar uw netwerk wordt geopend. In de hypothetische configuratie op dezelfde host 127.0.0.1:8080kan het doel rechtstreeks door Prometheus worden bereikt.

Als Prometheus elders draait, accepteert de standaard loopback-binding van JVB geen verbindingen daarvandaan. U kunt de privé-listener configureren om te binden aan een interne interface die bereikbaar is voor Prometheus, en vervolgens de firewall of het containernetwerk beperken zodat alleen de Prometheus-host verbinding kan maken met de privépoort. Stel poort 8080 of 8443 niet open voor het openbare internet: Jitsi beschrijft deze interface expliciet als privé en geeft aan dat de eindpunten niet bedoeld zijn voor openbare toegang. Als de omgeving versleuteling tijdens de overdracht vereist, ondersteunt de privé-interface TLS wanneer geconfigureerd met een keystore; gebruik anders een strikt gecontroleerde interne TLS-proxy. Vermijd het kopiëren van een brede openbare binding zonder 0.0.0.0bijbehorende toegangsbeperking.

Nadat u een listener-instelling hebt gewijzigd, gebruikt u het door uw implementatie ondersteunde configuratiemechanisme en herstart of herlaadt u JVB alleen indien nodig voor die release. Een herstart kan gesprekken op een implementatie met één bridge onderbreken, dus plan deze op het juiste moment in. Bewerk in Docker de permanente hostconfiguratie of de omgeving die is gebruikt om deze te genereren, niet een tijdelijk containerbestand. Controleer de listener vanaf de Prometheus-machine curlvoordat u verdergaat.

Stap 3: Een Prometheus-scrapejob toevoegen

Voeg een scrape-taak toe aan het Prometheus-configuratiebestand. Voor het voorbeeld met dezelfde host is het relevante gedeelte:

scrape_configs:
  - job_name: jitsi-videobridge
    metrics_path: /metrics
    static_configs:
      - targets:
          - 127.0.0.1:8080
Een code-editor toont een Prometheus-scrapejob voor Jitsi Videobridge op 127.0.0.1 poort 8080.
Het scrape-doel moet bereikbaar zijn vanuit het Prometheus-proces; vervang loopback door het privéadres wanneer de services zich op verschillende hosts bevinden.

De Prometheus-configuratie maakt gebruik van scrape_configsen ondersteunt statische targets voor een kleine, vaste implementatie. Als de JVB zich in een andere container bevindt, 127.0.0.1verwijst deze naar de Prometheus-container zelf; gebruik in dat geval de servicenaam en poort van de JVB op een gedeeld privé Docker-netwerk. Voor een externe host gebruikt u de privé-DNS-naam of het adres en houdt u de firewallregel beperkt. De Prometheus-configuratiehandleiding legt scrape-taken, targets en intervalinstellingen uit.

Voordat u een wijziging doorvoert, valideert u het volledige bestand met het Prometheus-hulpprogramma dat bij uw installatie is meegeleverd:

promtool check config /etc/prometheus/prometheus.yml

Als de validatie slaagt, herlaad Prometheus dan met de methode die voor uw service is geconfigureerd, of herstart het als herladen niet is ingeschakeld. Ga er niet van uit dat de validatie is geslaagd op basis van een geldig YAML-bestand alleen; een syntactisch correct doel kan nog steeds onbereikbaar zijn.

Stap 4: Grafana verbinden met Prometheus

Voeg in Grafana de ingebouwde Prometheus-gegevensbron toe en voer de URL in die Grafana zelf kan bereiken. Op één host kan dit de URL zijn http://localhost:9090als Grafana direct op die host draait. Als Grafana in een container draait, localhostbedoel je de Grafana-container, niet de host of de Prometheus-container; gebruik in dat geval de Prometheus-servicenaam op een gedeeld netwerk. Sla de gegevensbron op en test deze. De handleiding voor Prometheus-gegevensbronnen van Grafana beschrijft de verbindingsinstellingen en de documentatie over gegevensbronnen legt uit hoe Grafana een metrics-backend opvraagt.

Open Explore, selecteer Prometheus en voer de query uit up{job="jitsi-videobridge"}. Dit is een controle van de scrape-status van Prometheus, geen Jitsi-metriek. Een waarde van 1 betekent dat Prometheus de target voor de huidige evaluatie succesvol heeft gescrapet; 0 betekent dat een geconfigureerde target niet werkt. Als de query helemaal geen series retourneert, controleer dan de exacte taaknaam, de herlaadconfiguratie, de target discovery en het geselecteerde tijdsbereik.

Grafana Explore toont de Prometheus-query met het joblabel jitsi-videobridge en een leeg resultatenpaneel.
Gebruik de algemene Prometheus- upserie om de status van de scrape te controleren voordat u JVB-specifieke statistieken opvraagt.

Stap 5: Bouw een nuttig dashboard en controleer de gegevens.

Zodra upalles in orde is, kunt u de metrische browser van Grafana Explore of de expressiebrowser van Prometheus gebruiken om de JVB-reeks te vinden die door uw release beschikbaar wordt gesteld. Begin met een kleine set operationele vragen:

  • Hoeveel conferenties en eindpunten zijn actief, en hoe veranderen die aantallen gedurende de dag?
  • Veranderen de inkomende en uitgaande RTP-bitsnelheid of pakketsnelheid naarmate de vergaderbelasting toeneemt?
  • Neemt de spanning in de brug toe naarmate het aantal eindpunten toeneemt, of is deze al hoog bij een bescheiden belasting?
  • Zijn er statistieken beschikbaar over JVM-threads en garbage collection, en veranderen deze rondom rapporten over trage aanroepen?

Gebruik de metrische namen en eenheden die door uw eigen /metricsendpoint worden weergegeven. De statistiekenreferentie van Jitsi beschrijft voorbeelden zoals conferences, endpoints, bit_rate_download, bit_rate_upload, en stress_levelin de lijst met ondersteunde statistieken, maar waarschuwt dat niet alle statistieken momenteel in Prometheus-formaat beschikbaar zijn. Plak deze namen niet in een query totdat u hebt bevestigd dat de Prometheus-familie in uw build aanwezig is. Gebruik voor cumulatieve tellers PromQL-functies zoals rate()over een bereik; voor momentane meters zoals het huidige aantal conferenties, kunt u de bemonsterde waarde direct in een grafiek weergeven. Behoud de gedocumenteerde eenheden bij het labelen van panelen, aangezien bitratevelden en pakketsnelheden verschillende eenheden gebruiken.

Maak een dashboard met een paar tijdreekspanelen, duidelijke eenheden en een tijdsbereik dat recente scrapes omvat. Vermijd het behandelen van een ontbrekende reeks als nul: geen gegevens kunnen duiden op een spelfout, een niet-ondersteunde metriek of een mislukte scrape. Begin voor waarschuwingen met de beoogde beschikbaarheid en voeg pas drempelwaarden toe nadat u normaal verkeer voor uw eigen implementatie hebt waargenomen. Een universeel getal voor "hoge belasting" kan misleidend zijn, omdat de capaciteit afhangt van de host, de mediamix en de configuratie.

Controleer de voltooide installatie.

Voer deze reeks uit, van eenvoudigst naar meest specifiek:

  1. Vraag op de JVB-host een http://127.0.0.1:8080/metricsantwoord aan en bevestig dat het de metrische gegevens bevat.
  2. Vraag vanaf de Prometheus-host of -container hetzelfde eindpunt aan met het geconfigureerde privéadres. Een lokale succesvolle verbinding bewijst niet dat het eindpunt op afstand bereikbaar is.
  3. Controleer in het Targets-overzicht van Prometheus of het jitsi-videobridgedoel actief is en inspecteer de laatste scrape-fout als het niet actief is.
  4. Controleer in Grafana Explore of up{job="jitsi-videobridge"}de waarde 1 retourneert en vraag vervolgens een JVB-metrieknaam op die is gekopieerd van het live-eindpunt.
  5. Open een dashboard met een tijdsbereik dat meerdere scrape-intervallen omvat en controleer of de eenheden, labels en tijdstempels kloppen.

Als het eindpunt lokaal werkt, maar Prometheus een verbindingsfout meldt, controleer dan het bindadres, de poort, de firewall en de netwerkinstellingen van de container. Als het doel actief is, maar de JVB-query's leeg zijn, controleer dan de exacte geëxporteerde naam, het geselecteerde tijdsbereik en of die statistiek aanwezig is in de Prometheus-output. Als dashboards wel gegevens tonen, maar de kwaliteit van de vergaderingen nog steeds te wensen overlaat, helpen statistieken om het probleem te verkleinen; ze identificeren op zichzelf echter niet het lokale wifi-, browser- of last-mile-netwerkprobleem van een deelnemer.

Deze configuratie volgt de documentatie van Jitsi, Prometheus en Grafana zoals die op 6 oktober 2026 is herzien. Omdat de referentieconfiguratie van Jitsi en de Grafana-schermen voortdurend in ontwikkeling zijn, raden we aan de voorbeelden te vergelijken met de documentatie en bestanden voor de specifieke versies die u gebruikt.

Laat een reactie achter

Het probleem met het hoge CPU-gebruik in Jitsi Meet op clientbrowsers oplossen.

Het probleem met het hoge CPU-gebruik in Jitsi Meet op clientbrowsers oplossen.

Diagnoseer pieken in het CPU-gebruik van de Jitsi Meet-browser en verlaag de belasting van de client door videotegels, camera-effecten, browsergraphics en hostinstellingen te controleren.

Hoe je Jitsi Videobridge-statistieken kunt monitoren met Prometheus en Grafana

Hoe je Jitsi Videobridge-statistieken kunt monitoren met Prometheus en Grafana

Monitor de status van Jitsi Videobridge, de belasting van conferenties en het verkeer met het ingebouwde Prometheus-eindpunt, en analyseer en visualiseer de gegevens vervolgens in Grafana.

Hoe configureer je een aangepaste domeinnaam voor Jitsi Meet Docker?

Hoe configureer je een aangepaste domeinnaam voor Jitsi Meet Docker?

Configureer een aangepast domein voor Jitsi Meet Docker met DNS, PUBLIC_URL, HTTPS, Let's Encrypt, firewallpoorten, NAT-instellingen en end-to-end verificatie.

Oplossing voor de 404-fout 'Zimbra Admin Console niet gevonden' na SSL-vernieuwing.

Oplossing voor de 404-fout 'Zimbra Admin Console niet gevonden' na SSL-vernieuwing.

Los 404-fouten in de Zimbra Admin Console op na het vernieuwen van een SSL-certificaat door de juiste URL en poort, proxy-routering, servicestatus, geïmplementeerde certificaten en logbestanden te controleren.

Los de Nextcloud-waarschuwing "De PHP OPcache is niet correct geconfigureerd" op.

Los de Nextcloud-waarschuwing "De PHP OPcache is niet correct geconfigureerd" op.

Leer hoe u de PHP OPcache-configuratiewaarschuwing van Nextcloud kunt diagnosticeren en oplossen door de actieve PHP SAPI, groottelimieten, opmerkingen en hervalidatie-instellingen te controleren.

Corrigeer migratiefouten in de Kopano-database na een MySQL-versie-upgrade.

Corrigeer migratiefouten in de Kopano-database na een MySQL-versie-upgrade.

Los problemen met Kopano-databasemigraties na een MySQL- of MariaDB-upgrade op door back-ups, serverversies, SQL-modi, tekenset, schemastatus en logbestanden te controleren.

Hoe configureer je LDAP- en Active Directory-authenticatie in Nextcloud?

Hoe configureer je LDAP- en Active Directory-authenticatie in Nextcloud?

Verbind Nextcloud met LDAP of Active Directory via beveiligd transport, gebruikers- en groepsfilters, inlogkenmerken en een geteste uitrolprocedure.

Element Android-meldingen repareren zonder Google-services: UnifiedPush-handleiding

Element Android-meldingen repareren zonder Google-services: UnifiedPush-handleiding

Los problemen met Element Android-meldingen op telefoons zonder Google op door UnifiedPush, Android-machtigingen, batterij-instellingen en betrouwbare verificatietests te configureren.

Los de Nextcloud-waarschuwing "Database mist enkele indexen" op.

Los de Nextcloud-waarschuwing "Database mist enkele indexen" op.

Verwijder de waarschuwing van Nextcloud over ontbrekende database-indexen met het officiële occ-commando. Maak eerst een back-up, bekijk de wijzigingen, voer de reparatie uit en controleer het resultaat.

Hoe configureer je Single Sign-On (SSO) met Keycloak in Element Web?

Hoe configureer je Single Sign-On (SSO) met Keycloak in Element Web?

Configureer Keycloak SSO voor Element Web door OIDC met Synapse te verbinden, de exacte callback-URL in te stellen, gebruikersclaims te koppelen en het uitloggen te testen.