Мониторим Raspberry через MQTT

На самом деле эта инструкция подойдёт не только для Raspberry, но и для любого *nix хоста, при некоторой доработке напильником.

Основная задача: мониторить состояние хоста, например в HomeAssistant. В нем конечно есть встроенный мониторинг, но он работает только локально, а если вдруг захочется иметь данные и с других хостов, то можно пойти моим путем.

Дано: несколько raspberry плат, занимающихся своими делами где-то по разным углам квартиры, брокер mosquitto, запущенный в докере на одной из малин.

Пишем скрипт sys-mon-mqtt.sh

#!/bin/sh

HOSTNAME=$(/bin/hostname)
TOTAL_MEM=$(/usr/bin/free -mtl | /usr/bin/tail -1 | /usr/bin/awk '{print $2}')
USED_MEM=$(/usr/bin/free -mtl | /usr/bin/tail -1 | /usr/bin/awk '{print $3}')
FREE_MEM=$(/usr/bin/free -mtl | /usr/bin/tail -1 | /usr/bin/awk '{print $4}')
DISK_USAGE=$(/bin/df -h | /bin/sed -n '2p' | /usr/bin/awk '{print $5}' | /usr/bin/cut -d "%" -f 1)
CPU_TEMP=$(/bin/cat /sys/class/thermal/thermal_zone0/temp)
CPU_TEMP=$((CPU_TEMP/1000))
CPU_USAGE=$(/bin/cat /proc/loadavg | /usr/bin/awk '{print $2}')

mqtthost='имя или адрес машины с брокером'
mqttport='1883'
mqttuser='пользователь под кем подключаемся'
mqttpass='пароль пользователя'
mqtttopic='raspberry'


/usr/bin/mosquitto_pub -h $mqtthost -p $mqttport -u $mqttuser -P $mqttpass -t $mqtttopic/$HOSTNAME/total_memory -m $TOTAL_MEM
/usr/bin/mosquitto_pub -h $mqtthost -p $mqttport -u $mqttuser -P $mqttpass -t $mqtttopic/$HOSTNAME/used_memory -m $USED_MEM
/usr/bin/mosquitto_pub -h $mqtthost -p $mqttport -u $mqttuser -P $mqttpass -t $mqtttopic/$HOSTNAME/free_memory -m $FREE_MEM

/usr/bin/mosquitto_pub -h $mqtthost -p $mqttport -u $mqttuser -P $mqttpass -t $mqtttopic/$HOSTNAME/disk_usage -m $DISK_USAGE

/usr/bin/mosquitto_pub -h $mqtthost -p $mqttport -u $mqttuser -P $mqttpass -t $mqtttopic/$HOSTNAME/cpu_temp -m $CPU_TEMP

/usr/bin/mosquitto_pub -h $mqtthost -p $mqttport -u $mqttuser -P $mqttpass -t $mqtttopic/$HOSTNAME/cpu_usage -m $CPU_USAGE

Делаем его исполняемым

chmod 755 ./sys-mon-mqtt.sh

Запускаем

./sys-mon-mqtt.sh

Если в консоль не вылезло никаких ошибок, то назначаем его к выполнению через cron, например на каждую минуту и благополучно наблюдаем статистику в брокере. После чего уже не сложно сделать отдельные панельки в НА, например такие

При желании скрипт всегда можно доработать, добавив в него какие-то свои данные, по аналогии.

Осталось только раскидать этот скрипт по всем малинам, которые хочется мониторить и назначить его на исполнение через cron на всех них. Все данные складываются в ветке raspberry/имя сервера.

Важно! В скрипте открытым текстом лежит пара логин/пароль для подключения к вашему MQTT брокеру, поэтому не следует его оставлять на виду или на общедоступных шарах.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *