Instalar y configurar paneles de Grafana para monitorear Jitsi
Instalación realizada en ubuntu 18.04
La idea es explicar brevemente los pasos para la instalación de un servidor “grafana” (170.x.x.x) que nos permita monitorear nuestra implementación de Jitsi.
Paso 1: Instalar la base de datos (InfluxDB) para alojar los datos de los paneles
Paso 2: Instalar Grafana para mostrar las estadísticas jitsi en los paneles
Paso 3: Instalar el servicio (telegraf) para recopilar estadísticas y escribir en la base de datos (InfluxDB) Servidor: “jitsi” (177.x.x.x)
Paso 4: Adaptar la configuración de Jitsi para exponer estadísticas
Paso 1: instalar InfluxDB
apt update && apt install -y gnupg2 curl wget 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 systemctl enable --now influxdb systemctl status influxdb
Si tiene un firewall (es decir, ufw) en este servidor, abrir el puerto para influxdb y grafana webserver:
ufw allow 8086/tcp ufw allow 3000/tcp
Paso 2: Instalar Grafana para mostrar paneles de estadísticas
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
Paso 3: Instalar y configurar telegraf
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 telegraf -y mv /etc/telegraf/telegraf.conf /etc/telegraf/telegraf.conf.original nano /etc/telegraf/telegraf.conf
Editar el archivo telegraf.conf:
[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
Editar el archivo jitsi.conf:
############################################################################### # INPUTS # ############################################################################### inputs.http name_override = "jitsi_stats" urls = [ "http://177.x.x.x:8080/colibri/stats" ] data_format = "json" ############################################################################### # OUTPUTS # ############################################################################### outputs.influxdb urls = ["http://localhost:8086"] database = "jitsi" timeout = "0s" retention_policy = ""
Seteamos en el arranque el inicio de telegraf
systemctl enable --now telegraf systemctl status telegraf
( no crearemos una base de datos ya que Telegraf creará nuestra base de datos si no encuentra una)
Paso 4: Adaptar la configuración de Jitsi para que muestre las estadísticas
nano /etc/jitsi/videobridge/config
configure las opciones de jvb :
JVB_OPTS="–apis=rest,xmpp" nano /etc/jitsi/videobridge/sip-communicator.properties
Acá se activan las estadísticas:
org.jitsi.videobridge.ENABLE_STATISTICS=true org.jitsi.videobridge.STATISTICS_TRANSPORT=muc,colibri
Reiniciamos el videobridge
service jitsi-videobridge restart
Dentro del servidor jitsi : debería responder con las estadísticas, que están en formato json.
curl -v http://127.0.0.1:8080/colibri/stats
Response:
{"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}
Con esta respuesta, vemos que el resto de la API responde y puede usarse para nuestro propósito.
Para asegurarse de que se pueda acceder al punto final de las estadísticas mediante telegraf:
ufw allow 8080/tcp
Configurar paneles en Grafana
Abra Grafana y entre con su cuenta de administrador en el navegador: http://170.x.x.x:3000
Añadir fuente de datos.
Agregaremos una fuente de datos InfluxDB y la configuraremos como predeterminada.
- Nombre: InfluxDB
- Valor predeterminado: activado
- URL HTTP: http://localhost:8086
- Acceso HTTP: Servidor (predeterminado)
- Base de datos: jitsi
Importamos un tablero de los repositorios de grafana, en nuestro caso el Jitsi Metrics
Podemos usar el id del dashboard (11969), o descargarlo en formato JSON y pegar el código (https://grafana.com/grafana/dashboards/11969)
Vamos a Dashboards y elegimos JitsiMetrics
Si tenemos más de un videobridge podemos agregarlo al panel de grafana habilitando las estadísticas de colibri en cada videobridge, luego agregamos cada videobridge en la configuracion de telegraf en nuestro caso /etc/telegraf/telegraf.d/jitsi.conf
############################################################################### # INPUTS # ############################################################################### #SERVER PRINCIPAL inputs.http name_override = "jitsi_stats" urls = [ "http://170.x.x.x:8080/colibri/stats" ] data_format = "json" #videobridge2 inputs.http name_override = "jitsi_vb2" urls = [ "http://171.x.x.x:8080/colibri/stats" ] data_format = "json" #videobridge3 inputs.http name_override = "jitsi_vb3" urls = [ "http://172.x.x.x:8080/colibri/stats" ] data_format = "json"</font>
Y por último personalizamos el dashboard jitsi metrics para que las consultas tomen los nuevos datos. En nuestro caso duplicamos los paneles que nos interesaban y agregamos las nuevas fuentes de datos (jitsi_vb2 y jitsi_vb3) y borramos los paneles que nos interesaban.
Fuente:
https://community.jitsi.org/t/how-to-to-setup-grafana-dashboards-to-monitor-jitsi-my-comprehensive-tutorial-for-the-beginner/38696
https://grafana.com/docs/grafana/latest/getting-started/getting-started/