Инструкция по установке и проверке Zabbix Agent 2

Установка с помощью скрипта install.sh

Автор: Константин Потапов — специалист технической поддержки

1. Назначение

Скрипт предназначен для автоматизированной установки и проверки Zabbix Agent 2 на мини-ПК под управлением Ubuntu 20.04 ARM32.

Сотрудник запускает отдельные этапы установки и изменяет только те параметры, которые должны быть уникальными для конкретного устройства. Проверку системы, удаление предыдущего агента, установку зависимостей, копирование файлов, запуск служб и контроль результата выполняет скрипт.

Работа разделена на четыре режима:

КомандаНазначение
./install.shПроверка системы и установка Agent 2.
./install.sh --startПроверка конфигурации и запуск Agent 2.
./install.sh --health-checkПроверка Adapter v14, WebSocket и HEALTH CHECK.
./install.sh --auditПолная проверка уже установленной системы.

2. Состав установочного пакета

После распаковки в каталоге /root/zabbix-agent2-package должны находиться:

zabbix_agent2
zabbix_agent2.conf
zabbix_agent2.conf.dpkg-dist
zabbix_agent2.psk
zabbix-agent2.service
install.sh
zabbix_agent2.d/
scripts/

В каталоге scripts должны находиться:

HEALTH_CHECK.py
PARAMS_CHECK.py
STATUS_CHECK.py
VERSION_CHECK.py
Что будет: скрипт проверит состав пакета до изменения системы. Если обязательный файл отсутствует, установка завершится, а существующий агент останется без изменений.

3. Подготовка к установке

Действия сотрудника
  1. Копирует архив zabbix-agent2-package.tar в каталог /root.
  2. Распаковывает архив.
  3. Выдаёт права на выполнение.
  4. Переходит в каталог установщика.
  5. Проверяет синтаксис скрипта.
