Задача: Нужно поставить на контроль сам миникомпьютер 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
и нажимаю «Выбрать
»
и нажимаю «Добавить
», хотя можно сперва перейти в «Предпросмотр
» дабы проверить что все так как Вами и задумано.
Итог информации по «Узлы сети
» применительно к хосту 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 - Мониторинг – Последние данные
Как видно данные снимаются, а если посмотреть единый график куда заведены оба элемента данных:
http://IP&DNS/zabbix - user&pass - Мониторинг – Графики –
Группа: Group_Raspberry
Узел сети: raspberry
График: Температура CPU & GPU
Просмотр как: График
И нажимаю «Применить
». Вот формируемый график:
Если использовать подключение к удаленному хосту по SSH
, то я бы рекомендовал использовать все-таки адекватный таймаут запуска опроса получения значения.
На этом у меня все, я разобрал в шагах, как контролировать по части температуры свой миникомпьютер, не прибегая к установке стороннего софта, а только SSH
подключение.
С уважением, автор блога Олло Александр aka ekzorchik.