跳至主要内容

博文

目前显示的是 六月, 2021的博文

利用Zabbix5.2新增的modbus get抓取台达环控的数据

公司机房的环控系统使用台达的InfraSuite Manager。  系统菜单中有snmp和modbus的protocol,但是工程师表示snmp暂时不支持,只能透过modbus获取数据。  上网搜索了一下modbus的相关资料,这个协议是工业监控用的,而且非常古老,常见的有modbus serial和modbus tcp。 前者使用串口通讯,后者使用网络通讯。 还好,台达的InfraSuite Manager支持modbus tcp协议,这样就无需新增硬件连接。 Zabbix从5.2开始,在新版zabbix agent2中新增了一条命令modbus[https://fossies.org/linux/zabbix/src/go/plugins/modbus/README.md],用来连接modbus协议。 有八个参数,分别是endpoint,slaveid,function,address,count,type,endianness和offset。 具体每个参数的详细定义,可以去连接中查看,这里就不废话了。 思路准备好后,开始配置服务。 在InfraSuite Manager上启用modbus tcp服务,并导出Modbus位置表。 导出成功会,会在InfraSuite Manager的根目录生成ModbusMappingInfo.html文件。 用浏览器打开会看到完整的监控项地址。 有了数据地址,就可以开始测试数据的抓取了。 在运行InfraSuite Manager的机器上安装5.2版的zabbix agent2,在./Zabbix Agent2/zabbix_agent2.conf中新增如下配置: Plugins.Modbus.Sessions.MB1.Endpoint=tcp://127.0.0.1:502 Plugins.Modbus.Sessions.MB1.SlaveID=1 Plugins.Modbus.Sessions.MB1.Timeout=3 其中SlaveID就是DeviceID。 配置好客户端后,在服务端上用zabbix_get命令测试是否可以抓取modbus数据库的数据。 zabbix_get -s 192.168.1.xx  -k modbus[] 之前说过,modbus有8个参数要传,分别是endpoint,slaveid,fun