Tobias Scheible Cyber Security & IT-Forensik Dozent

Jitsi Meet Statistik als Grafana Dashboard

In dieser Anleitung zeige ich, wie die Jitsi Meet Statistik übersichtlich auf einem Grafana Dashboard dargestellt wird. Dazu wird die Statistik der Videobridge aktiviert, mittels Telegraf werden die Daten abgeholt, in einer InfluxDB Datenbank gespeichert und mit Grafana visualisiert.

Donnerstag, 09. Juli 2020
9 Kommentare

Jitsi Meet ist ein quelloffenes Videokonferenzsystem, das ohne Anmeldung und Installation mit Webbrowser genutzt werden kann. Der Betrieb einer eigenen Jitsi Meet Instanz kann sehr einfach realisiert werden. Als Betreiber ist es interessant zu wissen, wie der Jitsi Meet Server genutzt wird. Wie eine einfache Übersicht realisiert werden kann, habe ich bereits im Blog-Artikel „Jitsi Meet Server Auslastung“ beschrieben.

Öffentlicher Jitsi Meet Server (meet.scheible.it):

In dieser Anleitung zeige ich, wie ein ausführliches Grafana Dashboard auf einem Server mit Jitsi Meet installiert werden kann. Das hat der Vorteil, dass auch die Nutzung in der Vergangenheit betrachtet werden kann. Dazu wird die Statistik der Videobridge aktiviert, mittels Telegrafen werden die Daten abgeholt und in einer InfluxDB Datenbank gespeichert. Anschließend werden die Daten mit Grafana visualisiert und auf einem öffentlichen Dashboard angezeigt.

Jitsi Meet Konfiguration

Die Videobridge von Jitsi bietet von Haus aus bereits eine Statistikfunktion. Diese muss nur aktiviert bzw. das Ausgabeformat festgelegt werden. Dazu muss in der Zeile 16 in der Konfigurationsdatei der Videobridge der Paramater JVB_OPTS angepasst werden.

/etc/jitsi/videobridge/config
16: JVB_OPTS="--apis=rest,xmpp"

Anschließend muss in der Datei sip-communicator.properties überprüft werden, ob die Statistik aktiviert ist. Normalerweise muss nur der Wert „,colibri“ in der vierten Zeile hinzugefügt werden.

/etc/jitsi/videobridge/sip-communicator.properties
3: org.jitsi.videobridge.ENABLE_STATISTICS=true
4: org.jitsi.videobridge.STATISTICS_TRANSPORT=muc,colibri

Um die Änderungen zu aktivieren, muss die Videobridge neu gestartet werden:

# service jitsi-videobridge2 restart

Um nun die Funktionsweise zu testen, können die Statistikdaten mit dem Tool curl geladen werden:

# curl -v http://127.0.0.1:8080/colibri/stats
Jitsi Meet Statistik
Ausgabe der Jitsi Meet Statistik im JSON-Format
Jitsi Meet - Videobridge Statistik Ausgabe der Jitsi Meet Statistik im JSON-Format

Da die Daten nur intern verarbeitet werden, muss der Port 8080 nicht in der Firewall freigegeben werden.

InfluxDB Installation

Als nächster Schritt wird die InfluxDB Datenbank installiert. InfluxDB ist eine Open-Source-Zeitreihen (TimeSeries) Datenbank, die von InfluxData entwickelt wurde. Sie ist in Go geschrieben und für die schnelle, hochverfügbare Speicherung und Abfrage von Zeitreihendaten, wie sie zum Beispiel in den Bereichen Betriebsüberwachung, Anwendungsmetriken, Sensordaten, Internet der Dinge- und Echtzeitanalyse vorkommen, optimiert.

Als Erstes müssen noch einige Tools installiert werden:

# apt update && apt install -y gnupg2 curl wget

Danach muss das Repository von InfluxData hinzugefügt werden und die entsprechenden Pakete können installiert werden:

# wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
# echo "deb https://repos.influxdata.com/debian buster stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
# apt update && apt install influxdb -y

Nach der Installation kann InfluxDB aktiviert werden:

# systemctl enable --now influxdb

Jetzt kann der Status überprüft werden:

# systemctl status influxdb
InfluxDB Datenbank
Ausgabe des Status der InfluxDB Datenbank
InfluxDB Status Ausgabe des Status der InfluxDB Datenbank

Telegraf Installation

Als Nächstes kann Telegraf installiert werden. Da die Softwarepakete auch in den Repositories von InfluxData vorhanden sind, kann die Installation direkt durchgeführt werden:

# apt update && apt install telegraf -y

Danach muss die Konfigurationsdatei bearbeitet werden. Zur Sicherheit benennen wir die Standardkonfiguration um:

# mv /etc/telegraf/telegraf.conf /etc/telegraf/telegraf.conf.original

Nun muss eine neue telegraf.conf Datei am selben Ort (/etc/telegraf/telegraf.conf), erstellt und der folgende Inhalt eingefügt werden:

[global_tags]

###############################################################################
#                                  GLOBAL                                     #
###############################################################################

[agent]
    interval = "10s"
    debug = false
    hostname = "jitsi_host"
    round_interval = true
    flush_interval = "10s"
    flush_jitter = "0s"
    collection_jitter = "0s"
    metric_batch_size = 1000
    metric_buffer_limit = 10000
    quiet = false
    logfile = ""
    omit_hostname = false

Als Nächstes muss eine spezifische Konfiguration Datei für Jitsi Meet erstellt werden. Die Datei wird unter dem Namen /etc/telegraf/telegraf.d/jitsi.conf angelegt und der folgende Inhalt eingetragen:

##
#                                  INPUTS                                     #
###############################################################################

[[inputs.http]]
    name_override = "jitsi_stats"
    urls = [
      "http://localhost:8080/colibri/stats"
    ]

    data_format = "json"

###############################################################################
#                                  OUTPUTS                                    #
###############################################################################

[[outputs.influxdb]]
    urls = ["http://localhost:8086"]
    database = "jitsi"
    timeout = "0s"
    retention_policy = ""

Der obere Teil beschreibt die Quelle der Daten, in diesem Fall die URL der Videobridge Statistik. Weiter geht es im unteren Teil, der die Ausgabe beschreibt. Hier ist die InfluxDB angegeben, die über den Port 8086 absprechbar ist. Die Datenbank mit dem Namen Jitisi wird automatisch angelegt.

Da die Videobridge die Auslastung des Prozessors nicht miterfasst, muss noch eine extra Konfigurationsdatei (/etc/telegraf/telegraf.d/system.conf) erstellt werden:

###############################################################################
#                                  INPUTS                                     #
###############################################################################

[[inputs.cpu]]
## Whether to report per-cpu stats or not
    ## percpu = true
    ## Whether to report total system cpu stats or not
    totalcpu = true

[[inputs.mem]]

###############################################################################
#                                  OUTPUTS                                    #
###############################################################################

[[outputs.influxdb]]
    urls = ["http://localhost:8086"]
    database = "jitsi"
    timeout = "0s"
    retention_policy = ""

Als letzter Schritt erfolgen wieder die Aktivierung der Anwendung und die Abfrage des Status.

# systemctl enable --now telegraf
# systemctl status telegraf
Telegraf Service
Ausgabe des Status von Telegraf
Telegraf Status Ausgabe des Status von Telegraf

Grafana

Installation

Die Installation von Grafana für Jitsi Meet erfolgt nach dem gleichen Schema wie die anderen Softwarepakete.

# curl https://packages.grafana.com/gpg.key | sudo apt-key add -
# add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
# apt update && apt install grafana -y
# systemctl enable --now grafana-server
# systemctl status grafana-server
Grafana Status
Ausgabe des Status von Grafana
Grafana Service Ausgabe des Status von Grafana
Firewall

