»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.