Instalar y configurar paneles de Grafana para monitorear Jitsi

De JitsiWiki ARIU
Ir a la navegación Ir a la búsqueda

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
Image4.png


Importamos un tablero de los repositorios de grafana, en nuestro caso el Jitsi Metrics

Image2.png


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

Image3.png









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.

Image1.png







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/