Customers can configure internal monitoring of their Media Bridges (MB) if the bridges are hosted at the customer site (on-prem).
The on-prem MB export operating system, JVM and application level metrics using the SpringBoot Actuators framework can be accessed here.
Metrics are exposed on the /actuator/metrics endpoint where the /metrics command will return the full list of metrics available.
Users can push all the metrics available to an influxdb instance:
Change the following in the application.properties file on the MB, then restart it.
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 provided below:
management.metrics.export.influx.user-name=fixme
management.metrics.export.influx.password=XXX
Once the application.properties file has been edited and the MB restarted, you can configure the endpoints you would like to monitor.
To obtain a list of all available metrics, run the following command on the MB:
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 (for example, 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 (for example, 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 following command:
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"