跳至主要内容

利用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,function,address,count,type,endianness和offset。
endpoint:这里是local,tcp:127.0.0.1:502,因为在配置文件中已经配置了,这里就填MB1。
slaveid:因为配置文件已经有了,这里空着。
function:完整的数据库地址中包含这个数值,不用填写,也空着。
address:这是关键,要抓取数据的数据库地址。这里有个坑,InfraSuite Manager的实际地址和导出的表单不一致,实际地址在导出列表地址后面+1。比如我要抓取出风口温度,那这里填写40001。
count:要获取多少数据,默认是1,如果你要获取40001和往后的多个地址的数据,填写你需要的数量,就会得到一个数组。这里我们是单个获取,所以填1。
type:这里根据modbus数据类型进行填写,台达InfraSuite Manager的modbus所有栏位都是浮点数据,这里填float。
endianness:这里也是根据modbus数据类型的编码进行填写,台达InfraSuite Manager的modbus所有栏位都是编码都是Big endian,这里填be。
offset:这个参数用来获取目标地址往前或是往后的数据,如果抓取目标地址的数据,这里不用填。
那么我们这里的抓取数据的格式就是modbus.get[MB1,,,40001,1,float,be,]。

用zabbix get进行验证

测试确认能正常获取数据后,就可以创建模板,来抓取想要的数据了。

评论

此博客中的热门博文

PVE安装Windows 11虚拟机 step by step

Win 11已经发布有两周多了,因为引进了tpm机制,只支持较新的设备安装,对于虚拟机的支持不高。 目前各个虚拟化平台针对win 11已经有对应的方案,今天来介绍一下PVE 7.0安装win 11虚拟机。 提前下载win11和virtio win 11的镜像。 win 11镜像下载这里就不说了,很多途径。 virtio的镜像在这里下载https://github.com/virtio-win/virtio-win-pkg-scripts,下载最新的virtio win iso。 新建和配置虚拟机 点击新建虚拟机 给虚拟机起名,然后下一步。 选择加载win 11镜像文件,系统类型选择windows。 系统配置这里: bios选择OVMF(UEFI);机器选择q35;勾选TPM,并选择TPM版本为v2.0;然后存储的位置选择同一个存储。 硬盘设备选择VirtIO,磁盘大小选择64G,32G其实也可以,但是微软要求最低64G。 设置CPU和内存,微软要求最低2核8G,这里我们给4核8G,因为是单节点,所以CPU类型勾选host。 配置网卡信息后继续。 这里不要勾选自动创建后启动,确认配置信息后点击完成。 到新建的虚拟机这里,新建光驱。 选择下载的驱动镜像,点击创建。 完成后点击启动。 启动后进入windows安装界面,这里照一般操作进行。 到安装类型这里选择 自定义安装。 到选择安装位置这里会无法显示硬盘信息,因为缺少驱动,点击加载驱动程序。 然后点击浏览。 选择驱动镜像下的amd64下的w10文件夹,点击确定。 加载驱动后磁盘控制器能够显示,点击下一页。 选中显示的磁盘后点击下一步进行安装。 文件复制完后会重启几次。 安装完成后会启动第一次配置界面。 输入账户信息后进行系统配置。 配置完成后进入桌面。 在设备管理器中有一些设备未能正确识别。 进入驱动镜像,运行virtio-win-ge-x64安装文件安装驱动。 安装完成后,所有设备都能正确识别。 至此win11虚拟机安装完成。

搭建cups服务,并提供云打印服务。

Google的云打印服务已经在2020年底结束,所以不得不寻找新的解决方案。 之前家里使用一台windows虚拟机内置的打印服务,使用windows单单作为一台打印服务器实在是太过浪费。 因为家里有ubuntu的虚拟机跑plex服务,计划在ubuntu上运行打印服务。 linux上最为成熟的打印服务就是cups了,然后在软路由上搭建open vpn,即可实现任何地方打印文档。 一.cups服务安装。     首先安装cups服务     sudo apt install cups     修改配置文件     sudo  cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.bak     sudo nano  /etc/cups/cupsd.conf     新增监听地址     Listen 192.168.1.x:631      BrowseAllow all      BrowseAddress All      <Location />            Order allow,deny            Allow all      </Location>      <Location /admin>          Order allow,deny          Allow all     </Location>      <Location /admin/conf>          Order allow,deny          Allow all     </Location>     然后用浏览器访问https://192.168.1.x:631/admin     添加打印机     add printer     选择local printer里本地的打印机 然后点击下一步     勾选share this printer然后点击下一步     在model里寻找打印机型号,如果没有需要安装打印机     我的打印机是epson入门型号l310,需要手动安装。     去epson的网站https://download.ebz.epson.net/dsc/search/01/search/searchModule寻

安装部署JumpServer

 最近遭遇一起云主机因安全防护措施不到位被安装挖矿程序的情况。 为提高云主机的安全性和考虑搭建一台跳板机来访问云主机以提高安全性。 目前主流且还在维护的JumpServer是比较好的解决方案,搭建一台JumpServer做测试。 这里使用ubuntu 20.04 lts作为OS。 安装操作系统后先修改软件仓库为国内163源。 sudo cp /etc/apt/sources.list    /etc/apt/sources.list.bak sudo nano /etc/apt/sources.list 注释掉原来的内容 添加网易源 #网易源 deb http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse 执行更新 sudo apt-get update && sud