开源动环监控——使用zabbix 6.0 的agent2监控精密空调等modbus设备

从zabbix6.0开始,modbus成为了官方的默认集成,modbus协议广泛的用于工业设备。 本文前提:zabbix6.0服务器,zabbix 6.0 agent2主机,一个运行modbus slave软件(一款modbus仿真软件,本例中用其输出modbus tcp协议)的windows主机 本文物理连接及协议参考:SCA精密空调机组通信协议 借助串口服务器,将modbus rtu协议转换为modbus tcp协议。

1.检查agent2主机的zabbix agent2的配置文件

1
/etc/zabbix/zabbix_agent2.conf

默认应有

1
Include=/etc/zabbix/zabbix_agent2.d/*.conf

2.编辑agent的配置文件或插件配置文件

1
vim /etc/zabbix/zabbix_agent2.d/plugins.d/modbus.conf

定义以下参数:

1
2
3
Plugins.Modbus.Sessions.<SessionName>.Endpoint
Plugins.Modbus.Sessions.<SessionName>.SlaveID
Plugins.Modbus.Timeout

举例(slaveip换成运行modbus slave的windows客户端主机ip)

1
2
3
Plugins.Modbus.Sessions.MB1.Endpoint=tcp://slaveip:502
Plugins.Modbus.Sessions.MB1.SlaveID=1
Plugins.Modbus.Sessions.MB1.Timeout=3

3.zabbix服务器添加此agent2主机,同时自定义modbus监控项 官方参数

1
modbus.get[endpoint,<slaveid>,<function>,<address>,<count>,<type>,<endianness>,<offset>]

以添加上述slave id 1的modbus slave为例,在agent2主机中创建监控项。 SCA空调机组通信协议为例

1
2
3
4
#监控项
PAC1-modbus-slaveid1-addr40001-开关机
#键值
modbus.get[MB1,2,3,0,1,uint16,be,0]
1
2
3
4
#监控项
PAC1-modbus-slaveid1-addr40003-设定回风温度
#键值
modbus.get[MB1,2,3,0,1,uint16,be,1]
1
2
3
4
#监控项
PAC1-modbus-slaveid1-addr40004-系统状态
#键值
modbus.get[MB1,2,3,0,1,uint16,be,3]
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#监控项
#PAC1-modbus-slaveid1-addr40004-系统状态-bitx-功能X
PAC1-modbus-slaveid1-addr40004-系统状态-bit00-开机
#类型
可计算的
#键值
PAC1-modbus-slaveid1-addr40004-bit00
#公式(判断Bit x是否为1,按位与2的x次幂,然后按位右移x位)
#公式(判断Bit00是否为1,按位与2的0次幂,然后按位右移0位)
#bitrshift(bitand(last(//modbus.get[MB1,2,3,0,1,uint16,be,3]),power(2,x)),x)
bitrshift(bitand(last(//modbus.get[MB1,2,3,0,1,uint16,be,3]),power(2,0)),0)
1
2
3
4
5
6
7
8
#监控项
PAC1-modbus-slaveid1-addr40004-系统状态-bit03-制冷
#类型
可计算的
#键值
PAC1-modbus-slaveid1-addr40004-bit03
#公式(判断Bit03是否为1,按位与2的3次幂,然后按位右移3位)
bitrshift(bitand(last(//modbus.get[MB1,2,3,0,1,uint16,be,3]),power(2,3)),3)
1
2
3
4
#监控项,单位:小时(16比特位向左移动4位+运行时间低位向右移动12位)
PAC1-modbus40016-风机运行时间高位
#键值
modbus.get[MB1,2,3,0,1,uint16,be,15]
1
2
3
4
#监控项,单位:秒(低12bit位)
PAC1-modbus40017-风机运行时间低位
#键值
modbus.get[MB1,2,3,0,1,uint16,be,16]
1
2
3
4
5
6
7
8
#监控项,单位:秒,上述两项相加
PAC1-modbus40016-风机运行时间
#类型
可计算的
#键值
modbus-slave1-addr40016
#公式
bitor(bitlshift(last(//modbus.get[MB1,1,3,0,1,uint16,be,15]),4),bitrshift(last(//modbus.get[MB1,1,3,0,1,uint16,be,16]),12))*3600+bitand(last(//modbus.get[MB1,1,3,0,1,uint16,be,16]),4095)
使用 Hugo 构建
主题 StackJimmy 设计