How can I get 'statistics of maximum jitsi concurrent users' every day?

My company has asked me to consider whether I need to upgrade the specifications of my jitsi bridge VM.

The specifications of the current bridge server were as follows.
=> (CPU 16G, RAM 16G) * 4

I was able to find out the total number of users per day through the information stored in the DB.
=> (70 to 300 people)


However, I don’t know how to get the maximum number of concurrent users per day.
For example, if the total number of users per day is 240, there are two situations.

  1. In case 240 people access at the same time
  2. 10 people access per hour (if a total of 240 people access in 24 hours)

In situation 2, there is no problem.
However, in the case of situation 1, a lot of traffic will flow at once.
How to calculate the number of concurrent users?

The DB only shows information about who accessed a particular room and when.
However, it was difficult to determine that the person who logged on at 10:05 and the person who logged on at 10:10 were necessarily concurrent users.

apt-get install curl jq

curl -s http://127.0.0.1:8080/colibri/stats | jq .
1 Like

If I enter that command, I will see something like this:
Which of these names represents the ‘maximum number of concurrent users’?

{
  "endpoints_with_suspended_sources":0,
  "inactive_endpoints":0,
  "inactive_conferences":0,
  "total_ice_succeeded_relayed":0,
  "colibri2":true,
  "total_loss_degraded_participant_seconds":247,
  "bit_rate_download":0.0,
  "local_active_endpoints":0,
  "muc_clients_connected":1,
  "total_participants":874,
  "total_packets_received":41130598,
  "rtt_aggregate":0.0,
  "packet_rate_upload":0,
  "p2p_conferences":0,
  "total_aimd_bwe_expirations":5,
  "total_loss_limited_participant_seconds":464,
  "preemptive_kfr_suppressed":239,
  "local_endpoints":0,
  "octo_send_bitrate":0.0,
  "total_dominant_speaker_changes":1473,
  "endpoints_with_spurious_remb":0,
  "receive_only_endpoints":0,
  "total_colibri_web_socket_messages_received":141161,
  "octo_receive_bitrate":0.0,
  "version":"2.2.9-g8cded16e",
  "total_ice_succeeded":839,
  "total_colibri_web_socket_messages_sent":159675,
  "total_bytes_sent_octo":0,
  "total_data_channel_messages_received":0,
  "total_conference_seconds":416776,
  "num_eps_oversending":0,
  "bit_rate_upload":0.0,
  "total_conferences_completed":278,
  "octo_conferences":0,
  "num_eps_no_msg_transport_after_delay":7,
  "endpoints_sending_video":0,
  "packet_rate_download":0,
  "muc_clients_configured":1,
  "outgoing_loss":0.0,
  "overall_loss":0.0,
  "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,
  "total_layering_changes_received":196,
  "total_relays":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
  ],
  "endpoints_with_high_outgoing_loss":0,
  "stress_level":0.0,
  "jitter_aggregate":0.0,
  "drain":false,
  "total_video_stream_milliseconds_received":59232531,
  "total_ice_succeeded_tcp":0,
  "octo_endpoints":0,
  "current_timestamp":"2023-03-21 08:50:30.359",
  "num_relays_no_msg_transport_after_delay":0,
  "conferences":0,
  "participants":0,
  "total_keyframes_received":2312,
  "average_participant_stress":0.01,
  "largest_conference":0,
  "total_packets_sent":44150033,
  "endpoints":0,
  "total_data_channel_messages_sent":0,
  "incoming_loss":0.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":278,
  "total_ice_failed":0,
  "preemptive_kfr_sent":123,
  "threads":48,
  "videochannels":0,
  "total_packets_received_octo":0,
  "graceful_shutdown":false,
  "octo_receive_packet_rate":0,
  "total_bytes_received":7633756948,
  "total_loss_controlled_participant_seconds":41100,
  "total_partially_failed_conferences":0,
  "endpoints_sending_audio":0,
  "dtls_failed_endpoints":0,
  "healthy":true,
  "total_bytes_sent":8177

“participants” gives you the number of peers currently using the platform, so if I got correctly what you are trying to achieve, the following should be enough:

curl -s http://127.0.0.1:8080/colibri/stats | jq .participants

This will give you the current number of participants and you may want to monitor it if it reaches 240.

1 Like

Is there any way to find out the maximum number of concurrent users per day by date?
(I need to check last year’s data)

Nope. If you have start and end time per user, you need to come up with some algorithm to count what is the max concurrent user count.

1 Like

Another option is to feed the stats to a monitoring system - like self-hosted Zabbix and/or Grafana or if you are using a public cloud, the stats service there, like CloudWatch in AWS - and take the historical data from there. The jitsi stats API doesn’t give you a full historical data, with users per time period, etc. It’s more of a snapshot of the current situation, and if you point a monitoring tool at it, in that tool you can explore the values, draw graphs, etc.

1 Like