tar -xvf /root/zabbix-agent2-package.tar
chmod +x /root/zabbix-agent2-package/*
cd /root/zabbix-agent2-package
bash -n install.sh

Если команда bash -n install.sh ничего не вывела, синтаксических ошибок не обнаружено. Все команды выполняются от пользователя root.

Что проверяется
  • скрипт запускается с правами root;
  • каталог пакета доступен;
  • файл install.sh может быть запущен;
  • установочный пакет содержит обязательные файлы.
Что будет: если подготовка выполнена правильно, сотрудник переходит к STEP 1. При ошибке прав, синтаксиса или состава пакета установка не начинается.

4. Принцип работы установщика

Установка разделена на последовательные этапы. Каждый этап содержит обязательные проверки, которые выполняются автоматически.

Как работает скрипт
  • Проверяет выполнение всех условий текущего этапа.
  • При обнаружении ошибки немедленно прекращает выполнение текущего этапа.
  • Сообщает, какое условие необходимо выполнить.
  • Не позволяет перейти к следующему этапу, пока текущий не завершён успешно.
Что будет

Например, если после STEP 1 не изменён параметр Hostname, скрипт не позволит перейти к STEP 2 и потребует изменить имя устройства. Аналогично, при обнаружении adapter-v13 или отсутствии поддержки WebSocket выполнение STEP 3 будет остановлено до обновления Adapter до версии 14 с поддержкой WebSocket.

4. Общая схема установки

Переход между этапами

Скрипт не пропускает сотрудника к следующему этапу, пока обязательные условия текущего этапа не выполнены. Например, если параметр Hostname отсутствует, пустой или содержит шаблонное значение, STEP 2 прекращается и скрипт требует изменить имя устройства. После исправления сотрудник повторно запускает ту же команду.

STEP 1 Настройка Hostname STEP 2 STEP 3 HEALTH CHECK

Каждый следующий этап запускается только после успешного завершения предыдущего. Если проверка не пройдена, скрипт выводит причину и прекращает текущий этап. После исправления сотрудник повторяет ту же команду.

5. STEP 1 — установка Zabbix Agent 2

Действия сотрудника

Запускает первый этап:

./install.sh
Как работает скрипт
  1. Проверяет архитектуру. Поддерживаются armv6l и armv7l. Бинарник должен быть 32-битным ARM ELF-файлом.
  2. Проверяет динамические библиотеки. Выполняется ldd zabbix_agent2. При отсутствии библиотек или несовместимой GLIBC установка прекращается.
  3. Определяет версию Agent 2 в установочном пакете и сравнивает её с установленной версией.
  4. Ищет предыдущую установку: бинарники Agent и Agent 2, утилиты zabbix_get и zabbix_sender, службы systemd, APT-пакеты и файлы в /etc/zabbix.
  5. Проверяет Python-компоненты: python3, python3-pip, python3-venv и python3-websockets.
  6. Удаляет предыдущую версию, если найден классический агент или Agent 2 другой версии. Сначала служба останавливается и проверяется её фактическая остановка.
  7. Устанавливает новую версию: бинарник, конфигурацию, PSK, systemd unit, плагины и пользовательские скрипты.
  8. Создаёт каталоги /var/log/zabbix и /var/lib/zabbix, а также пользователя zabbix, если его нет.
Что будет
  • Если Agent 2 не установлен или установлена другая версия, скрипт выполнит замену и установит версию из пакета.
  • Если уже установлена такая же версия, файлы не будут перезаписаны. Скрипт проверит существующую установку.
  • После STEP 1 служба Agent 2 останется остановленной и не будет включена в автозапуск до настройки уникального Hostname.
Когда этап остановится

При несовместимой архитектуре, отсутствии библиотек, повреждённом пакете или невозможности остановить старую службу. Старая установка не удаляется, если новый пакет не прошёл предварительные проверки.

6. Настройка уникального Hostname

Действия сотрудника

Открывает конфигурацию Agent 2:

nano /etc/zabbix/zabbix_agent2.conf

Файл также можно открыть через встроенный SSH Browser в MobaXterm: перейти к /etc/zabbix/zabbix_agent2.conf, открыть его встроенным текстовым редактором и сохранить сочетанием Ctrl+S.

В параметре Hostname= указывается уникальное имя мини-ПК.

Что проверит скрипт на следующем этапе
  • параметр Hostname существует;
  • значение не пустое;
  • не используется шаблонное имя;
  • имя не заканчивается на _000_000.
Что будет: при уникальном Hostname скрипт продолжит STEP 2. Если имя не изменено, запуск Agent 2 будет заблокирован и служба останется остановленной.

7. STEP 2 — проверка конфигурации и запуск Agent 2

Действия сотрудника
./install.sh --start
Как работает скрипт
  1. Проверяет бинарник /usr/sbin/zabbix_agent2.
  2. Проверяет основной конфигурационный файл и systemd unit.
  3. Проверяет уникальность Hostname.
  4. Проверяет параметр TLSPSKFile и наличие указанного PSK-файла.
  5. Проверяет доступность Python-модуля websockets.
  6. Проверяет конфигурацию встроенной командой:
/usr/sbin/zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf -T

После успешной проверки выполняются:

systemctl daemon-reload
systemctl enable zabbix-agent2.service
systemctl restart zabbix-agent2.service
systemctl is-enabled zabbix-agent2.service
systemctl is-active zabbix-agent2.service
Что будет

Если конфигурация корректна, Agent 2 запускается, включается в автозагрузку и переходит в состояние active. Только после успешного завершения всех проверок STEP 2 скрипт предложит выполнить ./install.sh --health-check.

Когда этап остановится

Если Hostname не уникален, PSK отсутствует, конфигурация не проходит проверку или служба не запускается. В этом случае выводятся systemctl status и последние записи journalctl.

8. STEP 3 — проверка Adapter v14 и WebSocket

Действия сотрудника
./install.sh --health-check
Как работает скрипт

1. Проверка используемой версии Adapter

Скрипт анализирует параметр ExecStart службы adapter.service и определяет, какая версия Adapter фактически используется.

systemctl show adapter.service --property=ExecStart --value

Ожидаемый путь:

/etc/smartroad/adapter-v14/Multiadapter
Если обнаружен Adapter v13

Если скрипт обнаружит использование adapter-v13 или любой другой устаревшей версии Adapter, выполнение STEP 3 немедленно прекращается.

Скрипт потребует обновить Adapter до версии 14, поскольку только Adapter v14 поддерживает выполнение HEALTH CHECK.

Дополнительно будет указано, что устанавливаемая версия Adapter v14 обязательно должна содержать поддержку WebSocket. Без неё дальнейшая проверка невозможна.

./install.sh --health-check

2. Проверка поддержки WebSocket

cd /etc/smartroad/adapter-v14
./Multiadapter -i

В выводе должна присутствовать строка WEBSOCKET: [X]. Если её нет, скрипт прекращает выполнение и требует установить сборку Adapter v14 с поддержкой WebSocket.

3. Проверка конфигурации

После этого скрипт проверяет Multiadapter.json, блок WEB_SOCKET, валидность JSON, параметры портов, перезапускает Adapter, проверяет его состояние и выполняет HEALTH_CHECK.py.

9. Выполнение HEALTH CHECK

Что делает скрипт
cd /etc/zabbix/scripts
python3 HEALTH_CHECK.py

Скрипт подключается к WebSocket-порту 9896, отправляет системную команду проверки и ожидает ответ Adapter.

Успешный результат
HEALTH CHECK SUCCESS
WebSocket .............. OK
Command port ........... 9896
HEALTH_CHECK.py ........ OK

После этого установка и первичная проверка считаются завершёнными.

10. Типовые ошибки и действия сотрудника

ОшибкаЧто означаетДействия
ERROR:TimeoutСоединение установлено, но Adapter не вернул ответ.Проверить статус Adapter, журнал и порт 9896.
Errno 111
Connection refused
Порт 9896 не прослушивается.Проверить adapter.service и блок WEB_SOCKET.
ModuleNotFoundErrorОтсутствует Python-модуль websockets.Установить python3-websockets.
Ошибка JSONНекорректные кавычки, запятые или скобки.Исправить Multiadapter.json и повторить STEP 3.
Permission deniedНеверные права на пользовательские скрипты.Проверить владельца и права каталога /etc/zabbix/scripts.
systemctl status adapter --no-pager -l
ss -lntp | grep 9896
journalctl -u adapter -n 50 --no-pager
python3 /etc/zabbix/scripts/HEALTH_CHECK.py

11. Режим аудита

Действия сотрудника
./install.sh --audit
Что проверяет скрипт
  • наличие старого zabbix_agentd;
  • версию Agent 2;
  • конфигурацию и уникальность Hostname;
  • PSK и Python-зависимости;
  • состояние и автозапуск Agent 2;
  • путь запуска Adapter;
  • наличие Adapter v14 и WebSocket;
  • валидность Multiadapter.json;
  • блок WEB_SOCKET;
  • результат HEALTH CHECK.
Что будет
AUDIT RESULT: PASS

или

AUDIT RESULT: FAIL

При результате FAIL выводятся обнаруженные несоответствия.

12. Результат успешной установки

После успешного прохождения всех этапов:

  • Zabbix Agent 2 установлен в /usr/sbin/zabbix_agent2;
  • используется уникальный Hostname;
  • PSK и конфигурация прошли проверку;
  • zabbix-agent2.service активна и включена в автозагрузку;
  • adapter.service запускает Adapter v14;
  • WebSocket-порты 9896 и 9898 активны;
  • Multiadapter.json имеет корректный синтаксис;
  • HEALTH_CHECK.py успешно получает ответ Adapter;
  • режим аудита завершается результатом PASS.

Полная последовательность команд

tar -xvf /root/zabbix-agent2-package.tar
chmod +x /root/zabbix-agent2-package/*
cd /root/zabbix-agent2-package
bash -n install.sh
./install.sh

nano /etc/zabbix/zabbix_agent2.conf
./install.sh --start

./install.sh --health-check

./install.sh --audit

Команды редактирования через nano можно заменить открытием соответствующего файла во встроенном текстовом редакторе SSH Browser в MobaXterm.

Наверх