【zabbix实现动环监控 一】 项目介绍及前期准备
该文档的适用对象为:
对zabbix有了解的人员,如还未安装部署过zabbix,请参考官方文档或以下文档学习
基于Centos8+Nginx+php+postgresql14+timescaledb安装zabbix6.0
【zabbix实现动环监控 系列】
背景
公司一共3个机房,但是由于前期建设投入不足,未实施动环监控。又遇上工厂限电,机房偶尔也会停电,这样需要检测UPS主机状态,后备电源的可用时长,不仅如此,由于未采用精密空调,采用3匹的家用空调,来电无法自启,机房温度甚至达到过40度,因此动环监控迫在眉睫。
一、动环监控概述
动环监控全称动力环境监控,可以对机房的动力、环境、消防安全、门禁录像等信息进行实时监控记录,并可以使用短信、邮件、钉钉、微信等媒介进行告警,可以提高数据的准确性、实时性,简化运维人员的工作,而不必每天去机房点检各种信息。
动力:市电、电源、蓄电池、UPS、发电机等 环境:温湿度、烟雾、漏水、门禁、视频等 监控:遥测、遥信、遥控、遥调
二、厂商动环解决方案
咨询了3个动环监控厂商,方案均大同小异,更多的差异在于系统的便捷性与dashboard
dashboard展示如下:
看起来确实是领导喜欢的样子,但是价格也不便宜
项目报价:
报价1
报价2
报价3
厂商能提供一套完整的动环监控方案,并有dashboard看板展示,但是购买一套完整的动环监控系统对小公司来说也不便宜,如果还需要厂商上门安装,则费用更多。
毕竟动环监控不属于核心业务,有则锦上添花,无也没啥,老板不重视,所以自己动手做也纯属无奈。
三、zabbix动环解决方案
由于公司预算有限,打算采用zabbix作为动环监控主系统,购买一些温湿度、烟雾、漏水、空调监控、ups等传感器收集数据,并通过串口服务器进行数据推送至zabbix进行收集,再通过Grafana进行dashboard展示。
整体设备清单如下(1个机房):
设备 | 价格 | 备注 |
---|---|---|
4串口服务器 | 400 | 收集传感器数据 |
12V供电 | 155 | 传感器供电 |
烟雾温湿度传感器 | 195 | |
漏水检测传感器 | 180 | |
普通空调远程遥控/监控 | 249 | 支持开机自启、双机轮询、开关机状态检测 |
UPS SNMP卡 | 1238 | UPS远程监控 |
总计 | 2417 | 京东价 |
一个机房仅需要2000+,就可以完成基本的动环监控功能,相比于厂商的方案,能为公司省下不少钱(实际工作中,最好还是能交给集成商就交给集成商,他们较专业,且有原厂技术支持,不要把锅留给自己)
效果如下:
UPS监控
温湿度
环境监测
四、动环监控方案架构
1.逻辑架构
2.zabbix版本要求
zabbix 需要5.2版本以上
具体安装参考基于Centos8+Nginx+php+postgresql14+timescaledb安装zabbix6.0
客户端需要安装zabbix agent2,才可以使用modbus协议
客户端下载地址(windows),linux agent2直接yum或者源码编译安装即可
3.zabbix modbus协议格式
找一台主机安装zabbix agent2,添加到zabbix监控中,就可以使用modbus协议抓取数据。
这里采用zabbix server中安装zabbix agent2进行数据抓取。
就可以使用modbus.get进行数据抓取了
modbus.get
格式如下:
modbus.get[endpoint,<slaveid>,<function>,<address>,<count>,<type>,<endianness>,<offset>]
官方参数介绍
参数 | 描述 | 默认 | 示例 |
---|---|---|---|
endpoint | 端点的协议和地址,定义为protocol://connection_string 可能的协议值: rtu, ascii (Agent 2 only), tcp 连接字符串格式: with tcp - address:port 带串行线: rtu, ascii - port_name:speed:params where 'speed' - 1200, 9600 etc 'params' - data bits (5,6,7 or 8), parity (n,e or o for none/even/odd), stop bits (1 or 2) |
协议: none rtu/ascii protocol: port_name: none speed: 115200 params: 8n1 tcp protocol: address: none port: 502 | tcp://192.168.6.1:511 tcp://192.168.6.2 tcp://[::1]:511 tcp://::1 tcp://localhost:511 tcp://localhost rtu://COM1:9600:8n ascii://COM2:1200:7o2 rtu://ttyS0:9600 ascii://ttyS1 |
slave id | 它打算用于的设备的 Modbus 地址 (1 to 247), 参考 MODBUS Messaging Implementation Guide (page 23) tcp 设备(不是 GW)将忽略该字段 | serial: 1 tcp: 255 (0xFF) | 2 |
function | 支持的函数的空值或值: 1 - Read Coil, 2 - Read Discrete Input, 3 - Read Holding Registers, 4 - Read Input Registers | empty | 3 |
address | 第一个注册表、线圈或输入的地址。 如果 'function' 为空,则 'address' 应该在以下范围内: Coil - 00001 - 09999 Discrete input - 10001 - 19999 Input register - 30001 - 39999 Holding register - 40001 - 49999 如果“function”不为空,“address”字段将从 0 到 65535 并且不加修改地使用 (PDU) | empty function: 00001 non-empty function: 0 | 9999 |
count | 将从设备读取的已排序“类型”计数,其中: for Coil or Discrete input the 'type' = 1 bit for other cases: (count*type)/2 = real count of registers for reading If 'offset' is not 0, the value will be added to 'real count' Acceptable range for 'real count' is 1:65535 | 1 | 2 |
type | 数据类型: 用于读取线圈和读取离散输入 - bit 用于读取保持寄存器和读取输入寄存器: int8 - 8bit uint8 - 8bit (unsigned) int16 - 16bit uint16 - 16bit (unsigned) int32 - 32bit uint32 - 32bit (unsigned) float - 32bit uint64 - 64bit (unsigned) double - 64bit | bit uint16 | uint64 |
endianness | Endianness type: be - Big Endian le - Little Endian mbe - Mid-Big Endian mle - Mid-Little Endian Limitations: for 1 bit - be for 8 bits - be,le for 16 bits - be,le | be | le |
offset | 寄存器数量,从'address'开始,其结果将被丢弃。 每个寄存器的大小为16bit(需要支持不支持随机读访问的设备). | 4 |
以烟雾温湿度传感器为例:
在淘宝找了一家温湿度传感器,查看介绍页面,找到设备地址与寄存器地址
该传感器对应到modbus.get
的键值就是
#192.168.0.60为串口服务器IP,23为该串口的端口号,1位启始地址位,3为功能码,最后一位为寄存器地址位
#烟雾
modbus.get[tcp://192.168.0.60:23,1,3,11]
#温度
modbus.get[tcp://192.168.0.60:23,1,3,01]
#湿度
modbus.get[tcp://192.168.0.60:23,1,3,02]
五、硬件介绍
1.串口服务器
传感器的数据为串口信号,串口服务器可以将485串口的数据转为网络的方式传至zabbix服务器
当然这样串口连接也有些麻烦,所以有些厂家的动环监控主机,不仅集成了监控系统,还可以直接采用RJ45的网口形式,只要采用网线的线序做好水晶头,插入到对应的端口即可,同时该端口还具备POE供电,大大简化部署操作。
如澳天的动环监控主机,有兴趣(预算)可以了解下
另一种是没有内置监控系统的串口服务器,如ZLAN串口服务器
2.12V供电设备
由于传感器需要供电,为了方便部署,采用12V统一供电设备,价格也比较便宜
3.网线线序
在使用网线作为485串口数据传输介质时候,采用以上的规范进行实施。
即:
白橙/橙 | RS+/RS- |
---|---|
白蓝/蓝 | 12V+ |
白棕/棕 | 12V- |
如图,实施中均采用此线序规范
传感器端
串口服务器端
这样可以实现一根网线部署,方便快捷。
六、总结
该篇介绍了基于zabbix的动环监控的整体建设思路,包含硬件选型(串口服务器、传感器、供电设备),modbus.get
协议的使用以及实施的注意事项。
后面将对每个传感器的实施部署,进行详细介绍。