Если ранее я добился, как снимать показания температуры 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 особенности установки:

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 - Настройка – Узлы сети – Создать узел сети

Создаю "Узел сети" Raspberry в Zabbix Server 4.4

И навешиваю («УЗЕЛ«) на него создаваемые элементы данных:

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

График из параметров: cpuTemp & cpuVoltage & gpuTemp & sdcardUsedPercentage.

Когда ресурсоемкое действие будет завершено, температура спадет и это будет отображено на графике.

В зависимости от нагрузки увеличивается температура и напряжение. А вот почему нужно поставить кулер (кстати он у меня есть).

Работает. Вот так правильнее – через агента. Уж в определенных случаях через запрос SSH без установки агента на хост, за которым хотим наблюдать. На этом моя заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.