24/02/2022

Jitsi – Hướng dẫn cài đặt TIG stack (Telegraf – InfluxDB – Grafana) để giám sát Jitsi

Bài viết này sẽ hướng dẫn cho các bạn cách cài đặt dashboard grafana để giám sát jitsi thông qua bộ công cụ TIG stack (Telegraf – InfluxDB – Grafana).

Ta có thể cài đặt 1 máy chủ riêng để hiển thị dashboard và lưu trữ metrics. Tuy nhiên ở bài viết này, tôi sẽ hướng dẫn các bạn cài đặt trên chính máy chủ chạy Jitsi.

IP máy chủ chạy Jitsi ở hướng dẫn này: 192.168.80.185

Các bước cài đặt:

Lưu ý: Nếu các bạn cài đặt một máy chủ riêng thì ta sẽ làm các bước 1,2,3,5 trên máy chủ riêng đó. OS thì ta sẽ cài cùng với OS của máy chủ Jitsi là Ubuntu Server 18.04. 

Bước 1: Cài đặt 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

Tiếp theo, ta tạo user và database

$ influx
Connected to http://localhost:8086 version 1.7.7
InfluxDB shell version: 1.7.7
> CREATE USER jitsi WITH PASSWORD ‘password’ WITH ALL PRIVILEGES
> SHOW USERS
user      admin
—-      —–
admin     true
> CREATE DATABASE jitsi

Sau đó, ta thay đổi cấu hình của influxdb trong file /etc/influxdb/influxdb.conf 

[http]
  # Determines whether HTTP endpoint is enabled.
  enabled = true
   
  # The bind address used by the HTTP service.
  bind-address = “:8086”
  # Determines whether user authentication is enabled over HTTP/HTTPS.
  auth-enabled = true

Nếu bạn bật firewall, allow 2 port của influx và grafana

ufw allow 8086/tcp
ufw allow 3000/tcp

Restart influxdb

sudo systemctl restart influxdb

Bước 2: Cài đặt grafana

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

Bước 3: Cài đặt và cấu hình 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

Chỉnh sửa file  /etc/telegraf/telegraf.conf

[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
[[inputs.http]]
    name_override = “jitsi_stats”
    urls = [
    ]
    data_format = “json”
###############################################################################
#                                  OUTPUTS                                    #
###############################################################################
[[outputs.influxdb]]
    urls = [“http://127.0.0.1:8086“]
    database = “jitsi”
    timeout = “0s”
    retention_policy = “”
    username = “jitsi”
    password = “password”

Sau đó start service 

systemctl enable –now telegraf
systemctl status telegraf

Bước 4: Cấu hình Jitsi Meet

Trên máy chủ Jitsi, ta sẽ cấu hình để đẩy metrics ra ngoài

Sửa file /etc/jitsi/videobridge/config

JVB_OPTS=”–apis=rest,xmpp”

Sửa file /etc/jitsi/videobridge/sip-communicator.properties

org.jitsi.videobridge.ENABLE_STATISTICS=true
org.jitsi.videobridge.STATISTICS_TRANSPORT=muc,colibri

Sau đó restart lại service

service jitsi-videobridge2 restart

Check thử bằng cách curl tới địa chỉ sau:

root@jitsimeet:~# curl -v http://127.0.0.1:8080/colibri/stats
*   Trying 127.0.0.1…
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)
> GET /colibri/stats HTTP/1.1
> Host: 127.0.0.1:8080
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Mon, 27 Apr 2020 10:30:08 GMT
< Content-Type: application/json
< Content-Length: 1946
< Server: Jetty(9.4.15.v20190215)
<
{“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”:12,”total_packets_received”:469886,”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”:18,”receive_only_endpoints”:0,”total_colibri_web_socket_messages_received”:0,”octo_receive_bitrate”:0,”loss_rate_upload”:0.0,”version”:”2.1.183-gdbddd169″,”total_ice_succeeded”:12,”total_colibri_web_socket_messages_sent”:0,”total_bytes_sent_octo”:0,”total_data_channel_messages_received”:4574,”loss_rate_download”:0.0,”total_conference_seconds”:3463,”bit_rate_upload”:0,”total_conferences_completed”:5,”octo_conferences”:0,”num_eps_no_msg_transport_after_delay”:1,”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”* Connection #0 to host 127.0.0.1 left intact
: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-27 10:30:07.158″,”total_packets_dropped_octo”:0,”conferences”:0,”participants”:0,”largest_conference”:0,”total_packets_sent”:22203,”total_data_channel_messages_sent”:5408,”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”:5,”total_ice_failed”:0,”threads”:37,”videochannels”:0,”total_packets_received_octo”:0,”graceful_shutdown”:false,”octo_receive_packet_rate”:0,”total_bytes_received”:40511142,”rtp_loss”:0.0,”total_loss_controlled_participant_seconds”:27,”total_partially_failed_conferences”:0,”endpoints_sending_audio”:0,”total_bytes_sent”:2439949,”mucs_configured”:1,”total_failed_conferences”:0,”mucs_joined”:1}

Như vậy là metrics đã được đẩy thành công,

Nếu bạn bật firewall, hãy chắc chắn rằng bạn đã allow port 8080

ufw allow 8080/tcp

Để kiểm tra xem metrics đã được telegraf đẩy vào influxdb hay chưa, check trên máy chủ cài đặt influxdb

root@jitsimeet:~# influx -username ‘jitsi’ -password ‘password’
Connected to http://localhost:8086 version 1.8.0
InfluxDB shell version: 1.8.0
> use jitsi
Using database jitsi
> show measurements
name: measurements
name
—-
jitsi_stats

Như vậy là metrics đã được đẩy xuống influxdb. Ta sẽ cấu hình dashboard.

Bước 5: Cấu hình dashboard grafana

Trước tiên, ta sẽ đăng nhập grafana ở địa chỉ http://192.168.80.185:3000

Ta sẽ tạo datasource với type là influxdb và nhập vào những thông số sau:

Sau đó ta sẽ import dashboard. Tải file json ở link sau:

https://raw.githubusercontent.com/thaonguyenvan/ghichep/master/ThaoNV/jitsi/Jitsi%20Monitor-1588006797958.json

Sau đó chọn Import và click “Upload .json file”

Chọn tới file json vừa tải về. Chọn datasource và click import.

Kết quả:

Khi cần hỗ trợ xin liên hệ với chúng tôi:
Công ty phần mềm Nhân Hòa
Trụ sở Hà Nội: Tầng 4 – Toà nhà 97 – 99 Láng Hạ, Đống Đa, Hà Nội
Chi nhánh HCM: 270 Cao Thắng (nối dài), Phường 12, Quận 10, TP HCM
Chi nhánh Vinh – Nghệ An: Tầng 2 Tòa nhà Sài Gòn Sky, ngõ 26 Nguyễn Thái Học, phường Đội Cung, TP. Vinh, Nghệ An
Hotline: 19006680