Network Statistics Dashboard using Grafana, Prometheus and OBS Websocket

Network Statistics Dashboard using Grafana, Prometheus and OBS Websocket

Tags
DockerGrafanaPrometheus

When operating a large network with real-time IP video delivery you have to optimize time-sensitive data to arrive within a specific timing window, otherwise data packets will get discarded causing glitches or visual issues in your video playback. In a large network, you may get sudden spikes of traffic when you have a large amount of devices physically gathered– that may impact your video delivery if you don’t have proper network segmenting and quality of service setup.

Open Broadcast Studio (a software encoder) has a feature that estimates network congestion and will dynamically reduce the bitrate at which the encoder streams the video– this allows the video to continue to pass smoothly at the expense of visual quality loss in the encoded video. This is an elegant solution to the otherwise messy operation of re-transmitting dropped or lost packets over TCP. Unfortunately, this can also cause issues if your network is congested inside your LAN before it even reaches the public internet OBS will begin to pre-maturely optimize the bitrate causing your video quality to drop based on the local network congestion.

I setup a Docker container with Grafana and Prometheus to receive real-time network statistics from our encoders and display it in a visualized network graph, allowing us to visualize the quality of video being delivered to viewers and monitor network events to see congestion visualized.

Real-time data from OBS showing stream stats being sent to a distribution proxy
Real-time data from OBS showing stream stats being sent to a distribution proxy