Zabbix loadable C modules and Low-Level Discovery (LLD)
2019-05-04, 16:00–16:50, Room A

We will discuss how we implement Zabbix Low-Level Discovery directly from a C module and how the same C module is used to provide up-to-date information to Zabbix items.


The Zabbix monitoring system has a number of different methods by which it can obtain monitoring data from systems or things it knows nothing about, but it can use scripts or programs you configure it to run in order to obtain the data you are interested in. You are probably aware of User Parameters and External Checks, and we'll shortly recapitulate.

One very powerful but slightly more complicated method for obtaining external data is by using dynamically loadable C modules. We discuss what these are, how you create them, and how you can use this arguably most efficient method to provide monitoring data to Zabbix.

Low-level discovery provides a way to automatically create items, triggers, and graphs for different entities. For instance, Zabbix can automatically start monitoring file systems or network interfaces on your machine, without the need to create items for each file system or network interface manually.

Using a real-life practical example which we (OwnTracks) use to monitor vehicles issued with GPS trackers which end up communicating via MQTT, we will discuss how we implement Zabbix Low-Level Discovery directly from a C module and how the same C module is used to provide up-to-date information from the vehicles to Zabbix items. This basic principle can easily be adapted to provide similar functionality to Internet of Things (IoT) projects. While it helps if you can read a bit of C language code, if you cannot, we'll explain what's going on behind the scenes.

Jan-Piet Mens is an independent Unix/Linux consultant and sysadmin who's worked with Unix-systems since 1985.

JP does odd bits of coding and works extensively with the Domain Name System and as such, he authored the book Alternative DNS Servers as well as a variety of other technical publications. He contributed several modules and the documentation system to the Ansible project and dreamed up the Open Source (MQTT-based) OwnTracks project. JP blogs at https://jpmens.net