Symphony Meetings on-prem Media Bridge monitoring

Customers can configure internal monitoring of their Media Bridges if the bridges are hosted at the customer site. The On-Premises Media Bridges export Operating System (OS), JVM and application level metrics using the SpringBoot Actuators framework located here.

Metrics are exposed on the /actuator/metrics endpoint where /metrics will return the full list of metrics available. Users can push all the metrics available to an influxdb instance. To do this, change the following in the application.properties file on the Media bridge, then restart the bridge:

management.metrics.export.influx.enabled=false
management.metrics.export.influx.db=fixme
management.metrics.export.influx.uri=fixme

Optional configuration changes to set a password for influxdb are below:

management.metrics.export.influx.user-name=fixme
management.metrics.export.influx.password=XXX

Once the application.properties file has been edited and the Media bridge restarted, the user can configure the endpoints they would like to monitor.

To obtain a list of all available metrics, run the command below on the media bridge:


curl -k https://localhost:4812/actuator/metrics | python -m json.tool

The available metrics are displayed below:

 

/metrics/jvb.conferences: The current number of conferences

 

/metrics/jvb.participants: The current number of participants

 

/metrics/jvb.audio.channels: The current number of audio channels

 

/metrics/jvb.video.streams: An estimate of the number of current video streams forwarded by the bridge

 

/metrics/jvb.bit.rate.download: The total incoming bitrate for the video bridge in kilobits per second

 

/metrics/jvb.bit.rate.upload: The total outgoing bitrate for the video bridge in kilobits per second

 

/metrics/jvb.packet.rate.download: The total incoming packet rate for the video bridge in packets per second

 

/metrics/jvb.packet.rate.upload: The total outgoing packet rate for the video bridge in packets per second

 

/metrics/jvb.total.tcp.connections: The total number of ICE sessions established over TCP

 

/metrics/jvb.total.udp.connections: The total number of ICE sessions established over UDP

 

/metrics/jvb.jitter.aggregate: An average value of the jitter calculated for incoming and outgoing streams in milliseconds

 

/metrics/jvb.total.channels: The total number of channels created on the bridge

 

/metrics/jvb.total.memory: The total memory of the machine in megabytes

 

/metrics/jvb.rtt.aggregate: An average value of the RTT across all streams in milliseconds

 

/metrics/jvb.largest.conference: The number of participants in the largest conference currently hosted on the bridge

 

/metrics/jvb.total.data.channel.messages.sent: The total number of messages sent through data channels

 

/metrics/jvb.total.data.channel.messages.received: The total number of messages received through data channels

 

/metrics/jvb.total.no.transport.channels: The total number of channels with no transport activity

 

/metrics/jvb.total.no.payload.channels: The total number of channels with no payload activity

 

/metrics/jvb.used.memory: Total used memory on the machine (i.e. what a 'free' query would return) in megabytes (10^6 B)

 

/metrics/jvb.threads: The number of Java threads the video bridge is using

 

/metrics/jvb.colibri.websocket.messages.received: The total number of messages received through COLIBRI web sockets

 

/metrics/jvb.colibri.websocket.messages.sent: The total number of messages sent through COLIBRI web sockets

 

/metrics/jvb.upload.loss.rate: The fraction of lost outgoing RTP packets. This is based on incoming RTCP Receiver Reports and an attempt to subtract the fraction of packets that were not sent (i.e. were lost before they reached the bridge). Furthermore, this is averaged over all streams of all users as opposed to all packets, so it is not correctly weighted. This is not accurate, but may be a useful metric nonetheless

 

/metrics/jvb.download.loss.rate: The fraction of lost incoming RTP packets. This is based on RTP sequence numbers and is relatively accurate

 

/metrics/jvb.total.conference.seconds: The sum of the lengths of all completed conferences in seconds

 

/metrics/jvb.completed.conferences: The total number of completed conferences on the bridge

 

/metrics/jvb.failed.conferences: The total number of failed conferences on the bridge. A conference is marked as failed when all of its channels have failed. A channel is marked as failed if it has had no payload activity

 

/metrics/jvb.partially.failed.conferences: The total number of partially failed conferences on the bridge. A conference is marked as partially failed when some of its channels have failed. A channel is marked as failed if it has had no payload activity


For example, to obtain the value of jvb.memory.max, run the command below:

curl -k https://localhost:4812/actuator/metrics/jvb.memory.max | python -m json.tool

In this case, it returns a value of 4447010814.0:

mbrHOME]# curl -k https://localhost:4812/actuator/metrics/jvm.memory.max | python -m json.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 518 0 518 0 0 3354 0 --:--:-- --:--:-- --:--:-- 3363
{
"availableTags": [
{
"tag": "area",
"values": [
"heap",
"nonheap"
]
},
{
"tag": "host",
"values": [
"mbr"
]
},
{
"tag": "id",
"values": [
"Survivor Space",
"Compressed Class Space",
"Eden Space",
"Metaspace",
"Code Cache",
"Tenured Gen"
]
},
{
"tag": "region",
"values": [
"tag"
]
},
{
"tag": "env",
"values": [
"on-prem"
]
},
{
"tag": "deployment",
"values": [
"fixme"
]
}
],
"baseUnit": "bytes",
"description": "The maximum amount of memory in bytes that can be used for memory management",
"measurements": [
{
"statistic": "VALUE",
"value": 4447010814.0
}
],
"name": "jvm.memory.max"