Wowza metrics monitoring with JMX and Zabbix

wowza-logo_1024

Wowza API can promote to track its data just in time. But by default all we have is a special monitoring webpage at the Wowza Streaming Engine Manager. Configuration of your own monitoring would be the best solution for streaming infrastructure control. By means of JMX console we can get as much data as possible for Java application. By means of Zabbix we can visualize all data we’ve got from JMX.


Here I’ll explain the entire process of Wowza additional monitoring configuration. In practice you need a Wowza instance with configured Zabbix-agent and one Zabbix server. There are plethora of opportunities to monitor anything. I just stopped on number of current connections with Wowza instance. It’s one of the most useful metrics and also pretty lookable as an example.

Enable JMX on Wowza Server


Generally this step is well described at my previous post about schedule streaming. Doesn’t make sense to repeat that. If you still have JMX disabled – check instructions described within this post. As a result you should have log messages with JMX access address and similar stuff.

Get available data from JMX


This step was explained at the same article as JMX configuration. The same thing, repetition seems awkward here. Result should be output with all provided JMX beans. But for our example we just need one.
In addition, there is no big difference which JMX client to use. I prefer cmdline-jmxclient, but you can use whatever you want. If it can serve desired metrics from Wowza beans.

Configure Zabbix-agent on Wowza server


1. Get a metric value from JMX console at first. For our example we just run this command:

/usr/local/WowzaStreamingEngine/java/bin/java -jar /usr/local/WowzaStreamingEngine/java/bin/cmdline-jmxclient-0.10.3.jar admin:admin localhost:8085 WowzaStreamingEngine:name=Connections current 2>&1 | awk '{print $6}'

It’s going to filter console output to show only value

2. Set up user parameter at the Zabbix agent config (/etc/zabbix/zabbix_agentd.conf) for your metric. At first make sure user parameters option is on

UnsafeUserParameters=1

3. Add new parameter at the bottom of file.

UserParameter=wowza.currentViewers,/usr/local/WowzaStreamingEngine/java/bin/java -jar /usr/local/WowzaStreamingEngine/java/bin/cmdline-jmxclient-0.10.3.jar admin:admin localhost:8085 WowzaStreamingEngine:name=Connections current 2>&1 | awk '{print $6}'

4. Restart Zabbix agent on the Wowza server to enable your changes at last. Now you have a streaming metric which is going to be shipped to connected Zabbix server.

Configure Zabbix on web panel


1. Add new item to your Wowza hosts (Configuration -> Hosts -> Items of desired host). Configure stored time as you want. Choose subject application and data type (cause you could monitor even string metrics).

u_a3_7gcfla

2. Add new graph to your Wowza hosts (Configuration -> Hosts -> Graphs of desired host). Point there name of new item. Customize graphic properties for your needs.

mj8a6w80ab0

3. Enjoy your work.

tflxz0v7o0o

Don’t pay a close attention on my graph. It works fine, but I tried this operation in the testing server which don’t serve a public streaming. And because of this showed graph is almost died.
Entire system deployment could take some time and it’s not easy to automate this. But it’s reliable and simple solution for full media streaming servers farm tracking. Very comfortable if infrastructure is constituted from many Wowza instances must to be monitored.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s