自己动手进行服务器温度监控

当我们通过内置的服务器监控报告再次得知服务器机房中的空调出现故障时,我们做出了一个坚定的决定,教Zabbix监控服务器机房中的温度。 为了在重复出现类似情况时采取措施,在服务器机房变成浴室之前。



实现非常简单:控制器通过1wire总线对温度传感器进行轮询,控制器本身通过USB连接到任何可用的服务器,并通过head -n1 / dev / cuaU命令进行轮询,该命令在代理的zabbix配置中编写如下:

UserParameter=usbtemp,head -n1 /dev/cuaU0 

选择带有数字接口的传感器是由于这样的事实:例如,如果您需要分别监视每个机架的温度,则将来为总线添加更多传感器时,这是一个很好的储备。 控制器本身通过USB连接,并且为了不重蹈覆辙,它装作一个常规的CDC串行仿真器,即一个常规的虚拟COM端口,当然,您也可以使用HID类,因为从意识形态上讲,它更适合其所有结构化HID报告询问各种传感器。 但是尽管如此,我还是决定与CDC相处,以使其更加清晰和易于实施。

因此,实施所需的全部就是:直接使用DS18B20热传感器,板上带有硬件USB模块的微控制器,一对电阻器,电容器和USB线。 PIC16F1454 MK用作实现1wire-USB桥的微控制器,但通常读者可以使用自己的口味使用任何其他MK(通过连接几个库-1wire,USB-CDC),或连接外部UART-USB桥(如CP2102)。 我真的不喜欢这种拐杖,所以我更喜欢单芯片解决方案-在创建器件PIC16F1454时,我从USB那里买了最便宜的控制器。



该项目没有使用Microchip或第三方提供的现成USB堆栈,而是使用了先前为另一个项目开发的自写堆栈。 但是,在本文中,我不会详细介绍实现USB库的细节。 由于使用USB总线已超出了本文的讨论范围,因此值得单独撰写,甚至撰写一系列文章。 在不久的将来,我可能会讨论这个问题,除非读者对此主题感兴趣。
电路非常简单,因此电路板立即在sprint布局中离婚,尽管如此,我还是给出了电路图。



该控制器不支持引导加载程序,因此只能使用ICSP连接器通过编程器将其缝制。 例如,PICKIT2或它的克隆就可以。

正确组装的设备在通电后立即开始工作,不需要进行调整。 该设备不需要驱动程序,因为它使用标准的CDC类,对于Windows 10和FreeBSD,它会立即被检测到;对于Windows 7,您将需要指定inf文件(请参阅本文的存档),该文件明确指向usbser.sys驱动程序。 在其他操作系统下,该设备未经测试。 连接后,在FreeBSD下应将其定义为/ dev / cuaUx,其中x是设备的逻辑编号。 通过运行命令#head -n1 / dev / cuaU0,您可以验证传感器是否已正确轮询并显示了当前温度。



在Windows下,您可以使用任何终端程序进行检查,例如腻子。



如果一切正常,则可以继续。 接下来,创建一个新参数(项目),其中,作为键,注册在代理配置中指定的UserParameter。



好吧,此后仅需根据该参数创建一个新图表。 并添加一个触发器,例如在28-30度之间。

在下一版本中,计划增加轮询多个传感器并在设备本身的显示器上显示所选传感器的温度的功能。 将文章的资料存档

Source: https://habr.com/ru/post/zh-CN438836/


All Articles