Surveillance de la température du serveur à faire soi-même

Lorsque nous avons de nouveau appris l'échec du climatiseur dans la salle des serveurs par des rapports en colère de la surveillance du serveur intégré, une décision volontaire a été prise d'enseigner à Zabbix à surveiller la température dans la salle des serveurs. Prendre des mesures avant de répéter une situation similaire avant que la salle des serveurs ne se transforme en bain public.



La mise en œuvre est assez simple: le capteur de température est interrogé par le contrôleur via le bus 1 fil, le contrôleur lui-même est connecté à n'importe quel serveur disponible via USB et interrogé par la commande head -n1 / dev / cuaU, qui est écrite dans la configuration zabbix de l'agent comme suit:

UserParameter=usbtemp,head -n1 /dev/cuaU0 

Le choix d'un capteur avec une interface numérique est dû au fait que c'est une bonne réserve pour l'avenir d'ajouter une douzaine de capteurs supplémentaires au bus si vous avez besoin de surveiller la température de chaque rack séparément, par exemple. Le contrôleur lui-même est connecté via USB et afin de ne pas réinventer ses pilotes, il prétend être un émulateur série CDC ordinaire, c'est-à-dire un port COM virtuel ordinaire, et bien sûr, vous pouvez également utiliser la classe HID, car il est idéologiquement mieux adapté à tous ses rapports HID structurés pour interrogation de toutes sortes de capteurs. Mais néanmoins, j'ai décidé de m'entendre avec CDC pour plus de clarté et de facilité de mise en œuvre.

Ainsi, tout ce qui est nécessaire pour la mise en œuvre est: directement le capteur thermique DS18B20, un microcontrôleur avec un module USB matériel à bord, une paire de résistances, des condensateurs et un cordon USB. Le PIC16F1454 MK a été utilisé comme microcontrôleur qui implémente le pont 1 fil-USB, mais en général, le lecteur peut utiliser n'importe quel autre MK à son goût (en connectant quelques bibliothèques - 1 fil, USB-CDC), ou connecter un pont UART-USB externe comme CP2102. Je n'aime pas vraiment ces béquilles, j'ai donc préféré la solution sur une seule puce - j'ai pris le contrôleur le moins cher de l'USB, au moment de la création de l'appareil c'était PIC16F1454.



Le projet n'a pas utilisé de piles USB prêtes à l'emploi à partir de Microchip ou de tiers, au lieu de cela, elles ont utilisé une pile auto-écrite développée précédemment pour un autre projet. Cependant, je n'entrerai pas dans les détails de l'implémentation de ma bibliothèque USB dans cet article. Puisque travailler avec le bus USB dépasse le cadre de cet article et mérite un article séparé, voire une série d'articles. Ce que je pourrais éventuellement reprendre dans un proche avenir, à moins, bien sûr, que le lecteur ne s’intéresse à ce sujet.
Le circuit est très simple, donc la planche a été immédiatement divorcée dans la disposition du sprint, néanmoins je donne un dessin du circuit.



Le contrôleur ne prend pas en charge le chargeur de démarrage, vous pouvez donc le coudre uniquement via le programmateur à l'aide du connecteur ICSP. PICKIT2, par exemple, ou son clone fera l'affaire.

Un appareil correctement assemblé commence à fonctionner immédiatement après la mise sous tension et ne nécessite aucun réglage. Le périphérique ne nécessite pas de pilotes car il utilise la classe CDC standard, pour Windows 10 et FreeBSD, il est détecté immédiatement, pour Windows 7, vous devrez spécifier le fichier inf (voir l'archive de l'article), qui pointe explicitement vers le pilote usbser.sys. Sous d'autres systèmes d'exploitation, l'appareil n'a pas été testé. Lorsqu'il est connecté, il doit être défini comme / dev / cuaUx, sous FreeBSD, où x est le numéro logique du périphérique. En exécutant la commande #head -n1 / dev / cuaU0, vous pouvez vérifier que le capteur est correctement interrogé et que la température actuelle est affichée.



Sous Windows, vous pouvez utiliser n'importe quel programme de terminal pour vérifier, par exemple le mastic.



Si tout fonctionne correctement, vous pouvez continuer. Ensuite, créez un nouveau paramètre (élément) où, en tant que clé, enregistrez notre paramètre utilisateur spécifié dans la configuration de l'agent.



Eh bien, après cela, il ne reste plus qu'à créer un nouveau graphique à partir de ce paramètre. Et ajoutez un déclencheur par exemple à 28-30 degrés.

Dans la prochaine version, il est prévu d'ajouter la possibilité d'interroger plusieurs capteurs et d'afficher la température du capteur sélectionné sur l'écran de l'appareil lui-même. Archive avec des matériaux pour l'article.

Source: https://habr.com/ru/post/fr438836/


All Articles