Установка Zabbix Agent — на первый взгляд задача достаточно тривиальная. Но, как говорится, дьявол кроется в деталях.
При прочтении этой статьи, рекомендуется ознакомиться со следующими записями:
- Zabbix Helper Kit и автоматизация обновления Zabbix Agent
- Zabbix Helper Kit v0.3 — Настройка репозитория
- Zabbix Agent Автообновление расширений — Zabbix Helper Kit v0.5
В данной статье пойдет речь о самом простом способе установки Zabbix Helper Kit на компьютеры с мастдаем. А именно о ручной установке на компьютерах не входящих в домен. Всё что необходимо для того чтобы скомпилировать и развернуть Zabbix Helper Kit на целевой машине не входящей в домен — это подготовленный репозиторий и пара правок параметров в коде Zabbix Helper Updater. Все настройки по умолчанию, хранятся в массиве
$g_easDefaultParameter
, о его настройке и пойдёт речь.
Какие параметры играют роль при установке на не доменную машину:
- FTPServer
Адрес FTP сервера. Должен быть доступен с машины на которой будет разворачиваться Zabbix Helper Kit - FTPUsername
Имя пользователя FTP сервера - FTPPassword
Пароль пользователя FTP сервера - DeployZabbixHelper
Загружать или нет ZabbixHelper при запуске (по умолчанию лучше оставить 0, и доставить команду о загрузке, при обновлении ZHK_Updater.cfg) - WorkgroupName
Имя рабочей группы. По умолчанию WORKGROUP. Используется для определения находится ли машина в домене или нет.
Все остальные параметры необходимы для более глубокой настройки ZHK или же для настройки в режимах развёртывания, отличных от описываемого в данной статье.
После того как параметры будут настроены, необходимо скомпилировать ZHK. Получившийся файл Zabbix_Helper_Updater.exe можно закидывать на флешку и идти разворачивать заббикс на целевые компьютеры. ZHK будет разворачиваться в папку
C:/zabbix/
независимо от места запуска Zabbix_Helper_Updater.exe. К несчастью кастомизация места установки ZHK и Zabbix Agent, в данной версии программы не предусмотрено.
Результаты успешного запуска
При правильной настройке параметров и репозитория, при первом запуске, Zabbix Helper Updater произведёт следующие действия:
- Создаст папку C:/zabbix/ в случае её отсутствия
- Подключится к FTP серверу используя заданные логин и пароль
- Создаст для себя правило в брандмауэре Windows
- Создаст для себя задачу для регулярного запуска в Scheduller
- Скачает файл zabbix_agentd.exe исходя из битности системы
- Скачает файл zabbix_agentd.win.conf
- Создаст правило в брандмауэре Windows для Zabbix Agent
- Скачает свой файл конфигурации
ZHK_Updater.cfg
из репозитория - Запишет более менее подробный лог в файл
zabbix_helper_updater.log
- Сохранит информацию о том установка каких модулей была произведена, в файл
ZHK_Installation_Status.cfg
Если вы создавали установочник так, как описано в статье, то в результате вы увидите следующее:
На данный момент у вас будет работающий, запиленный в систему качестве сервиса Zabbix Agent с конфиг файлом. Каждый час запускающийся Zabbix Helper Updater, обновляющий как сам Zabbix Agent там и его файл конфигурации. То есть одна из проблем описанных в статье Zabbix Helper Kit и автоматизация обновления Zabbix Agent уже решена. Теперь все правки в файле конфигурации заббикс агента в репозитории, раз в час реплицируются на наблюдаемые машины. При этом отсутствие сети не вызовет проблем с запуском агента.
Так же Zabbix Helper Updater регулярно обновляет из репозитория свой собственный файл конфигурации, если он более ранней версии чем в репозитории. И обнаружив в своём файле конфигурации строку
DeployZabbixHelper=1
, развернет на наблюдаемой машине утилиту Zabbix Helper. О ней речь пойдет в более поздних статьях. Её цель — доставлять на наблюдаемый компьютер скрипты расширяющие функциональность агента.
Удаление Zabbix Helper Updater
На данный момент отсутствуют какие-либо механизмы автоматизированного удаления Zabbix Agent и Zabbix Helper Kit из системы. Чтобы удалить результаты работы описанного в статье установочника, необходимо следующее:
- Запустить от имени администратора cmd.exe
- Остановить службу Zabbix Agent:
net stop "Zabbix Agent"
- Удалить службу Zabbix Agent:
c:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.win.conf --uninstall
- Удалить из входящих правил брандмауэра Windows правила:
- Zabbix Helper Kit — Zabbix Helper Updater
- Zabbix Helper Kit — Zabbix Agent
- Удалить из планировщика заданий Windows задание с именем: Zabbix Helper Kit — Zabbix Helper Updater
- Ручками удалить содержимое папки C:\zabbix\
- Вот и всё, можно снова приступать к установке
Установка Zabbix Agent — Дополнительная информация
Первый запуск при ручной установке на компьютер не входящий в домен, необходимо производить от имени локального администратора.
Так же для правильной работы ZHK, необходимо добавить в исключения антивируса папку C:\zabbix\* и приложение *\Zabbix_Helper_Updater.exe. Если антивирус на машине не стоит, всё должно отработать без исключений в Windows Defender.
Пример для Dr.Web
GitHub: Ветка репозитория с версией Zabbix Helper Kit v0.4
4 комментария
Огромное человеческое спасибо!
Но крайне необходима возможность установки в «свою» папку, планируется ли?
Для установки в папку отличную от C:/zabbix, достаточно изменить строку Global Const $g_esLocalRepositoryRoot = «C:\zabbix»
Хотя я и предполагал изначально возможность установки в свою папку, я её таки не тестировал
Большое спасибо за данный материал.
Однако, мне не достает понимания механизма.
Не могли бы вы обяснить, последовательность выполнения действий при обновлении?
В каком файле надо менять версиооность? Надо ли в самом скрипте это менять и занового его компилировать,е сли сам скрипт не меняется?
Еще как правильно прописать внутрь скрипта папку чтобы ее содержимое тоже закачивалось? Например scripts?
У меня получилось следующее:
Global $UserID = «пользователь»
Global $Domain = «localhost»
Global $Password = «пароль»
Global $Source = «\\ip.addrr\distrib\zabbix\scripts\»
Global $Destination = «c:\zabbix\scripts\»
RunAsWait($UserID, $Domain, $Password, 0, @ComSpec & » /c copy » & $Source & » » & $Destination, «», @SW_HIDE)
Как это красиво вставить к вам?
Данный код к несчастью не расчитывался на обновление чего либо кроме файла агента и его файла конфигурации. Связано это с тем что в архитектуре есть еще один модуль, который и отвечал за подгрузку файлов с расширениями и скриптов. К несчастью пока не нахожу времени для того чтобы добить данное решение хотябы до альфа версии, но раз кому-то это оказалось полезным, в ближайший месяц найду время и добавлю недостающий модуль.
Если же чисто в теории, то начиная со строки 175 функция _getZHKUpdaterRemoteVersion($g_sRemoteZHKVersionFilePath) определяет версию удалённого репозитория. Если она больше чем локальная то инициируется загрузка и применение изменений. А т.к. необходимо лишь загрузить папку с юзерпараметрами, данный код можно вставить как раз сюда. Но опять же стоить заметить что если это только юзерпараметры, можно добавить их в основной конфиг и доставлять до конечной машины вообще без каких либо правок в коде Zabbix Helper.