17.08.2021 Update: Befehle für die Installation aktualisiert.
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 Telegraf 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
Die Ausgabe der Jitsi Meet Statistik im JSON-Format sieht wie folgt aus:
{ "inactive_endpoints":0, "inactive_conferences":0, "total_ice_succeeded_relayed":0, "total_loss_degraded_participant_seconds":0, "bit_rate_download":0, "muc_clients_connected":1, "total_participants":0, "total_packets_received":0, "rtt_aggregate":0.0, "packet_rate_upload":0, "p2p_conferences":0, "total_loss_limited_participant_seconds":0, "octo_send_bitrate":0, "total_dominant_speaker_changes":0, "receive_only_endpoints":0, "total_colibri_web_socket_messages_received":0, "octo_receive_bitrate":0, "loss_rate_upload":0.0, "version":"2.1.169-ga28eb88e", "total_ice_succeeded":0, "total_colibri_web_socket_messages_sent":0, "total_bytes_sent_octo":0, "total_data_channel_messages_received":0, "loss_rate_download":0.0, "total_conference_seconds":0, "bit_rate_upload":0, "total_conferences_completed":0, "octo_conferences":0, "num_eps_no_msg_transport_after_delay":0, "endpoints_sending_video":0, "packet_rate_download":0, "muc_clients_configured":1, "conference_sizes":[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "total_packets_sent_octo":0, "conferences_by_video_senders":[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "videostreams":0, "jitter_aggregate":0.0, "total_ice_succeeded_tcp":0, "octo_endpoints":0, "current_timestamp":"2020-04-17 23:14:38.468", "total_packets_dropped_octo":0, "conferences":0, "participants":0, "largest_conference":0, "total_packets_sent":0, "total_data_channel_messages_sent":0, "total_bytes_received_octo":0, "octo_send_packet_rate":0, "conferences_by_audio_senders":[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "total_conferences_created":0, "total_ice_failed":0, "threads":37, "videochannels":0, "total_packets_received_octo":0, "graceful_shutdown":false, "octo_receive_packet_rate":0, "total_bytes_received":0, "rtp_loss":0.0, "total_loss_controlled_participant_seconds":0, "total_partially_failed_conferences":0, "endpoints_sending_audio":0, "total_bytes_sent":0, "mucs_configured":1, "total_failed_conferences":0, "mucs_joined":1 }
Die Erklärung der einzelnen Felder, werden in der Videobridge Dokumentation erklärt. 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 | gpg --dearmor > /etc/apt/trusted.gpg.d/influxdb.gpg # export DISTRIB_ID=$(lsb_release -si); export DISTRIB_CODENAME=$(lsb_release -sc) # echo "deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" > /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
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
Grafana
Installation
Die Installation von Grafana für Jitsi Meet erfolgt nach dem gleichen Schema wie die anderen Softwarepakete.
# wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - # echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list # apt update && apt install grafana -y # systemctl enable --now grafana-server # systemctl status grafana-server
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
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.
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
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:
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“.
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
Problembehandlung
Sollte das Jitsi Meet Grafana Dashboard nicht funktionieren, müssen die verschiedenen Dienste überprüft werden. Die erste Anlaufstelle ist immer das /var/log/ Verzeichnis mit den entsprechenden Logdateien der verschiedenen Services. Darüber hinaus habe ich hier die wichtigsten Befehle gesammelt, um Informationen zum Status zu erhalten.
Videobridge
Der Status kann mit dem folgenden Befehl aufgerufen werden:
# systemctl status jitsi-videobridge2
Um die Funktionsweise zu testen, können die Statistikdaten mit dem Tool curl geladen werden:
# curl -v http://127.0.0.1:8080/colibri/stats
Mit dem folgenden Befehl kann der Dienst neu gestartet werden:
# service jitsi-videobridge2 restart
InfluxDB
Der Status der InfluxDB Datenbank kann mit dem folgenden Befehl aufgerufen werden:
# systemctl status influxdb
Ob Inhalte in der InfluxDB Datenbank gespeichert wurden, kann einfach überprüft werden. Dazu muss die Shell der Datenbank geöffnet werden:
# influx
Mit dem nächsten Befehl werden alle Datenbanken angezeigt, damit kann überprüft werden, ob die jitsi Datenbank angelegt wurde.
> SHOW DATABASES
Ob die Tabellen angelegt wurden, kann mit dem folgenden Befehl überprüft werden. Hier erscheint die Tabelle jitsi_stats gefolgt von der URL der Datenquelle.
> USE jitsi > SHOW SERIES
Mit dem Tool du (disk usage) kann die Größe des Verzeichnisses mit der Datenbank der Jitsi Meet Statistik ausgegeben werden. Alte Daten können mit einer RETENTION POLICY automatisch gelöscht werden.
du -sh /var/lib/influxdb/data/jitsi/
Telegraf
Der Status kann mit dem folgenden Befehl aufgerufen werden:
# systemctl status telegraf
Mit dem folgenden Befehl kann Telegraf neu gestartet werden:
# service telegraf restart
Grafana
Der Status kann mit dem folgenden Befehl aufgerufen werden:
# systemctl status influxdb
Mit dem folgenden Befehl kann Grafana neu gestartet werden:
# service grafana-server restart
Jitsi Meet Artikelserie
Dieser Blogbeitrag ist Teil der Artikelserie „Videokonferenzen mit Jitsi Meet“, die sich mit dem Open-Source-Webkonferenzsystem Jitsi für Video-, Web- und Telefonkonferenzen beschäftigt. Die Artikelserie zu Jitsi Meet umfasst die folgenden Themen:
Jitsi Meet Artikel für Anwender
- Liste mit öffentlichen Jitsi Meet Instanzen
- Anleitung für Jitsi Meet Videokonferenzen
- Jitsi Meet Anleitung für Moderatoren
- Jitsi Meet für Smartphones und Tablets
- Jitsti Meet Nutzung per Desktop App
- Tipps und Tricks mit Jitsi Meet
- Meine eigene Jitsi Meet Instanz
- Jitsi Meet Server mit ressourcensparender Konfiguration
- Neuer Jitsi Meet Testserver (Nightly Builds)
- Virtuelle Webcam in Jitsi Meet verwenden
- Virtuelle Desktops für die Freigabe nutzen
- Neues zu Jitsi Meet – Update und Server
- Breakout Rooms in Jitsi Meet
Jitsi Meet Artikel für Administratoren
- Installation eines eigenen Jitsi Meet Servers
- Jitsi Meet unter Ubuntu 20.04 installieren
- Mehrere Jitsi Meet Varianten per API
- Geschwindigkeitsoptimierung von Jitsi Meet
- Das Design von Jitsi Meet anpassen
- Datenschutzfreundliche Konfiguration von Jitsi Meet
- Jitsi Meet Update Script
- Jitsi Meet Server Auslastung
- Jitsi Meet Statistik als Grafana Dashboard
- Neues Jitsi Meet Feature: Lobby Wartebereich
- Jitsti Meet und die Log4Shell Sicherheitslücke
Changelog
17.08.2021Befehle für die Installation aktualisiert.
03.02.2021Mehrere Änderungen und neues Dashboard Layout eingefügt.
06.01.2021Neuer Abschnitt Problembehandlung eingefügt.
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