【zabbix实现动环监控 一】 项目介绍及前期准备

该文档的适用对象为:

对zabbix有了解的人员,如还未安装部署过zabbix,请参考官方文档或以下文档学习

基于Centos8+Nginx+php+postgresql14+timescaledb安装zabbix6.0

Grafana 安装

Zabbix 监控windows服务器

zabbix4.4邮箱、钉钉报警

【zabbix实现动环监控 系列】

【zabbix实现动环监控 二】 烟雾温湿度

【zabbix实现动环监控 三】 漏水监控

【zabbix实现动环监控 四】 普通空调监控

【zabbix实现动环监控 五】 UPS电源监控

背景

公司一共3个机房,但是由于前期建设投入不足,未实施动环监控。又遇上工厂限电,机房偶尔也会停电,这样需要检测UPS主机状态,后备电源的可用时长,不仅如此,由于未采用精密空调,采用3匹的家用空调,来电无法自启,机房温度甚至达到过40度,因此动环监控迫在眉睫。

一、动环监控概述

​ 动环监控全称动力环境监控,可以对机房的动力、环境、消防安全、门禁录像等信息进行实时监控记录,并可以使用短信、邮件、钉钉、微信等媒介进行告警,可以提高数据的准确性、实时性,简化运维人员的工作,而不必每天去机房点检各种信息。

动力:市电、电源、蓄电池、UPS、发电机等 环境:温湿度、烟雾、漏水、门禁、视频等 监控:遥测、遥信、遥控、遥调

image-20220823082743986

二、厂商动环解决方案

咨询了3个动环监控厂商,方案均大同小异,更多的差异在于系统的便捷性与dashboard

dashboard展示如下:

image-20220823081406930

image-20220823081645731

image-20220823081430097

看起来确实是领导喜欢的样子,但是价格也不便宜

项目报价:

报价1

image-20220823081906016

报价2

image-20220823081934798

报价3

image-20220823082032990

厂商能提供一套完整的动环监控方案,并有dashboard看板展示,但是购买一套完整的动环监控系统对小公司来说也不便宜,如果还需要厂商上门安装,则费用更多。

毕竟动环监控不属于核心业务,有则锦上添花,无也没啥,老板不重视,所以自己动手做也纯属无奈。

三、zabbix动环解决方案

​ 由于公司预算有限,打算采用zabbix作为动环监控主系统,购买一些温湿度、烟雾、漏水、空调监控、ups等传感器收集数据,并通过串口服务器进行数据推送至zabbix进行收集,再通过Grafana进行dashboard展示。

整体设备清单如下(1个机房):

设备 价格 备注
4串口服务器 400 收集传感器数据
12V供电 155 传感器供电
烟雾温湿度传感器 195
漏水检测传感器 180
普通空调远程遥控/监控 249 支持开机自启、双机轮询、开关机状态检测
UPS SNMP卡 1238 UPS远程监控
总计 2417 京东价

一个机房仅需要2000+,就可以完成基本的动环监控功能,相比于厂商的方案,能为公司省下不少钱(实际工作中,最好还是能交给集成商就交给集成商,他们较专业,且有原厂技术支持,不要把锅留给自己)

效果如下

UPS监控

image-20220823084636346

温湿度

image-20220823084940403

环境监测

image-20220823084745705

四、动环监控方案架构

1.逻辑架构

image-20220823091853801

2.zabbix版本要求

zabbix 需要5.2版本以上

具体安装参考基于Centos8+Nginx+php+postgresql14+timescaledb安装zabbix6.0

image-20220823092324258

客户端需要安装zabbix agent2,才可以使用modbus协议

客户端下载地址(windows),linux agent2直接yum或者源码编译安装即可

Download Zabbix agents

image-20220823093218068

3.zabbix modbus协议格式

找一台主机安装zabbix agent2,添加到zabbix监控中,就可以使用modbus协议抓取数据。

这里采用zabbix server中安装zabbix agent2进行数据抓取。

image-20220823114753703

image-20220823114813817

就可以使用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

以烟雾温湿度传感器为例:

在淘宝找了一家温湿度传感器,查看介绍页面,找到设备地址与寄存器地址

image-20220823115910654

该传感器对应到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服务器

image-20220823155329940

​ 当然这样串口连接也有些麻烦,所以有些厂家的动环监控主机,不仅集成了监控系统,还可以直接采用RJ45的网口形式,只要采用网线的线序做好水晶头,插入到对应的端口即可,同时该端口还具备POE供电,大大简化部署操作。

如澳天的动环监控主机,有兴趣(预算)可以了解下

image-20220823111618676

image-20220823155529766

另一种是没有内置监控系统的串口服务器,如ZLAN串口服务器

image-20220823113601781

2.12V供电设备

由于传感器需要供电,为了方便部署,采用12V统一供电设备,价格也比较便宜

image-20220823133320912

3.网线线序

image-20220823133752219

在使用网线作为485串口数据传输介质时候,采用以上的规范进行实施。

即:

白橙/橙 RS+/RS-
白蓝/蓝 12V+
白棕/棕 12V-

如图,实施中均采用此线序规范

传感器端

image-20220823111013515

串口服务器端

image-20220823111117732

这样可以实现一根网线部署,方便快捷。

六、总结

该篇介绍了基于zabbix的动环监控的整体建设思路,包含硬件选型(串口服务器、传感器、供电设备),modbus.get协议的使用以及实施的注意事项。 后面将对每个传感器的实施部署,进行详细介绍。