Zabbix – monitoring custom values

JustAMartin asked:

I have a Windows application (exposed through a WCF service) which needs to be monitored for some statistics (e.g. a graph of online users, a graph of pending documents etc.).

I am new to Zabbix, and the documentation does not contain detailed tutorials, so I’m not sure how to implement this. As I understand, Zabbix does not offer any means to extract numeric values from SOAP XML (please correct me if I’m wrong), hence I’ll have to develop a simple application which reads the needed values and somehow passes to Zabbix. There is no problem with an application, I can create it, but the question is – how do I pass the values to Zabbix and then display them as graphs?

From the information I could find, it seems I have two choices:

  1. write the needed values to a file and use Zabbix Windows Agent to
    periodically read the file(s) and send the values to Zabbix. Can I
    avoid the intermediate files altogether and configure the agent to
    retrieve the values directly from the return values of my custom

  2. trigger my application periodically and use zabbix_sender (I hope, the one included in the Zabbix Windows Agents package will work) to feed the value directly into Zabbix

Could someone explain which of the aforementioned choices should be preferred in an enterprise environment? Maybe there is some other, simpler way?
I would really appreciate some simple step-by-step instructions or a link to some tutorials.

My answer:

I presume you are reading or have read the Zabbix documentation. If you have not, you should keep it handy and refer to it.

First, Zabbix passive checks can only read one value at a time, so for performance reasons I’d use a custom written active check with zabbix_sender if you are going to be sending a lot of data. zabbix_sender can send as many values at a time as you have.

So as you can see from the zabbix_sender documentation, it simply accepts a plain text file with space-delimited values. It sounds like you can manage that part.

You pass a number of key-value pairs (e.g. myservice.onlineusers, myservice.pendingdocuments) along with their values.

On the Zabbix side, you’ll create a template for your application, add items to it corresponding to each statistic you’re monitoring, and then define graphs and triggers if you want to alert on any of them. The Zabbix documentation really does cover each of these in sufficient depth, though if it’s your first time through you may want to slow down and search more carefully. The 2.0 documentation was reorganized to make things easier to find, so you may want to use that even if you’re on a prior version of Zabbix; most things are still the same.

View the full question and answer on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.