Zabbix Integration
Wavefront provides a data adapter for Zabbix that allows you to easily send data to Wavefront. If you are already using Zabbix for monitoring, then you can use our adapter to send the same metrics to Wavefront without any configuration changes to your existing Zabbix environment. The Zabbix Database Adapter polls your Zabbix database at a configurable interval and sends new metrics to Wavefront.
In addition to setting up the metrics flow, this integration also installs a dashboard. Here’s a screenshot of the dashboard displaying Zabbix metrics.
Zabbix Setup
Step 1. Install the Wavefront Proxy
If you do not have a Wavefront proxy installed on your network, install a proxy.
Step 2. Install MySQL Connector Library Adapter
- CentOS
sudo yum install mysql-connector-python
- Ubuntu
sudo pip3 install mysql-connector-python
If the package is not found, see Installing Connector/Python from a Binary Distribution.
Step 3. Download the Zabbix Adapter Script
Download the Zabbix Adapter script.
Step 4. Configure the Adapter Script Parameters
The SEND_TO_WF
parameter is set to False
which causes the script to print the values it reads to standard out rather than sending to Wavefront. Once you configure the Wavefront proxy you should change this parameter to True
and restart the script.
Set WAVEFRONT_PROXY_HOST
to the address of the proxy you installed in Step 1.
Modify the DB_
properties as appropriate for your Zabbix database. The user credentials that you provide can be of a DB user with read-only permission or SELECT
privilege. Other options can be left with their defaults.
The script pulls up to LIMIT
values from your history and history_uint tables every POLL_INTERVAL
seconds, set to 60 seconds by default. If you modify the LIMIT
parameter, it limits the reads from both tables.
Metrics in Wavefront are strings separated by a . character, e.g. system.cpu.load.percpu.avg1
. The ZABBIX_PREFIX
property allows you to prefix all of the metrics that you retrieve from Zabbix with a common string. We recommend leaving this prefix in place so that metrics collected from other sources are distinguished from Zabbix.
Step 5. Run the Zabbix Adapter
- Make the script executable:
chmod +x zabbixDBAdapter.py
- Run the script:
./zabbixDBAdapter.py
. Stop the script by pressing Control+C.
The script saves the latest clock interval that it has processed in the files last_history_clock.hist
and last_historyuint_clock.hist
in the same working directory as the script is run from. The initial clock time is “now”. If you want to start retrieving values from some point in the past, create those files and enter your preferred start time.
Metrics
Metric Name | Description |
---|---|
zabbix.agent.ping | Zabbix agent ping shown as a unit. |
zabbix.kernel.maxfiles | Maximum number of opened files supported by OS. |
zabbix.kernel.maxproc | Maximum number of processes supported by OS. |
zabbix.net.if.in.ens160 | Incoming traffic statistics on network interface. |
zabbix.net.if.out.ens160 | Outgoing traffic statistics on network interface. |
zabbix.preprocessing_queue | Zabbix preprocessing queue. |
zabbix.proc.num | Number of processes. |
zabbix.proc.num.run | Number of running processes. |
zabbix.process.alert.manager.avg.busy | Average percentage of time alert manager processes have been busy in the last minute. |
zabbix.process.alerter.avg.busy | Average percentage of time alerter processes have been busy in the last minute. |
zabbix.process.configuration.syncer.avg.busy | Average percentage of time configuration syncer processes have been busy in the last minute. |
zabbix.process.discoverer.avg.busy | Average percentage of time discoverer processes have been busy in the last minute. |
zabbix.process.escalator.avg.busy | Average percentage of time escalator processes have been busy in the last minute. |
zabbix.process.history.syncer.avg.busy | Average percentage of time history syncer processes have been busy in the last minute. |
zabbix.process.housekeeper.avg.busy | Average percentage of time housekeeper processes have been busy in the last minute. |
zabbix.process.http.poller.avg.busy | Average percentage of time http poller processes have been busy in the last minute. |
zabbix.process.icmp.pinger.avg.busy | Average percentage of time icmp pinger processes have been busy in the last minute. |
zabbix.process.poller.avg.busy | Average percentage of time poller processes have been busy in the last minute. |
zabbix.process.preprocessing.manager.avg.busy | Average percentage of time preprocessing manager processes have been busy in the last minute. |
zabbix.process.preprocessing.worker.avg.busy | Average percentage of time preprocessing worker processes have been busy in the last minute. |
zabbix.process.proxy.poller.avg.busy | Average percentage of time proxy poller processes have been busy in the last minute |
zabbix.process.self-monitoring.avg.busy | Average percentage of time self-monitoring processes have been busy in the last minute. |
zabbix.process.task.manager.avg.busy | Average percentage of time task manager processes have been busy in the last minute. |
zabbix.process.timer.avg.busy | Average percentage of time timer processes have been busy in the last minute. |
zabbix.process.trapper.avg.busy | Average percentage of time trapper processes have been busy in the last minute. |
zabbix.process.unreachable.poller.avg.busy | Average percentage of time unreachable poller processes have been busy in the last minute. |
zabbix.queue | Number of monitored items in the queue which are delayed at least by 6 seconds. |
zabbix.queue.10m | Number of monitored items in the queue which are delayed at least by 10 minutes. |
zabbix.rcache.buffer.pused | Availability statistics of Zabbix configuration cache. Percentage of used buffer. |
zabbix.system.boottime | System boot time. |
zabbix.system.cpu.intr | Device interrupts per second. |
zabbix.system.cpu.load.percpu.avg1 | Average CPU load per 1m. |
zabbix.system.cpu.load.percpu.avg15 | Average CPU load per 15m. |
zabbix.system.cpu.load.percpu.avg5 | Average CPU load per 5m. |
zabbix.system.cpu.switches | Context switches per second. |
zabbix.system.cpu.util.guest | Guest time (time spent running a virtual CPU for a guest operating system). |
zabbix.system.cpu.util.guest_nice | Time spent running a niced guest (virtual CPU for guest operating systems under the control of the Linux kernel). |
zabbix.system.cpu.util.idle | The time the CPU has spent doing nothing. |
zabbix.system.cpu.util.interrupt | The amount of time the CPU has been servicing hardware interrupts. |
zabbix.system.cpu.util.iowait | The amount of time the CPU has been waiting for I/O to complete. |
zabbix.system.cpu.util.nice | The time the CPU has spent running users’ processes that have been niced. |
zabbix.system.cpu.util.softirq | The amount of time the CPU has been servicing software interrupts. |
zabbix.system.cpu.util.steal | The amount of CPU ‘stolen’ from this virtual machine by the hypervisor for other tasks (such as running another virtual machine). |
zabbix.system.cpu.util.system | The time the CPU has spent running the kernel and its processes. |
zabbix.system.cpu.util.user | The time the CPU has spent running users’ processes that are not niced. |
zabbix.system.localtime | System local time of the host. |
zabbix.system.swap.size.free | The free space of swap volume/file in bytes. |
zabbix.system.swap.size.pfree | The free space of swap volume/file in percent. |
zabbix.system.swap.size.total | The total space of swap volume/file in bytes. |
zabbix.system.uptime | System uptime in N days, hh:mm:ss format. |
zabbix.system.users.num | Number of users who are currently logged in. |
zabbix.vcache.buffer.pused | Percentage of free buffer value cache. |
zabbix.vcache.cache.hits | Number of value cache hits. |
zabbix.vcache.cache.misses | Number of value cache misses. |
zabbix.vcache.cache.mode | Value cache operating mode. |
zabbix.vfs.file.cksum.etc.passwd | Checksum of /etc/passwd. |
zabbix.vfs.fs.inode.pfree | Percentage of free filesystem inodes. |
zabbix.vfs.fs.size.free | Free filesystem storage. |
zabbix.vfs.fs.size.pfree | Percentage of free filesystem storage. |
zabbix.vfs.fs.size.total | Total size of the filesystem storage. |
zabbix.vfs.fs.size.used | Used filesystem storage. |
zabbix.vm.memory.size.available | Available memory. In Linux, available = free + buffers + cache. On other platforms calculation may vary. |
zabbix.vm.memory.size.total | Total memory in Bytes. |
zabbix.wcache.history.pused | Percentage of used history buffer. |
zabbix.wcache.index.pused | Percentage of used history index buffer. |
zabbix.wcache.trend.pused | Percentage of used trend buffer. |
zabbix.wcache.values | Total number of values processed by Zabbix server or Zabbix proxy, except unsupported items. |
zabbix.wcache.values.float | Number of processed float values. |
zabbix.wcache.values.log | Number of processed log values. |
zabbix.wcache.values.not.supported | Number of times item processing resulted in item becoming unsupported or keeping that state. |
zabbix.wcache.values.str | Number of processed character/string values. |
zabbix.wcache.values.text | Number of processed text values. |
zabbix.wcache.values.uint | Number of processed unsigned integer values. |