Quick-Install: Can't get colibri (stats) working

Hey there,

I followed this guide (quick-install) to install Jitsi Meet on a (new) Debian Buster machine - nothing installed, only minimal base system. No Docker.

But I have a problem to get colibri stats working. What I did so far:

  1. nano /etc/jitsi/videobridge/config
    JVB_ENABLE_APIS=rest,colibri

  2. nano /etc/jitsi/videobridge/sip-communicator.properties
    org.jitsi.videobridge.ENABLE_STATISTICS=true org.jitsi.videobridge.STATISTICS_TRANSPORT=muc,colibri org.jitsi.videobridge.STATISTICS_INTERVAL=5000

I also installed the debian-package jetty9, because I use nginx.

After restarting the services and even doing some restarts I can’t get it work. If I do:
curl localhost:8080/colibri/stats

I says:

  • TCP_NODELAY set
  • Expire in 149999 ms for 3 (transfer 0x55f15d184f50)
  • Expire in 200 ms for 4 (transfer 0x55f15d184f50)
  • Connected to localhost (::1) port 8080 (#0)

GET /colibri/stats HTTP/1.1
Host: localhost:8080
User-Agent: curl/7.64.0
Accept: /

< HTTP/1.1 404 Not Found
< Cache-Control: must-revalidate,no-cache,no-store
< Content-Type: text/html;charset=iso-8859-1
< Content-Length: 330
< Server: Jetty(9.4.15.v20190215)
<

Error 404 Not Found

HTTP ERROR 404

Problem accessing /colibri/stats. Reason:

    Not Found

Powered by Jetty:// 9.4.15.v20190215
* Connection #0 to host localhost left intact

I checked my ports with:
netstat

Output:

Proto Recv-Q Send-Q Local Address Foreign Address State Benutzer Inode PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 0 1988 834/nginx: master p
tcp 0 0 0.0.0.0:5269 0.0.0.0:* LISTEN 108 15162 588/lua5.2
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 0 2021 956/exim4
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 0 1990 834/nginx: master p
tcp 0 0 0.0.0.0:5280 0.0.0.0:* LISTEN 108 15268 588/lua5.2
tcp 0 0 0.0.0.0:7777 0.0.0.0:* LISTEN 0 15526 638/sshd
tcp 0 0 127.0.0.1:5347 0.0.0.0:* LISTEN 108 15159 588/lua5.2
tcp 0 0 0.0.0.0:5222 0.0.0.0:* LISTEN 108 15566 588/lua5.2
tcp6 0 0 :::8080 :::* LISTEN 109 17916 587/java
tcp6 0 0 :::80 :::* LISTEN 0 1989 834/nginx: master p
tcp6 0 0 :::5269 :::* LISTEN 108 15163 588/lua5.2
tcp6 0 0 :::8888 :::* LISTEN 997 18516 440/java
tcp6 0 0 188.68.35.146:4443 :::* LISTEN 998 32944 3297/java
tcp6 0 0 2a03:4000:10:50b:c:4443 :::* LISTEN 998 32940 3297/java
tcp6 0 0 :::443 :::* LISTEN 0 1991 834/nginx: master p
tcp6 0 0 :::5280 :::* LISTEN 108 15269 588/lua5.2
tcp6 0 0 ::1:5347 :::* LISTEN 108 15158 588/lua5.2
tcp6 0 0 :::5222 :::* LISTEN 108 15567 588/lua5.2
udp 0 0 0.0.0.0:48500 0.0.0.0:* 998 34017 3297/java
udp6 0 0 :::54160 :::* 997 15489 440/java
udp6 0 0 :::46605 :::* 998 39841 3297/java
udp6 0 0 188.68.35.146:10000 :::* 998 32926 3297/java
udp6 0 0 2a03:4000:10:50b::10000 :::* 998 31186 3297/java
udp6 0 0 :::55084 :::* 998 42649 3297/java
udp6 0 0 :::34680 :::* 998 35950 3297/java
udp6 0 0 :::51180 :::* 998 38109 3297/java
udp6 0 0 :::51470 :::* 998 28349 3297/java
udp6 0 0 :::60028 :::* 998 41387 3297/java
udp6 0 0 :::35590 :::* 998 40480 3297/java
udp6 0 0 :::40077 :::* 998 38097 3297/java
udp6 0 0 :::60628 :::* 998 39509 3297/java
udp6 0 0 :::56821 :::* 998 42177 3297/java
udp6 0 0 :::60936 :::* 998 37616 3297/java
udp6 0 0 :::57081 :::* 998 35947 3297/java
udp6 0 0 :::36846 :::* 998 33980 3297/java
udp6 0 0 :::36941 :::* 998 34019 3297/java
udp6 0 0 :::41628 :::* 998 32397 3297/java

So Jetty binds to tcp6 port 8080. Seems fine to me.

Any ideas?

This is wrong.

You need JVB_OPTS="--apis=rest".

Thanks @damencho! It’s working.

Hello, I am getting the same

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.52.1
> Accept: */*
>
< HTTP/1.1 404 Not Found
< Content-Type: text/html; charset=ISO-8859-1
< Cache-Control: must-revalidate,no-cache,no-store
< Content-Length: 297
< Server: Jetty(9.2.21.v20170120)
<
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Error 404 Not Found</title>
</head>
<body><h2>HTTP ERROR 404</h2>
<p>Problem accessing /colibri/stats. Reason:
<pre>    Not Found</pre></p><hr><i><small>Powered by Jetty://</small></i><hr/>

</body>
</html>
* Curl_http_done: called premature == 0
* Connection #0 to host 127.0.0.1 left intact

I have the communicator.properties

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

and

nano /etc/jitsi/videobridge/config

JVB_ENABLE_APIS=rest,colibri

Also have jetty9 installed

I am missing something just cant see what

JVB_OPTS="–api=rest,"

Thanks I have changed to this

JVB_OPTS="–apis=rest,xmpp"

Changing to the suggested above does not work

How are you checking. I see that that port 8080 is open from your previous reply

Try accessing http://localhost:8080/colibri/stats

You should see something like the following

ubuntu@meet:~$ curl http://localhost:8080/colibri/stats
{“inactive_endpoints”:0,“inactive_conferences”:0,“total_ice_succeeded_relayed”:0,“total_loss_degraded_participant_seconds”:8,“bit_rate_download”:0,“muc_clients_connected”:1,“total_participants”:149,“total_packets_received”:1442066,“rtt_aggregate”:0.0,“packet_rate_upload”:0,“p2p_conferences”:0,“total_loss_limited_participant_seconds”:17,“octo_send_bitrate”:0,“total_dominant_speaker_changes”:638,“receive_only_endpoints”:0,“total_colibri_web_socket_messages_received”:0,“octo_receive_bitrate”:0,“loss_rate_upload”:0.0,“version”:“2.1.186-g29a8b927”,“total_ice_succeeded”:126,“total_colibri_web_socket_messages_sent”:0,“total_bytes_sent_octo”:0,“total_data_channel_messages_received”:11208,“loss_rate_download”:0.0,“total_conference_seconds”:8783,“bit_rate_upload”:0,“total_conferences_completed”:46,“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”: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-28 08:56:33.113”,“total_packets_dropped_octo”:0,“conferences”:0,“participants”:0,“largest_conference”:0,“total_packets_sent”:2112727,“total_data_channel_messages_sent”:14213,“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”:46,“total_ice_failed”:2,“threads”:43,“videochannels”:0,“total_packets_received_octo”:0,“graceful_shutdown”:false,“octo_receive_packet_rate”:0,“total_bytes_received”:555145679,“rtp_loss”:0.0,“total_loss_controlled_participant_seconds”:3446,“total_partially_failed_conferences”:2,“endpoints_sending_audio”:0,“total_bytes_sent”:491958333,“mucs_configured”:1,“total_failed_conferences”:0,“mucs_joined”:1}

Still not.

root@meet:/etc/jitsi/videobridge# curl -v http://localhost:8080/colibri/stats

  • Trying 127.0.0.1…
  • TCP_NODELAY set
  • Connected to localhost (127.0.0.1) port 8080 (#0)

GET /colibri/stats HTTP/1.1
Host: localhost:8080
User-Agent: curl/7.52.1
Accept: /

< HTTP/1.1 404 Not Found
< Content-Type: text/html; charset=ISO-8859-1
< Cache-Control: must-revalidate,no-cache,no-store
< Content-Length: 297
< Server: Jetty(9.2.21.v20170120)
<

Error 404 Not Found

HTTP ERROR 404

Problem accessing /colibri/stats. Reason:

    Not Found

Powered by Jetty://
* Curl_http_done: called premature == 0 * Connection #0 to host localhost left intact

Where can I see the error files for colibri?

I also have rest activated in sip-communicator.properties

org.jitsi.videobridge.STATISTICS_TRANSPORT=muc,colibri,rest

I just tested it and the statistics access works without this line.

Edit: the statistics works without this line. The rest of Jitsi, less well, so it’s a bad idea to remove this line :slight_smile:

Hi!

Not sure, but maybe you applied changes to the wrong sip-communicator.properties; there is one for jicofo and one for videobridge (both same file-name). You need:

nano /etc/jitsi/videobridge/config

Make sure to configure the jvb options:

JVB_OPTS="--apis=rest,xmpp"

and

nano /etc/jitsi/videobridge/sip-communicator.properties

Here we configure colibri statistics:

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

service jitsi-videobridge2 restart

Check output in the terminal on the jitsi server:

curl -v http://127.0.0.1:8080/colibri/stats

Thanks for all the suggestions. Unfortunately I still have this issue. I added the rest to the file and it still gives me the same

root@meet:~# curl -v http://localhost:8080/colibri/stats

  • Trying 127.0.0.1…
  • TCP_NODELAY set
  • Connected to localhost (127.0.0.1) port 8080 (#0)

GET /colibri/stats HTTP/1.1
Host: localhost:8080
User-Agent: curl/7.52.1
Accept: /

< HTTP/1.1 404 Not Found
< Content-Type: text/html; charset=ISO-8859-1
< Cache-Control: must-revalidate,no-cache,no-store
< Content-Length: 297
< Server: Jetty(9.2.21.v20170120)
<

Error 404 Not Found

HTTP ERROR 404

Problem accessing /colibri/stats. Reason:

    Not Found

Powered by Jetty://
* Curl_http_done: called premature == 0 * Connection #0 to host localhost left intact

It looks like the /colibri/stats is not found

This is the output of the full /etc/jitsi/videobridge/sip-communicator.properties

org.jitsi.videobridge.ENABLE_STATISTICS=true
org.jitsi.videobridge.STATISTICS_TRANSPORT=muc,colibri,rest
org.ice4j.ice.harvest.DISABLE_AWS_HARVESTER=true
org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-si-turnrelay.jitsi.net:443
org.jitsi.videobridge.rest.private.jetty.port=8080
org.jitsi.videobridge.rest.private.jetty.host=localhost
org.jitsi.videobridge.STATISTICS_INTERVAL=5000
org.jitsi.videobridge.xmpp.user.shard.HOSTNAME=localhost
org.jitsi.videobridge.xmpp.user.shard.DOMAIN=auth.xxx.xxx
org.jitsi.videobridge.xmpp.user.shard.USERNAME=jvb
org.jitsi.videobridge.xmpp.user.shard.PASSWORD=xxxxxxxx
org.jitsi.videobridge.xmpp.user.shard.MUC_JIDS=JvbBrewery@internal.auth.xxx.xxx
org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME=c4

where ?
you want to have

org.jitsi.videobridge.ENABLE_STATISTICS=true

in the sip-communicator.properties file and

JVB_OPTS="–apis=rest,"

in the config file.
Nothing more is needed. Unless you are not using a current software version - there are references to jetty in your config files, these are not needed anymore, if you are using current version drop this stuff.

on second thought,
org.jitsi.videobridge.STATISTICS_TRANSPORT=muc
is not needed for getting statistics, but for actually getting conferences to work it’s really useful :slight_smile: