Задача: Нужно поставить на контроль сам миникомпьютер Raspberry Pi 3 Model B+, а контроль — это контроль температуры процессора и видеочипа. Пока это для начала. В процессе работы будут сформированы наработанные требования.

Т.к. мой миникомпьютер это лишь один из блоков который взаимодействует с реле и находится в неотапливаемом помещении зимой, а летом подвержен солнечному теплу, то нужно чтобы система мониторинга уведомляла меня и вела статистику температуры. А видя ее я смогу отследить, а возможно и модернизировать условия расположения миникомпьютера. Ну пока как-то так.

В роли системы мониторинга будет использоваться Zabbix 4.4 на Ubuntu 18.04 Server которая развернута по заметке: Разбор установки Zabbix 4.4 на Ubuntu 18.04 Server , затем выполнена русификация.

Кстати, такое я уже делал: «Мониторинг температуры платы Raspberry»

Исходные данные:

  • srv-zabbix → 172.33.33.117
  • raspberry → 172.33.33.10

Шаг №1: Произведена базовая настройка Raspbian Buster on Raspberry Pi 3 Model B по заметке. Также действия справедливы  и к Raspbian Stretch которая может быть на операционная системы для Raspberry Pi 3 Model B.

Шаг №2: Подключаюсь по SSH к миникомпьютеру Raspberry Pi 3 Model B

Чтобы получить температуру процессора:

pi@raspberrypi:~ $ cpu="$(</sys/class/thermal/thermal_zone0/temp)"

pi@raspberrypi:~ $ echo "$((cpu/1000))"

48

Чтобы получить температуру видеочипа:

pi@raspberrypi:~ $ vcgencmd measure_temp

temp=48.9'C

Шаг №3: Т.к. я буду взаимодействовать от Zabbix сервера c миникомпьютером осью которого является Raspbian Stretch (or Buster), то извлекать данные буду через подключение по SSH на основе указания логина и пароля, а не публичного ключа. Об этом тоже нужно поговорить, но после того, как заработает первое.

На системе, где работает Zabbix иницианизируем подключение строкой на съем температуры через bash строку:

ekzorchik@srv-zabbix:~$ sudo apt-get install sshpass -y

либо же скопировать публичный ключ SSH с системы, где сервис Zabbix на Raspberry

ekzorchik@srv-zabbix:~$ /usr/bin/sshpass -p raspberry ssh -o StrictHostKeyChecking=no pi@172.33.33.10 'vcgencmd measure_temp'

temp=54.2'C

ekzorchik@srv-zabbix:~$ /usr/bin/sshpass -p raspberry ssh -o StrictHostKeyChecking=no pi@172.33.33.10 "cat /sys/class/thermal/thermal_zone0/temp | sed -e 's/\(..\)\(.*\)/\1.\2/'"

53.692

Шаг №4: Так команды получения температуры отработаны, теперь нужно на системе где Zabbix создать два скрипта где каждый будет отвечать за свою задачу:

ekzorchik@srv-zabbix:~$ sudo nano /usr/lib/zabbix/externalscripts/cputemp

#!/bin/bash

/usr/bin/sshpass -p raspberry ssh -o StrictHostKeyChecking=no pi@172.33.33.10 "cat /sys/class/thermal/thermal_zone0/temp | sed -e 's/\(..\)\(.*\)/\1.\2/'"

exit

ekzorchik@srv-zabbix:~$ sudo chmod +x /usr/lib/zabbix/externalscripts/cputemp

ekzorchik@srv-zabbix:~$ sudo /usr/lib/zabbix/externalscripts/cputemp

Warning: Permanently added '172.33.33.10' (ECDSA) to the list of known hosts.

54.230

так нужно скрыть отображение строки «Warning: Permanently...»

ekzorchik@srv-zabbix:~$ sudo nano /etc/ssh/ssh_config

Host 172.33.33.10

Port 22

LogLevel ERROR

StrictHostKeyChecking no

UserKnownHostsFile /dev/null

ekzorchik@srv-zabbix:~$ sudo /usr/lib/zabbix/externalscripts/cputemp

53.692

ekzorchik@srv-zabbix:~$

Вот теперь лучше.

ekzorchik@srv-zabbix:~$ sudo nano /usr/lib/zabbix/externalscripts/gputemp

#!/bin/bash

/usr/bin/sshpass -p raspberry ssh pi@172.33.33.10 'vcgencmd measure_temp' | cut -c 6-9

exit

ekzorchik@srv-zabbix:~$ sudo chmod +x /usr/lib/zabbix/externalscripts/gputemp

ekzorchik@srv-zabbix:~$ sudo /usr/lib/zabbix/externalscripts/gputemp

53.7'C

Наименование скриптов: cputemp & gputemp — это ключи Key.

Шаг №5: Далее нужно активировать использование скриптов сервисом Zabbix для взаимодействия с удаленными системами:

ekzorchik@srv-zabbix:~$ sudo nano /etc/zabbix/zabbix_agentd.d/raspberry.conf

#raspberry pi 3 model b: monitoring cputemp & gputemp

UserParameter=cputemp[*],/usr/lib/zabbix/externalscripts/cputemp

UserParameter=gputemp[*],/usr/lib/zabbix/externalscripts/gputemp

ekzorchik@srv-zabbix:~$ sudo systemctl restart zabbix-agent.service

ekzorchik@srv-zabbix:~$ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t cputemp

cputemp                                       [t|54.230]

ekzorchik@srv-zabbix:~$ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t gputemp

gputemp                                       [t|54.8]

ekzorchik@srv-zabbix:~$

Шаг №6: Создаю группу узлов сети, новый шаблон и хост и новый элемент данных в нем применительно к этому миникомпьютеру:

http://IP&DNS/zabbix — user&pass – Настройка — Группы узлов сети — Создать группу узлов сети

  • Имя группы: Group_Raspberry

и нажимаю «Добавить»

http://IP&DNS/zabbix — user&pass – Настройка - Шаблоны — Создать шаблон

  • Имя шаблона: Template Raspberry
  • Видимое имя: Template Raspberry
  • Группы: Group_Raspberry

и нажимаю «Добавить», затем в данном шаблоне создаю «Элементы данных» — «Создать элемент данных»

  • Имя: cputemp
  • Тип: Zabbix агент
  • Ключ: cputemp
  • Тип информации: Числовой (с плавающей точкой)
  • Единица измерения: C
  • Интервал обновления: 1m
  • Активировано: отмечено галочкой

и нажимаю «Добавить».

По аналогии создаю элемент данных для ключа gputemp

http://IP&DNS/zabbix — user&pass – Настройка — Узлы сети — Создать узел сети

  • Имя узла сети: raspberry
  • Группы: Group_Raspberry
  • Интерфейсы агента: 127.0.0.1:10050
  • Активировано: отмечено галочкой

затем перехожу в «Шаблоны» и связываю данный узел сети с шаблоном Template_raspberry.

и нажимаю «Добавить»

Создаю в шаблоне (Template_raspberry) график настройки снимаемых значений:

http://IP&DNS/zabbix — user&pass – Настройка — Шаблоны — Template Raspberry – Графики  - Создать график

  • Имя: Температура CPU & GPU
  • Ширина: 900
  • Высота: 200
  • Тип графика: Нормальный
  • Отображать легенду: отмечено галочкой
  • Отображать рабочее время: отмечено галочкой
  • Отображать триггеры: отмечено галочкой
  • МИН значение оси Y: Фиксированное: 0
  • МАКС значение оси Y: Фиксированное: 100
  • Элементы данных: Добавить и отмечаю галочкой: cputemp & gputemp

и нажимаю «Выбрать»

Создаю график для cputemp & gputemp

и нажимаю «Добавить», хотя можно сперва перейти в «Предпросмотр» дабы проверить что все так как Вами и задумано.

Итог информации по «Узлы сети» применительно к хосту raspberry:

Заведен новый узел сети: raspberry

Ожидаем, и спустя некое количество времени начинает строится график:

Шаг №7: Но если данные не идут, нужно посмотреть права доступа к скриптам самим Zabbix(ом):

ekzorchik@srv-zabbix:~$ ls -lh /usr/lib/zabbix/externalscripts/

total 8.0K

-rwxr-xr-x 1 root root 167 Nov  7 21:51 cputemp

-rwxr-xr-x 1 root root  87 Nov  7 21:59 gputemp

Смотрю логи:

ekzorchik@srv-zabbix:~$ sudo tail -f /var/log/zabbix/zabbix_server.log

766:20191114:095244.199 enabling Zabbix agent checks on host "raspberry": host became available

754:20191114:095245.171 item "raspberry:cputemp" became not supported: Unsupported item key.

757:20191114:095246.171 item "raspberry:gputemp" became not supported: Unsupported item key.

Нужно дать разрешение на запуск и привести конфигурационный файл к виду:

ekzorchik@srv-zabbix:~$ sudo nano /etc/sudoers

zabbix ALL=(ALL) NOPASSWD:ALL

ekzorchik@srv-zabbix:~$ sudo nano /etc/zabbix/zabbix_agentd.conf

PidFile=/var/run/zabbix/zabbix_agentd.pid

LogFile=/var/log/zabbix/zabbix_agentd.log

LogFileSize=0

DebugLevel=3

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

ekzorchik@srv-zabbix:~$ sudo systemctl restart zabbix-server zabbix-agent

После деактивировал и активировал элементы данных внутри шаблона

http://IP&DNS – user&pass – Настройка – Узлы сети – выбираю узел (raspberry) – Элементы данных, выделяю элемент и нажимаю на колонке «Состояние» будет сперва «Деактивирована» и еще раз «Активировано» и значения

Деактивируем и активируем элементы данных внутри шаблона

В логах /var/log/zabbix/zabbix_server.log

ekzorchik@srv-zabbix:~$ sudo tail -f /var/log/zabbix/zabbix_server.log

1882:20191108:095644.791 item "raspberry:cputemp" became supported

1880:20191108:095646.428 item "raspberry:gputemp" became supported

И после съем информации пошел, графики строятся:

http://IP&DNS/zabbix - user&pass - Мониторинг – Последние данные

Съем данных температуры CPU & GPU пошел

 

Как видно данные снимаются, а если посмотреть единый график куда заведены оба элемента данных:

http://IP&DNS/zabbix - user&pass - Мониторинг – Графики –

  • Группа: Group_Raspberry
  • Узел сети: raspberry
  • График: Температура CPU & GPU
  • Просмотр как: График

И нажимаю «Применить». Вот формируемый график:

Итоговый график с показаниями температур

Если использовать подключение к удаленному хосту по SSH, то я бы рекомендовал использовать все-таки адекватный таймаут запуска опроса получения значения.

На этом у меня все, я разобрал в шагах, как контролировать по части температуры свой миникомпьютер, не прибегая к установке стороннего софта, а только SSH подключение.

С уважением, автор блога Олло Александр aka ekzorchik.