Let's see what Softvelum team has to show from Q2 of 2021.
Before moving to our features and updates, check Video Delivery Landscape of 2021 created and maintained by Divitel, we are excited to see Softvelum there.
Also take a look at our latest Secure your account in 3 easy steps article showing how you can use users management, two-factor authentication and cloud server backup to make sure WMSPanel is secured from multiple directions.
Nimble Streamer
A number of updates about our software media server were released.
Nimble Advertizer is now able to serve per-session ads using your own session handler. It allows making per-session ads insertion for each individual user by using customer-side session handler. You can also now get per-session statistics to accumulate ads insertion metrics for advertisers' confidence. Read this article to learn more.
Nimble DVR now has SCTE-35 support. Just enable "Keep SCTE-35 markers" option to allow recording SCTE-35 markers from incoming stream into DVR. Once HLS DVR is played, those markers are streamed along with the content.
KLV metadata is now supported in Nimble Streamer, read this article for more details.
SRT: we've updated libsrt to the latest 1.4.3 version for Nimble Streamer SRT package. You can now use custom parameters local_ip and local_port in Push mode. Read our main SRT setup article to see other details.
Larix Grove URL and QR code can be generated in Nimble Streamer / Live streams settings under Global, Applications and Interfaces tabs to make RTMP and RTSP ingest, and also under and MPEGTS In tab for SRT and RIST. This way you can easily test your Nimble Streamer publishing settings with Larix Broadcaster even easier.
Zabbix: last but not least, we've released templates and configs for Zabbix monitoring of Nimble Streamer and SRT streams. System administrators can now add their media server to their Zabbix to keep tracking live streaming parameters of Nimble instances as well as SRT-specific stats.
We've also added peak daily connections as part of daily stats in WMSPanel.
WMSPanel now shows NVidia GPU stats and average RAM cache in each server details.
Image overlays are now available in Larix Broadcaster. Take a look at our video tutorial showing overlays in Larix for iOS. The same update has been released for Larix Broadcaster for Android.
We've also introduced stand-by mode in Larix Broadcaster. When the stream hasn't been started, just long tap on Start, this will start stream in pause mode, waiting to start with the camera image. You may check if your stream is fine and a separate set of overlays can be mapped onto stand-by. Once the scene is all set, just tap the button to start.
A continuous monitoring is needed if you want to ensure the correct functioning of any server. Getting basic metrics such as RAM, CPU or bandwidth usage helps rapidly responding to performance issues.
We’d like to show a way for our customers to add Nimble Streamer server-specific metrics as well as SRT streams statistics to an open-source Zabbix monitoring system. This will allow you to keep extended metrics in your monitoring system, which sometimes are not even available in WMSPanel, like RAM cache status for certain periods of time.
SRT metrics will also be helpful not only for stream health checks but also for analysis of how this new protocol works for your environment.
TLDR: You can find Zabbix templates and agent configs for Nimble Streamer general and SRT monitoring in this GitHub repo.
1. Monitoring features and metrics
We provide two Zabbix templates:
General server metrics
SRT metrics
Each template is based on certain calls of Nimble Streamer native API which we'll describe in later sections.
The first TemplateNimbleServer.yaml in our github collects Nimble Streamer server statistics, which are obtained via /manage/server_status method of Nimble Streamer native API. This template includes some graphs for the RAMCache and FileCache monitoring.
The second TemplateNimbleSRT.yaml on our github is made for monitoring the SRT streams statistics using /manage/srt_sender_stats and /manage/srt_receiver_stats API methods respectively. It uses Low Level Zabbix’s Discovery (LLD) to dynamically discover incoming and outgoing SRT streams metrics. For each connection (either sender or receiver) an Application with detailed statistics is created. Brief description is available if you move a mouse over [?] icon.
Please note, that the Nimble native API doesn’t send full scope of session metrics from SRT lib, but you can find full list at SRT library docs page as a reference.
Nimble Streamer returns the following list of values by API call that are also used in the Nimble SRT template:
SRT Receiver/Sender Window Flow
SRT Receiver/Sender Window Flight
SRT Receiver/Sender Window Congestion
SRT Receiver/Sender Total Packets Received
SRT Receiver/Sender Total Packets Lost
SRT Receiver/Sender Total Packets Dropped
SRT Receiver/Sender Total Bytes Received
SRT Receiver/Sender Status
SRT Receiver/Sender Session Time
SRT Receiver/Sender RTT
SRT Receiver/Sender Retry Count
SRT Receiver/Sender Rate
SRT Receiver/Sender Packets Belated
SRT Receiver/Sender NAKs Sent
SRT Receiver/Sender Estimated mbpsMaxBandwidth
SRT Receiver/Sender Estimated mbpsBandwidth
SRT Receiver/Sender bytesLost
SRT Receiver/Sender bytesDropped
At the moment we don't have any SRT-specific Graphs or Triggers or Screens with the data we gather using these templates, but we'll probably add some improvements in future versions. We also have some plans on extending Nimble API capabilities to show more metrics and protocols, let us know if you're interested.
1.3 NVidia GPU monitoring
If you have NVidia GPU you can gather its metrics in Zabbix via Nimble’s Native API /manage/server_status method. We provide a Zabbix NVidia template and related config that relies on it to gather statistics. For temperature monitoring, the nvidia-smi utility is used, so make sure you can run it successfully from the console. Nimble Server NVidia template is actually the same, but with the addition of NVidia GPU discovery rules. To install it, follow the same steps and prerequisites as for Nimble Server Template.
Here are examples of stats.
1.4 Pre-requisites
The templates that we provide are made using Zabbix version 5.2.6, but the latest version of Zabbix should work fine too.
Notice that we used Ubuntu Linux 20.04 for Nimble Streamer server instance and setup details are provided for that OS. There should not be any issues with any Linux distro if you change package manager commands and repo names.
We didn’t check the provided templates with Nimble Streamer and Zabbix Agent running on Windows but it should also work as soon as you're able to install and run some releavant version of jq and cURL on it. Contact us if you succeed using this monitoring method for Windows version of Nimble.
We also assume that you already have the Zabbix server installed. If not, please find setup details on Zabbix's comprehensive documentation web pages. Zabbix provides many installation choices. The virtual appliance works best for us but you may choose the one that best suits your environment. If you have specific issues with it, ask Zabbix support or the Zabbix community forum.
2. Link Templates and Gather Data
Here are the steps you need to complete in order to add Nimble-specific metrics to your Zabbix server:
Enable Nimble Streamer HTTP API for the server instance which you want to monitor
Install cURL if it is not yet installed
Import provided Templates to your Zabbix Server
Install Zabbix Agent to your Nimble server
Update Zabbix Agent configs to make templates work
Add Nimble Streamer host to Zabbix server
Apply Nimble Streamer Templates to a specific host
Here are the details of each step.
2.1 Enable Nimble Streamer API
To enable Nimble native API, add ‘management_listen_interfaces = *’ to /etc/nimble/nimble.conf file. We have used the default port 8082 to make Zabbix Agent receive metrics from Nimble. Please follow this documentation page. to find out more about enabling Nimble API.
2.2. Install cURL
Make sure that cURL is installed on Nimble server. It can be used to make sure API is set up fine and it will be used further.
2.3 Import templates
Next, import Nimble Templates into Zabbix.
Download template files from respective GitHub repo to some location. From the Zabbix’s pop-up menu, go to Configuration -> Templates and click the Import button at the right top of the Templates page.
At the Import page, make sure that the checkboxes look like on the following screenshot and choose the template file to import.
Complete importing process by clicking the Import button. "Imported successfully" message should appear at the top of the page.
Navigate to the Templates page again, type "Nimble" at Name field and click Apply to set filter for Nimble templates only. You will notice two Nimble templates available.
2.4 Install Zabbix agent
You need to install Zabbix Agent on your Nimble Streamer server to send your server’s metrics to Zabbix Server. The easiest method is to install the agent using official Zabbix repositories by executing the following commands:
The "jq" JSON parser is needed to process data from Nimble API responses.
2.5 Update Zabbix agent configs
Now complete the setup of Zabbix Agent by editing the /etc/zabbix/zabbix.conf file with your favorite editor to specify a Zabbix Server IP or Domain name via"Server=" option.
Please also add hostname of the server at "Hostname=" option and use the same name as Host name field when adding a host to Zabbix.
Check if your firewall allows incoming connection to port 10050 and start Zabbix Agent:
sudo systemctl start zabbix-agent
2.6 Add Nimble Streamer host to Zabbix
Switch to Zabbix web interface and add your Nimble Streamer server by clicking Create Host at Configuration -> Hosts page as usual.
Select Interface type as Agent, and specify your Nimble server’s IP or domain name to connect to. Use Nimble group name and the same Host name as you defined in zabbix.conf file.
2.7 Apply Nimble Streamer Templates to a host
At the Templates tab select Host group Nimble and select Templates.
Click Add button after selecting Templates to add host to Zabbix. The added host will appear at the top of the page.
If you did everything correctly, you will notice availability status (ZBX) will become green after a few moments:
You may get the following error if the hostname in zabbix_agent.conf file is not matching the hostname you’ve entered when adding Hosts:
The setup is finished. Check if the metrics are being received by Zabbix at Monitoring -> Latest data menu.
Now you can use this data to compare with data received by other templates or methods, create unique Graphs to add to the Dashboard or custom Screens, and add some Triggers to track if your server’s health goes down.
That's it. We'll continue improving our Zabbix monitoring templates and configs, stay tuned for updates and contact us if you have any questions or suggestions.