Wird eine Firewall verwendet, muss der Port 3000 freigegeben werden, um die Oberfläche von Grafana aufrufen zu können.

# ufw allow 3000/tcp

Konfiguration

HTTPS

Vor dem ersten Aufruf muss noch die HTTPS-Verbindung konfiguriert werden. Dazu verwenden wir die SSL-Zertifikate von Let’s Encrypt, die mit dem Jitsi Meet Script generiert worden sind. Dazu muss als Erstes HTTPS in der Konfigurationsdatei grafana.ini aktiviert werden. Der Eintrag ist in Zeile 32 bereits vorhanden, dort muss das Strichkommazeichen „;“ am Anfang entfernt werden und das „s“ am Schluss ergänzt werden.

/etc/grafana/grafana.ini
32: protocol = https

Zusätzlich müssen die Pfade zu dem SSL-Zertifikat angegeben werden. Hier sind ebenfalls schon Platzhalter in den Zeilen 64 und 65 vorhanden.

/etc/grafana/grafana.ini
64: cert_file = /etc/letsencrypt/live/meet.scheible.it/cert.pem
65: cert_key = /etc/letsencrypt/live/meet.scheible.it/privkey.pem

Die Änderung der Konfiguration ist abgeschlossen. Allerdings kommt es noch zu einer Fehlermeldung, da der Grafana Benutzer nicht auf die SSL-Zertifikate zugreifen darf. Die Berechtigungen werden mit den folgenden Befehlen angepasst:

# usermod -G ssl-cert -a grafana
# chown root:ssl-cert /etc/letsencrypt/live/meet.scheible.it/*
# chmod 660 /etc/letsencrypt/live/meet.scheible.it/*
# chmod 755 /etc/letsencrypt/live/
# chmod 755 /etc/letsencrypt/archive/

Jetzt muss der Grafana Server nur noch neugestartet werden:

# service grafana-server restart

Danach kann die URL des Jitsi Meet Servers mit dem Port 3000 aufgerufen werden. Es erscheint der Login-Screen von Grafana. Der Standardbenutzer heißt „admin“ und das Passwort ebenfalls „admin“. Direkt nach dem Klick auf den Button „log in“ erscheint die Aufforderung zum Festlegen eines neuen Passwortes.

Grafana
Startseite von Grafana mit dem Login
Grafana Startseite von Grafana mit dem Login

Einstellungen

Für die Jitsi Meet Statistik muss die InfluxDB hinzugefügt werden. Dazu muss im Menü auf der linken Seite „Configuration > Data Sources“ ausgewählt werden. In dem Suchfeld muss „InfluxDB“ eingegeben werden und dann beim passenden Ergebnis auf „select“ geklickt werden.

Im nun erscheinenden Dialog müssen nur die zwei nachfolgenden Felder ausgefüllt werden. Die Eingabe wird mit einem Klick auf den Button „Save & Test“ abgeschlossen. Es erscheint eine grüne Meldung zur Bestätigung.

HTTP URL: http://localhost:8086
Database: jitsi
Grafana Konfiguration
Konfiguration der IndexDB Datenbank in Grafana
Grafana Konfiguration Konfiguration der IndexDB Datenbank in Grafana

Dashboard

Jetzt kann das Dashboard angelegt werden. Der einfachste Einstieg ist das Importieren meiner Vorlage. Dazu muss die Grafana Dashboard Datei im JSON-Format heruntergeladen werden: Jitsi Meet Statistik (.txt entfernen).

Nach dem Download im linken Menü „Dashboard > Manage“ aufrufen. Und dort auf den Button „Import“ klicken und im nächsten Schritt auf „Upload .json file“ und die Datei auswählen. Im nächsten Screen müssen keine Anpassungen durchgeführt werden und es kann direkt auf „Import“ geklickt werden. Jetzt ist der Vorgang abgeschlossen und das Dashboard mit der Jitsi Meet Statistik wird angezeigt:

