Zabbix-мониторинг российского микрокомпьютера Repka Pi

8f78b03bc550ad2335999ff0d7e79b25.png

В этой статье я расскажу о настройке Zabbix-мониторинга российского одноплатного микрокомпьютера Repka Pi 3, разработанного НПО Рэйнбовсофт (Rainbowsoft) из Саратова. Помимо параметров, доступных для мониторинга с помощью стандартного агента Zabbix, с помощью шаблона  zabbix-agent-on-repka-pi, рассмотренного в этой статье, вы сможете поставить на контроль температуру CPU и GPU, а также тактовую частоту ядер процессора.

Микрокомпьютер Repka Pi 3 собирается в России на отечественной печатной плате высокого качества из китайских комплектующих.

Разработчик Repka Pi 3 позиционирует этот микрокомпьютер как российскую альтернативу зарубежному Raspberry Pi 3 в области образования, для промышленного применения, автоматизации технологических процессов (АСУ ТП), робототехнических систем, терминалов и оборудования для бизнеса, а также для IoT. На момент написания статьи идет сертификация Repka Pi 3, что в будущем позволит включить микрокомпьютер в реестры российского «железа» и софта.

Несомненно, важным преимуществом Repka Pi 3 перед зарубежными аналогами является возможность получения поддержки непосредственно от производителя. В этом плане, судя по откликам в интернете, у Raspberry Pi и конкурирующего по цене Orange Pi есть большие проблемы.

Необходимо отметить, что Repka Pi 3 не является «клоном» Raspberry Pi, Orange Pi или какого-либо иного зарубежного микрокомпьютера. Тем не менее имеется совместимость на уровне GPIO и форм-фактора печатной платы (рис. 1).

Рис. 1. Микрокомпьютер Repka Pi 3

Рис. 1. Микрокомпьютер Repka Pi 3

В качестве стандартной операционной системы (ОС) используется Repka OS, созданная на базе Ubuntu. Это обеспечивает хорошую совместимость с различным ПО. 

Кроме этого, идет работа над созданием образов ОС Armbian — bullseye (Debian 11) и jammy (Ubuntu 22.04). Энтузиасты работают над созданием образов FreeBSD и OpenBSD для Repka Pi 3. 

В Телеграме имеется официальный канал Repka Pi, а также группа сообщества. Сайт компании НПО Рэйнбовсофт доступен по адресу https://rbs-computers.ru/. Что же касается микрокомпьютера Repka Pi, то у нее есть свой сайт.

Установка Repka OS

Вы можете выбрать различные варианты поставки Repka Pi 3, отличающиеся объемом оперативной памяти (1 или 2 Гбайт), тактовой частотой (1.2или 1.4 ГГц), также комплектностью.

Для этой статьи мы приобрели коробочный вариант Repka Pi 3 в расширенной комплектации (ОЗУ 2 Гбайт и частота процессора 1.2 ГГц) с корпусом, блоком питания и картой памяти объемом 32 Гбайт, на которую уже записана Repka OS (рис. 2). В таком варианте достаточно подсоединить к микрокомпьютеру монитор, клавиатуру, мышь, сетевой кабель и блок питания. 

Рис. 2. Микрокомпьютер Repka Pi 3 в расширенной комплектации с корпусом

Рис. 2. Микрокомпьютер Repka Pi 3 в расширенной комплектации с корпусом

Если вы приобрели Repka Pi 3 без карты памяти, воспользуйтесь инструкцией по загрузке и записи образа Repka OS на карту памяти. Она есть на сайтев виде файла PDF, доступного по адресу https://download.robointellect.ru/user-doc-repka-pi3.pdf.

После начальной загрузки ОС обновите пакеты:

# apt update
# apt upgrade

Для Repka Pi 3 можно использовать динамический адрес IP, полученный от сервера DHCP, или установить статический адрес IP. 

Если нужен статический адрес IP, то после установки Repka OS откройте каталог »/root/Рабочий стол/Рекомендации по настройке» и воспользуйтесь документом 'Инструкция по настройке статического IP Repka Pi по Ethernet — Static IP instruction_pdf.desktop'.

Также рекомендуем выполнить ряд действий по усилению защиты ОС, таких как смена пароля root, добавление обычного пользователя, отключение возможности удаленного входа root, установка сервиса fail2ban, настройка файрволла и так далее (как это делается для обычного узла Ubuntu). Все эти настройки выполняются исходя из особенностей вашего применения Repka Pi.

Установка Zabbix Agent2 в Repka OS

Для мониторинга узла с помощью Zabbix нужно установить на него специальный агент. Чтобы это сделать, откройте страницу https://www.zabbix.com/download и выберите следующие параметры установки (рис. 3):

Рис. 3. Выбор параметров установки Zabbix Agent2

Рис. 3. Выбор параметров установки Zabbix Agent2

Узнать версию OS можно с помощью такой команды:

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.6 LTS
Release:        20.04
Codename:       focal

После выбора параметров появится инструкция по установке.

Установка репозитория и сервиса zabbix-agent2

Действуя по инструкции, установите нужный репозиторий Zabbix, агент и программу zabbix-sender:

# wget https://repo.zabbix.com/zabbix/6.4/ubuntu-arm64/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu20.04_all.deb
# dpkg -i zabbix-release_6.4-1+ubuntu20.04_all.deb
# apt update 
# apt install zabbix-agent2 zabbix-agent2-plugin-* zabbix-sender

После установки перезапустите агент, добавьте его в автозапуск при загрузке ОС:

# systemctl restart zabbix-agent2
# systemctl enable zabbix-agent2 

Также проверьте текущее состояние агента:

# systemctl status zabbix-agent2
● zabbix-agent2.service - Zabbix Agent 2
     Loaded: loaded (/lib/systemd/system/zabbix-agent2.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2023-03-15 15:04:28 UTC; 2 months 13 days ago
   Main PID: 647 (zabbix_agent2)
      Tasks: 14 (limit: 2192)
     Memory: 39.8M
     CGroup: /system.slice/zabbix-agent2.service
             └─647 /usr/sbin/zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf
мар 15 15:04:28 Repka-Pi systemd[1]: Started Zabbix Agent 2.
мар 15 15:04:33 Repka-Pi zabbix_agent2[647]: Starting Zabbix Agent 2 (6.4.2)
мар 15 15:04:33 Repka-Pi zabbix_agent2[647]: Zabbix Agent2 hostname: [repka-pi-01]
мар 15 15:04:33 Repka-Pi zabbix_agent2[647]: Press Ctrl+C to exit.

Сервис агента должен быть активен active (running) и разрешен для запуска при загрузке ОС enabled.

Настройка конфигурации агента zabbix-agent2

Для настройки конфигурации агента zabbix-agent2 отредактируйте файл /etc/zabbix/zabbix_agent2.conf.

Если при установке Repka OS вы настроили статический адрес IP, то в файле конфигурации агента Zabbix нужно задать следующие параметры:

  • Server —адрес IP сервера Zabbix;

  • Hostname — имя узла Repka Pi, под которым он будет добавлен в список хостов сервера Zabbix.

При этом агент Zabbix будет работать в пассивном режиме, когда сервер Zabbix отправляет запросы получения метрик от узла по его IP адресу.

Если же у Repka Pi динамический адрес (как это часто бывает), то можно перевести агент Zabbix, работающий на микрокомпьютере, в активный режим. Для этого вместо параметра Server нужно добавить:

В активном режиме агент Zabbix сам отправляет данные серверу Zabbix, пользуясь шаблонами, подключенными к узлу. В метриках шаблонов при этом требуется выбрать активный агент Zabbix agent (active).

Шаблон и триггеры агента Linux by Zabbix agent active

После установки агента Zabbix Agent2, добавьте к узлу Repka Pi шаблон Linux by Zabbix agent active при помощи веб-интерфейса сервера Zabbix. Обратите внимание, что мы подключили активный вариант шаблона.

На рис. 4 показан подключенный шаблон Linux by Zabbix agent active. Он собирает метрики, обычные для Ubuntu. Что касается метрик, специфичных для Repka Pi, и шаблона Template Repka Pi, то мы расскажем об этом далее. 

Рис. 4. Подключение шаблонов к узлу Repka Pi

Рис. 4. Подключение шаблонов к узлу Repka Pi

Если вы все настроили правильно, то через некоторое время в разделе Latest Data веб-интерфейса Zabbix появятся данные мониторинга (рис. 5).

Рис. 5. Данные мониторинга узла Repka Pi

Рис. 5. Данные мониторинга узла Repka Pi

Перечень метрик и триггеров, определенных в шаблоне Linux by Zabbix agent active находится здесь:   https://www.zabbix.com/integrations/ubuntu#linux_active.

С помощью этого шаблона можно контролировать загрузку процессора, свободное пространство на диске, объем свободной памяти, трафик, интенсивность переключения контекста и другие параметры. Однако в нем нет метрик и триггеров, специфичных для Repka Pi. В частности, там нет таких важных метрик, как температура CPU и GPU, а также рабочая частота ядер процессора.

Шаблон zabbix-agent-on-repka-pi

Шаблон zabbix-agent-on-repka-pi представлен на рис. 4 под именем Template Repka Pi. Он предназначен для сбора специфической для Repka Pi информации. На момент написания статьи с его помощью можно было контролировать температуру CPU и GPU, а также частоту ядер процессора. 

Загрузите файлы шаблона из репозитория с помощью следующей команды:

git clone https://github.com/AlexandreFrolov/zabbix-agent-on-repka-pi.git

Файл шаблона «Template Repka Pi.xml» добавьте к узлу контролируемого микрокомпьютера Repka Pi через веб-интерфейс вашего сервера Zabbix (рис. 4).

Далее создайте на узле Repka Pi каталог /etc/zabbix/scripts и сделайте его текущим:

# mkdir /etc/zabbix/scripts/
# cd /etc/zabbix/scripts/

Загрузите в каталог скрипт repkapi_t.sh, входящий в состав шаблона zabbix-agent-on-repka-pi, и разрешите его исполнение:

# wget https://raw.githubusercontent.com/AlexandreFrolov/zabbix-agent-on-repka-pi/main/repkapi_t.sh
# sudo chmod 755 /etc/zabbix/scripts/repkapi_t.sh

Скрипт /etc/zabbix/scripts/repkapi_t.sh выдает команду sensors с параметром -j (вывод данных в формате JSON):

#!/bin/sh
sensors -j
exit 0

Далее установите пакет lm-sensors и запустите утилиту конфигурирования для обнаружения доступных сенсоров:

# apt-get install lm-sensors
# sensors-detect

Описание работы с утилитой sensors можно найти, например, здесь:

После установки утилиты sensors и конфигурирования проверьте работу скрипта с правами пользователя zabbix:

# sudo -u zabbix /etc/zabbix/scripts/repkapi_t.sh

На консоли появятся данные в формате JSON следующего вида:

{
   "cpu_thermal-virtual-0":{
      "Adapter": "Virtual device",
      "temp1":{
         "temp1_input": 33.274,
         "temp1_crit": 95.000
      }
   },
   "gpu_thermal-virtual-0":{
      "Adapter": "Virtual device",
      "temp1":{
         "temp1_input": 35.894
      }
   }
}

Для измерения температуры ядер процессоров используются такие команды:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq
cat /sys/devices/system/cpu/cpu2/cpufreq/scaling_cur_freq
cat /sys/devices/system/cpu/cpu3/cpufreq/scaling_cur_freq

Описание кода scaling_cur_freq и других кодов можно найти здесь: https://www.kernel.org/doc/Documentation/cpu-freq/user-guide.txt.

В частности, с помощью следующей команды можно получить список всех доступных частот ядер процессора:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
288000 336000 480000 648000 816000 1008000 1056000 1200000

Чтобы шаблон заработал, допишите в конец файла конфигурации агента Zabbix /etc/zabbix/zabbix_agent2.conf две строки:

UserParameter=repkapi_t.sh[],/etc/zabbix/scripts/repkapi_t.sh
UserParameter=cpufreq[], cat /sys/devices/system/cpu/$1/cpufreq/scaling_cur_freq 

После этого перезапустите сервис zabbix-agent2 и проверьте его статус:

# service zabbix-agent2 restart
# service zabbix-agent2 status

Сервис должен быть активен и разрешен для запуска при загрузке ОС.

Метрики

Через некоторое время после перезапуска агента в разделе Latest Data веб-интерфейса Zabbix для контролируемого узла Repka Pi появятся данные метрик (рис. 6).

Рис. 6. Данные метрик шаблона zabbix-agent-on-repka-pi

Рис. 6. Данные метрик шаблона zabbix-agent-on-repka-pi

Метрика RepkaTCPU нужна для мониторинга температуры CPU (рис. 7). 

Рис. 7. Метрика RepkaTCPU

Рис. 7. Метрика RepkaTCPU

Обратите внимание, что выбран активный тип метрики Zabbix agent (active)

Чтобы получить нужное значение из данных JSON, которые выводит утилита sensors с параметром -j, используется предварительная обработка JSON Path (рис. 8).

Рис. 8. Предварительная обработка данных для метрики RepkaTCPU

Рис. 8. Предварительная обработка данных для метрики RepkaTCPU

С помощью метрики RepkaTGPU контролируется температура GPU. Эта метрика определена аналогично метрике RepkaTCPU, но используется другой параметр предварительной обработки:

$.gpu_thermal_virtual_0.temp1.temp1_input

Метрика RepkaTCPUCrit возвращает критическое значение температуры CPU.  Здесь используется такой параметр предварительной обработки:

$.cpu_thermal_virtual_0.temp1.temp1_crit

Что касается метрик RepkaFCPU-0, RepkaFCPU-1, RepkaFCPU-2 и RepkaFCPU-3, то в них сохраняются данные текущей частоты ядер процессора (рис. 9).

Рис. 9. Метрика RepkaFCPU-0

Рис. 9. Метрика RepkaFCPU-0

Здесь тоже выбран активный тип метрики Zabbix agent (active), но предварительная обработка не используется.

Триггеры

В шаблоне zabbix-agent-on-repka-pi определены триггеры, позволяющие обнаружить перегрев CPU или GPU (рис. 10)

Рис. 10. Триггеры в шаблоне zabbix-agent-on-repka-pi

Рис. 10. Триггеры в шаблоне zabbix-agent-on-repka-pi

Триггеры с уровнем серьезности High срабатывают, когда температура CPU превышает критическую, полученную от утилиты sensors, а также когда температура GPU превышает 80 градусов цельсия. 

Триггер с уровнем серьезности Average срабатывает при нагреве CPU до 65 градусов цельсия.

Разумеется, можно изменить пороги срабатывания этих триггеров или добавить новые триггеры в зависимости от условий, необходимых для надежной работы вашей системы.

Смотрим фильмы и метрики Repka Pi 3

После того как вы добавили шаблоны и настроили мониторинг, создайте с помощью веб-интерфейса Zabbix нужные вам панели Dashboard. С их помощью вы будете просматривать графики метрик.

Чтобы хорошенько «нагрузить» Repka Pi 3, запустим в браузере просмотр видео на YouTube (рис. 11) и будем контролировать изменение нагрузки, сетевого трафика, температуры CPU и GPU, рабочую частоту ядер процессора, а также параметры обращения к диску (то есть к карте памяти).

Рис. 11. Просмотр фильмов в браузере для нагрузки Repka Pi

Рис. 11. Просмотр фильмов в браузере для нагрузки Repka Pi

В процессе тестирования мы сначала запустили проигрывание относительно «спокойного» видео в окне браузера, а затем развернули окно на весь экран в режиме HD. Далее мы нашли очень динамичный музыкальный клип и тоже запустили его на весь экран.

Использование процессора

Использование CPU в виде графика на панели Dashboard показано на рис. 12. 

Рис. 12. Использование CPU Repka Pi 3 при просмотре трех видео в браузере 

Рис. 12. Использование CPU Repka Pi 3 при просмотре трех видео в браузере 

Картина по загрузке Load average показана на рис. 13.

Рис. 13. График изменения Load average

Рис. 13. График изменения Load average

Обратите внимание, что примерно в 10:40 произошла аварийная остановка ОС в результате перегрузки. После этого ОС была перезагружена отключением и повторным включением электропитания.

Использование оперативной памяти

Если посмотреть на график использования оперативной памяти (рис. 14), то видно, что она была использована максимум на 74%.

Рис. 14. График использования оперативной памяти

Рис. 14. График использования оперативной памяти

Таким образом, ОЗУ объемом 2 Гбайт оказалось вполне достаточно для просмотра видео в браузере.

Контроль температуры CPU и GPU

Теперь проверим температуру CPU (рис. 15).

Рис. 15. График изменения температуры CPU

Рис. 15. График изменения температуры CPU

Видно, что максимальное значение температуры составило 68 градусов Цельсия. Температура CPU еще не достигла критического значения, полученного от утилиты sensors, однако она уже превысила порог 55 градусов, после которого начинается троттлинг (снижение частоты процессора).

График изменения температуры GPU показан на рис. 16.

Рис. 16. График изменения температуры GPU

Рис. 16. График изменения температуры GPU

Из этого графика можно определить, что за время теста была достигнута максимальная температура GPU, равная примерно 66.7 градусов Цельсия.

Контроль частоты ядер процессора

Описанный в этой статье шаблон zabbix-agent-on-repka-pi позволяет контролировать изменение частоты ядер процессоров (рис. 17).

Рис. 17. График изменения частоты ядер CPU

Рис. 17. График изменения частоты ядер CPU

Следует учитывать, что данная метрика обновляется один раз в минуту (как и другие метрики шаблона). Для более точного контроля вы можете уменьшить значение в поле Update interval в параметрах настройки метрики.

Контроль использования диска

При проведении испытаний в качестве диска использовалась карта памяти, вставленная в плату Repka Pi 3. 

Стандартный шаблон Linux by Zabbix agent active позволяет контролировать использования дискового пространства, использование диска Disk utilization, а также средний размер очереди диска Disk average queue size (avgqu-sz) (рис. 18).

Рис. 18. Контроль использования диска

Рис. 18. Контроль использования диска

Описание метрик диска можно найти здесь: https://www.zabbix.com/ru/integrations/ubuntu#linux_active.

В частности, метрика Disk utilization представляет собой процент прошедшего времени, в течение которого выбранный диск был занят при обслуживании запросов на чтение или запись.

Метрика Disk average queue size (vague-sz) — размер текущей средней дисковой очереди. Это количество запросов, ожидающих выполнения на диске во время сбора данных о производительности.

На рис. 19 мы показали контроль среднего времени ожидания при выполнении операций чтения и записи на диск.

Рис. 19. Контроль среднего времени ожидания

Рис. 19. Контроль среднего времени ожидания

С помощью стандартного шаблона Linux by Zabbix agent active можно контролировать скорость чтения данных с диски и скорость записи данных на диск (рис. 20).

Рис. 20. Контроль среднего времени ожидания 

Рис. 20. Контроль среднего времени ожидания 

Итоги

Таким образом, используя мониторинг Zabbix, стандартные и дополнительные шаблоны, вы можете контролировать работоспособность и производительность микрокомпьютера Repka Pi, на базе которого создана ваша система. Мониторинг позволяет своевременно обнаружить узкие места, а также «предынфарктное» состояние микрокомпьютера. У вас появляется возможность предотвратить аварию во многих.

Работая над мониторингом Repka Pi 3, вольно или невольно сравнивал ее с микрокомпьютером Raspberry Pi 3, который она вполне в состоянии заменить.

Надо сказать, что от Repka Pi остались только положительные впечатления. Особенно понравилось, что в сообществе пользователей можно очень быстро получить ответы на свои вопросы. Что ценно, ответы приходят и от разработчиков Repka Pi.

Также важно, что Repka Pi 3 представляет собой российскую разработку, и ее цена выглядит привлекательнее, чем цена Raspberry Pi 3. 

Конечно, пока нет возможности просто вытащить карту памяти из Raspberry Pi и, вставив ее в Repka Pi, запустить свои проекты. Из-за отличий в архитектуре и составе драйверов полной совместимости по программному обеспечению нет и приходится искать обходные пути.

Например, для мониторинга специфических метрик микрокомпьютера Raspberry Pi можно использовать утилиту vcgencmd. В настоящее время ведется создание аналогичной программы и для Repka Pi. Тем не менее рассмотренный в этой статье шаблон zabbix-agent-on-repka-pi позволяет контролировать такие важные метрики, как температура CPU и GPU, а также рабочие частоты ядер процессора. 

В следующей статье мы планируем рассказать, как с помощью Zabbix можно настроить мониторинг внешних устройств, подключенных к Repka Pi. При этом будут затронуты особенности работы с портами ввода-вывода GPIO.

Радует, что компания НПО Рэйнбовсофт не собирается останавливаться на достигнутом. На сайте компании уже заявлены Repka Pi 4 (разрабатывается) и Repka Pi 5 (в планах). Хотелось бы пожелать создателям российского микрокомпьютера успехов в этом очень полезном деле!

Автор: Александр Фролов.

НЛО прилетело и оставило здесь промокод для читателей нашего блога:

-15% на заказ любого VDS (кроме тарифа Прогрев) — HABRFIRSTVDS

© Habrahabr.ru