1. 到https://share.zabbix.com/scada-iot-energy-home-automation-industrial-monitoring/modbus-loadable-module下载模板,并按照https://github.com/v-zhuravlev/libzbxmodbus指引,安装libzbxmodbus模块;注意指定enable-zabbix参数时,即使是zabbix3.2以上版本,也都指定为3.2;
2. 关键步骤:装载libzbxmodbus模块,按作者所说,此模块可装在zabbix的服务器端或agent端,经测试,安装在SERVER端后,使用简单检查取数据失败,故考虑安装在agent端。在这里要弄清一个概念,首先libzbxmodbus模块支持MODBUS的两种方式读取数据:串口(RTU)和网络(TCP),为方便起见我们采用TCP方式;其次这里我们通过TCP“读取”设备信息,往往并不是真正地读取设备,而大多是读取它的“网关”,这些网关通常是通过RS485与传感器相连,并负责将485信号与TCP信号互转;但是,大多数网关也只是个单纯的转换设备,zabbix server将其视为一台终端,但它本身并不能安装zabbix agent程序,甚至也不支持snmp协议(虽然在网上看到意大利出产一款支持zabbix的modbus转换器,但国内还没有看到有卖),故这时要再安排一台PC机或使用zabbix 服务器本身的agent再来充做这些网关的“agent”。
3. 装载:装载的过程很简单:在agentd.conf中添加“LoadModulePath = /etc/zabbix/lib”与“LoadModule = libzbxmodbus.so”,再重启agent就可以了;
4. 模拟传感器:找一台WINDOWS机器(要关闭防火墙或设置进出站规则),安装modbus slave模拟器,具体过程不赘述,安装完成后启动程序,配置为TCP方式,并设置几个寄存器的值为自动递增;
5. 在zabbix server上测试,./zabbix_get -s 192.168.53.188 -k’modbus_read[192.168.54.113,1,1,3]’
6. 到web页面添加监控项,键值为“modbus_read[192.168.54.113,1,1,3]”,类型为“zabbix agnt”或者“Zabbix Agent (active)”,返回值根据具体情况为数字或文本型
7. 关于一次取多项返回值的办法,请参考github上相关页面说明。