Jitsi Meet Statistik - Grafana
Grafana Dashboard mit der Statistik des Jitsi Meet Servers
Jitsi Meet - Grafana Dashboard Grafana Dashboard mit der Statistik des Jitsi Meet Servers

Veröffentlichen

Das Dashboard für die Jitsi Meet Statistik ist nun angelegt und funktioniert. Allerdings ist das Jitsti Meet Dashboard bisher nur intern mit Login verfügbar. Um es zu veröffentlichen, müssen noch ein paar Einstellungen vorgenommen werden.

Ein Zugriff ohne Passwort kann immer nur für eine Organisation gewählt werden. Damit nur das Jitsi Dashboard freigegeben wird, muss als Erstes unter „Server Admin > Orgs“ eine neue Organisation angelegt werden. Ich nenne sie einfachheitshalber „Organisation“.

Grafana Organization
Anlegen einer Organisation in Grafana
Grafana Admin Anlegen einer Organisation in Grafana

Anschließend muss für die neue Organisation das Dashboard noch einmal angelegt werden. Dazu einfach die Schritte 4.3 Einstellungen und 4.4. Dashboard erneut durchführen.

Als letzter Schritt muss die grafana.ini bearbeitet werden, um den Zugriff ohne Passwort einzustellen. Der passende Block ist bereits ab Zeile 308 vorhanden und muss nur noch modifiziert werden.

/etc/grafana/grafana.ini
308: #################################### Anonymous Auth ######################
309: [auth.anonymous]
310: # enable anonymous access
311: enabled = true
312:
313: # specify organization name that should be used for unauthenticated users
314: org_name = Organisation
315:
316: # specify role for unauthenticated users
317: org_role = Viewer

Jetzt muss der Grafana Server nur noch neugestartet werden und das Dashboard mit der Jitsi Meet Statistik ist ohne Passwort verfügbar und kann eingebunden werden.

# service grafana-server restart

Jitsi Meet Artikelserie

Dieser Blogbeitrag ist Teil der Artikelserie „Videokonferenzen mit Jitsi Meet“, die sich mit dem Webkonferenzsystem Open-Source-System Jitsi für Video-, Web- und Telefonkonferenzen beschäftigt. Die Artikelserie zu Jitsi umfasst die folgenden Themen:

Über Tobias Scheible

Tobias Scheible

Hallo, mein Name ist Tobias Scheible. Ich bin begeisterter Informatiker und Sicherheitsforscher mit den Schwerpunkten Cyber Security und IT-Forensik. Mein Wissen teile ich gerne anhand von Fachartikeln hier in meinem Blog. Als Referent halte ich Vorträge und Workshops für Verbände und Unternehmen u. a. auch offene Veranstaltungen für den VDI und die IHK.

Kommentare

Sascha Zucca am 13. Juli 2020 um 19:00 Uhr

Hallo,
großartige Anleitung, vielen lieben Dank!

Allerdings kann ich Ihre Grafana Vorlage nirgendwo finden:

„Jetzt kann das Dashboard angelegt werden. Der einfachste Einstieg ist das Importieren meiner Vorlage. Dazu muss die Grafana Dashboard Datei im JSON-Format heruntergeladen werden: Jitsi Meet Statistik. “

Vielleicht bin ich auch zu schusselig, aber ich seh die Datei nirgendwo…
haben Sie den Download noch für uns?

Danke
Sascha

Tobias am 13. Juli 2020 um 21:57 Uhr

Hallo Sascha,

Vielen Dank für den Hinweis. Da ist was bei der Verlinkung schiefgelaufen, bzw. WordPress hat die JSON-Datei nicht erlaubt. Ich habe es jetzt korrigiert.

Viele Grüße
Tobias

Karl am 19. Juli 2020 um 23:11 Uhr

