Introduction ============ Jitsi Videobridge exports statistics/metrics as key-value pairs in three ways: in a custom JSON format, as Prometheus metrics and as periodic reports published in an XMPP MUC. # REST The statistics are available through the `/colibri/stats` endpoint on the [private REST interface](rest.md) (if it has been enabled) in JSON format: ```json { "key": "value" } ``` Note that the report itself is generated periodically and a cached version is returned. The period defaults to 5 seconds and can be configured with the `videobridge.stats.interval` property in `jvb.conf`. # Prometheus Metrics are exposed in a Prometheus/openmetrics format at `/metrics` on the private HTTP interface. Not all metrics are currently available in this format, and improving this is a work in progress. ```commandline # Query prometheus metrics in openmetrics format curl 0:8080/metrics -H 'Accept: application/openmetrics-text' # Query prometheus metrics in 004 format curl 0:8080/metrics -H 'Accept: text/plain; version=0.0.4;' # Query prometheus metrics in a JSON key-value format curl 0:8080/metrics -H 'Accept: application/json' ``` Note: Conference size distribution metrics (by total endpoints, by audio senders, and by video senders) are available as Prometheus histograms (`conferences_by_size`, `conferences_by_audio_sender`, `conferences_by_video_sender`) but are not exposed via the JSON `/colibri/stats` endpoint. # XMPP MUC The statistics can also be published periodically via XMPP (which allows jicofo to monitor a set of bridges and perform load balancing, or allows an application to monitor the MUC and collect metrics from multiple bridges). In this case the key-value pairs are represented in XML format with a `stats` element like this: ```xml ``` By default, statistics are pushed every 5 seconds and this can be configured in `jvb.conf` with the [`videobridge.apis.xmpp-client.presence-interval`](https://github.com/jitsi/jitsi-videobridge/blob/master/jvb/src/main/resources/reference.conf#L65) property. # Supported metrics Below is a non-exhaustive list of currently supported metrics. In the descriptions "current" means an instantaneous value (when the report was generated), and "total" means a cumulative value since the application was started. * `bit_rate_download` - the current incoming bitrate (RTP) in kilobits per second. * `bit_rate_upload` - the current outgoing bitrate (RTP) in kilobits per second. * `conferences` - The current number of conferences. * `current_timestamp` - the UTC time at which the report was generated. * `dtls_failed_endpoints` - the total number of endpoints which failed to establish a DTLS connection. * `endpoints` - the current number of endpoints, including `octo` endpoints. * `endpoints_sending_audio` - current number of endpoints sending (non-silence) audio. * `endpoints_sending_video` - current number of endpoints sending video. * `endpoints_with_spurious_remb` - total number of endpoints which have sent an RTCP REMB packet when REMB was not signaled. * `graceful_shutdown` - whether jitsi-videobridge is currently in graceful shutdown mode (hosting existing conferences, but not accepting new ones). * `inactive_conferences` - current number of conferences in which no endpoints are sending audio nor video. Note that this includes conferences which are currently using a peer-to-peer transport. * `inactive_endpoints` - current number of endpoints in inactive conferences (see `inactive_conferences`). * `largest_conference` - the size of the current largest conference (counting all endpoints, including `octo` endpoints which are connected to a different jitsi-videobridge instance) * `local_active_endpoints` - the current number of local endpoints (not `octo`) which are in an active conference. This includes endpoints which are not sending audio or video, but are in an active conference (i.e. they are receive-only). * `local_endpoints` - the current number of local (non-`octo`) endpoints. * `num_eps_oversending` - current number of endpoints to which we are oversending. * `octo_conferences` - current number of conferences in which `octo` is enabled. * `octo_endpoints` - current number of `octo` endpoints (connected to remove jitsi-videobridge instances). * `octo_receive_bitrate` - current incoming bitrate on the `octo` channel (combined for all conferences) in bits per second. * `octo_receive_packet_rate` - current incoming packet rate on the `octo` channel (combined for all conferences) in packets per second. * `octo_send_bitrate` - current outgoing bitrate on the `octo` channel (combined for all conferences) in bits per second. * `octo_send_packet_rate` - current outgoing packet rate on the `octo` channel (combined for all conferences) in packets per second. * `p2p_conferences` - current number of peer-to-peer conferences. These are conferences of size 2 in which no endpoint is sending audio not video. Presumably the endpoints are using a peer-to-peer transport at this time. * `packet_rate_download` - current RTP incoming packet rate in packets per second. * `packet_rate_upload` - current RTP outgoing packet rate in packets per second. * `participants` - current number of endpoints, including `octo` endpoints. Deprecated. * `preemptive_kfr_sent` - total number of preemptive keyframe requests sent. * `receive_only_endpoints` - current number of endpoints which are not sending audio nor video. * `region` - preconfigured region used for bridge selection in jicofo. * `relay_id` - encodes the `octo` address of this bridge. * `rtt_aggregate` - round-trip-time measured via RTCP averaged over all local endpoints with a valid RTT measurement in milliseconds. * `stress_level` - current stress level on the bridge, with 0 indicating no load and 1 indicating the load is at full capacity (though values >1 are permitted). * `threads` - current number of JVM threads. * `total_bytes_received` - total number of bytes received in RTP. * `total_bytes_received_octo` - total number of bytes received on the `octo` channel. * `total_bytes_sent` - total number of bytes sent in RTP. * `total_bytes_sent_octo` - total number of bytes sent on the `octo` channel. * `total_colibri_web_socket_messages_received` - total number of messages received on a Colibri "bridge channel" messages received on a WebSocket. * `total_colibri_web_socket_messages_sent` - total number of messages sent over a Colibri "bridge channel" messages sent over a WebSocket. * `total_conference_seconds` - total number of conference-seconds served (only updates once a conference expires). * `total_conferences_completed` - total number of conferences completed. * `total_conferences_created` - total number of conferences created. * `total_data_channel_messages_received` - total number of Colibri "bridge channel" messages received on SCTP data channels. * `total_data_channel_messages_sent` - total number of Colibri "bridge channel" messages sent over SCTP data channels. * `total_dominant_speaker_changes` - total number of times the dominant speaker in a conference changed. * `total_failed_conferences` - total number of conferences in which no endpoints succeeded to establish an ICE connection. * `total_ice_failed` - total number of endpoints which failed to establish an ICE connection. * `total_ice_succeeded` - total number of endpoints which successfully established an ICE connection. * `total_ice_succeeded_relayed` - total number of endpoints which connected through a TURN relay (currently broken). * `total_packets_dropped_octo` - total number of packets dropped on the `octo` channel. * `total_packets_received` - total number of RTP packets received. * `total_packets_received_octo` - total number packets received on the `octo` channel. * `total_packets_sent` - total number of RTP packets sent. * `total_packets_sent_octo` - total number packets sent over the `octo` channel. * `total_partially_failed_conferences` - total number of conferences in which at least one endpoint failed to establish an ICE connection. * `total_participants` - total number of endpoints created. * `version` - the version of jitsi-videobridge. * `videochannels` - current number of endpoints with a video channel (i.e. which support receiving video). Deprecated.