Если ранее я добился, как снимать показания температуры CPU & GPU
через Zabbix Server 4.4
посредством обычного SSH
соединения, то сейчас я хочу доработать схему сбора метрик, таких как:
CPU Temp
GPU Temp
CPU voltage
SD card Total
SD card free
SD card used
SD card used (percentage)
И использовать буду Zabbix Agent
в качестве источника съема информации.
Агент слушает: 10050/tcp
Сервер слушает: 10051/tcp
Шаг №1: Развернут сервис мониторинга Zabbix Server 4.4 on Ubuntu 18.04 Server amd64
Шаг №2: На миникомпьютер установлена ОС Raspbian Buster
(если используется OC Raspbian Stretch
, то в заметке при добавлении репозитария посредством которого производится установка Zabbix Agent
версии 4.4
изменяем buster
на stretch
). Ниже для Stretch & Buster
особенности установки:
- Как установить Zabbix 4.4 агент на Raspbian Stretch
- Как установить Zabbix 4.4 агент на Raspberry Pi 3 Model B (
Buster
)
pi@raspberrypi:~ $ lscpu Architecture: armv7l Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 Model: 4 Model name: ARMv7 Processor rev 4 (v7l) CPU max MHz: 1200.0000 CPU min MHz: 600.0000 BogoMIPS: 38.40 Flags: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 pi@raspberrypi:~ $
Шаг №3: В настройках Zabbix
агента на миникомпьютере прописываю:
pi@raspberrypi:~ $ sudo nano /etc/zabbix/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 EnableRemoteCommands=1 LogRemoteCommands=1 Server=127.0.0.1,172.33.33.117 ServerActive=127.0.0.1,172.33.33.117 Hostname=Zabbix server Include=/etc/zabbix/zabbix_agentd.d/*.conf UnsafeUserParameters=1 pi@raspberrypi:~ $ sudo nano /etc/zabbix/zabbix_agentd.d/raspberry.conf UserParameter=rpi.gpuTemp,/opt/vc/bin/vcgencmd measure_temp|cut -c 6-9 UserParameter=rpi.cpuVoltage,/opt/vc/bin/vcgencmd measure_volts | tr -d "volt=" | tr -d "V" #UserParameter=rpi.cpuTemp,cat /sys/class/thermal/thermal_zone0/temp | sed -e 's/\(..\)\(.*\)/\1.\2/' UserParameter=rpi.cpuTemp,cat /sys/class/thermal/thermal_zone0/temp | cut -c 1-2 UserParameter=rpi.sdcardTotal,df -B1 | grep root | tr -s " " " " | cut -d " " -f 2 UserParameter=rpi.sdcardFree,df -B1 | grep root | tr -s " " " " | cut -d " " -f 4 UserParameter=rpi.sdcardUsed,df -B1 | grep root | tr -s " " " " | cut -d " " -f 3 UserParameter=rpi.sdcardUsedPercentage,df -B1 | grep root | tr -s " " " " | cut -d " " -f 5 | cut -d "%" -f 1
После не забываем сохранить внесенные изменения и перезапустить Zabbix Agent:
pi@raspberrypi:~ $ sudo systemctl restart zabbix-agent
Шаг №4: Проверяю на миникомпьютере что могу получать информацию по созданным ключам:
pi@raspberrypi:~ $ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t rpi.cpuVoltage rpi.cpuVoltage [t|1.2563] pi@raspberrypi:~ $ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t rpi.gpuTemp rpi.gpuTemp [t|55.8] pi@raspberrypi:~ $ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t rpi.cpuTemp rpi.cpuTemp [t|55] pi@raspberrypi:~ $ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t rpi.sdcardTotal rpi.sdcardTotal [t|30498942976] pi@raspberrypi:~ $
Информация снимается.
Шаг №5: В Web
-интерфейсе Zabbix 4.4
http://IP&DNS/zabbix - user&pass - Настройка – Узлы сети – Создать узел сети
И навешиваю («УЗЕЛ«) на него создаваемые элементы данных:
rpi.sdcardFree | Числовое(целое положительное) |
rpi.sdcardTotal | Числовое(целое положительное) |
rpi.sdcardUsed | Числовое(целое положительное) |
rpi.sdcardUsedPercentage | Числовое(целое положительное) |
rpi.cpuTemp | Числовое(С плавающей точкой) |
rpi.cpuVoltage | Числовое(С плавающей точкой) |
rpi.gpuTemp | Числовое(С плавающей точкой) |
Шаг №6: Проверяю, что могу с сервера Zabbix
извлекать информацию с агента миникомпьютера:
ekzorchik@srv-zabbix:~$ apt-cache search zabbix-get zabbix-get - Zabbix network monitoring solution - get ekzorchik@srv-zabbix:~$ sudo apt-get install -y zabbix-get ekzorchik@srv-zabbix:~$ zabbix_get -s 172.33.33.10 -k rpi.cpuTemp 55 ekzorchik@srv-zabbix:~$ zabbix_get -s 172.33.33.10 -k rpi.cpuVoltage CHI iniiaizain faied ekzorchik@srv-zabbix:~$ zabbix_get -s 172.33.33.10 -k rpi.cpuClock VCHI initialization failed
Ошибки двух команд выше лечатся добавлением пользователя Zabbix
в группу Video
на Raspberry Pi 3 Model B
операционной системы Raspbian Buster
pi@raspberrypi:~ $ cat /etc/passwd | grep zabbix zabbix:x:109:114::/var/lib/zabbix/:/usr/sbin/nologin pi@raspberrypi:~ $ sudo usermod -aG video zabbix pi@raspberrypi:~ $ sudo reboot
И только после его я могу через Zabbix
-агент с сервера Zabbix
снимать показания задействовав ключ из файла UserParameters
на микросервере Raspberry Pi 3 Model B:
ekzorchik@srv-zabbix:~$ zabbix_get -s 172.33.33.10 -k rpi.cpuVoltage 1.2000 ekzorchik@srv-zabbix:~$
Теперь ошибки нет.
Шаг №7: Формирую график из параметров: cpuTemp & cpuVoltage & gpuTemp & sdcardUsedPercentage.
Можно сделать текст нагрузки:
pi@raspberrypi:~ $ nproc 4 pi@raspberrypi:~ $ sudo apt-get install -y stress pi@raspberrypi:~ $ stress --cpu 4 --timeout 60
Когда ресурсоемкое действие будет завершено, температура спадет и это будет отображено на графике.
В зависимости от нагрузки увеличивается температура и напряжение. А вот почему нужно поставить кулер (кстати он у меня есть).
Работает. Вот так правильнее – через агента. Уж в определенных случаях через запрос SSH без установки агента на хост, за которым хотим наблюдать. На этом моя заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.