Hi Super Anleitung. hab jedoch folgendes Problem die InfluxDB legt anscheinen die DB „jitsi“ nicht automatisch an, weshalb ich beim Konfigurieren von Grafana mit der db „jitsi“ eine Fehlermeldung bekomme InfluxDB Error: database not found: jitsi
gibts hier einen Workaround?
Vielen Dank!
Karl

Karl am 19. Juli 2020 um 23:17 Uhr

Hi, habe den Fehler entdeckt, hatte leider bei der jitsi.conf einen typo 😉
Vielen Dank!

Anton Hingerl am 5. August 2020 um 20:34 Uhr

Super Anleitung 🙂

Stefan am 11. August 2020 um 11:04 Uhr

Hallo,
sehr schöne Anleitung auch für Anfänger wie mich! Hat bei einer „normalen“ Installation ohne Probleme funktioniert, allerdings habe ich noch eine weitere Installation, da muss der Jitsi-Server über einen Proxy in Internet gehen. Bei dem Befehl: curl -v http://127.0.0.1:8080/colibri/stats wird ebenfalls versucht über den Proxy zu gehen (zumindest erscheint die Meldung…). Mir ist nicht klar, wie ich die Ausnahme: „bei lokalen Adressen nicht über den Proxy gehen“ hinterlegen kann. Ist kein Jitsi Problem, ich weiß, aber vielleicht hast Du ja trotzdem einen Tipp….

Tobias am 23. August 2020 um 13:30 Uhr

Hallo Stefan,
das ist je nach Proxy unterschiedlich. Du könntest aber einfach den Port 8080 freigeben und dann über die externe Domain/IP-Adresse den Zugriff realisieren.
Grüße Toibas

Daniel am 16. August 2020 um 21:24 Uhr

Vielen Dank Tobias!

Eine Frage, das Dashboard läuft soweit, nur die Anzeige für RAM und CPU sagt „No data“. Hast Du eine Idee woran das liegen könnte?

Tobias am 23. August 2020 um 13:24 Uhr

Hallo Daniel,
hast du auch die zweite Konfigurationsdatei erstellt? Im Artikel habe ich sie als /etc/telegraf/telegraf.d/system.conf bezeichnet.
Grüße Tobias

Schreibe einen Kommentar!

Hilfe zum Kommentieren

Um kommentieren zu können, geben sie bitte mindestens ihren Namen und ihre E-Mail-Adresse an. Bitte nutzen Sie die Kommentarfunktion nicht dazu, andere zu beleidigen oder Spam zu verbreiten. Trolle und Spammer sind hier unerwünscht! Unangemessene Kommentare, die zum Beispiel gegen geltendes Recht verstoßen oder eine Gefährdung anderer Besucher darstellen, werden gelöscht oder angepasst.

Name: Ihr Name, der oberhalb des Kommentars steht, gerne auch Ihren echten Namen, das erleichtert die Kommunikation für alle. Sollte ein Spam-Keyword als Name verwendet werden, kann dieses entfernt oder korrigiert werden.

E-Mail: Ihre E-Mail Adresse dient zur Identifizierung weiterer Kommentare und sie haben die Möglichkeit, ein Avatar-Bild zu verwenden. Dazu müssen Sie mit Ihrer E-Mail Adresse bei Gravatar angemeldet sein. Die E-Mail Adresse wird natürlich nicht veröffentlicht und nicht weitergegeben.

Website: Hier können Sie ihren eigenen Blog bzw. ihre eigene Website eintragen, dadurch wird Ihr Name und Ihr Avatar-Bild verlinkt. Werden rein kommerzielle Angebote offensichtlich beworben, setze ich den Link auf nofollow und unangemessene werden einfach entfernt.

Erlaubte HTML-Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <hr> <big> <small> <sub> <sup> <u>

Ihre E-Mailadresse wird nicht veröffentlicht. Mit dem Absenden anerkennen Sie die Datenschutzhinweis des Blogs.