Zabbix Agent Автообновление расширений — это следующий шаг развёртывания Zabbix Helper Kit, маленького набора утилит для мастдая, распространяемого в виде исходных кодов уровня «и та-а-ак пойдет». Тем не менее я использую его в продакшене 🙂
И таки на удивление, с момента начала ремастеринга кода и его публикации на гитхабе прошло меньше года, а на свет вышла v0.5 — первая рабочая альфа.
Рекомендую перед прочтением прочитать:
- Zabbix Helper Kit и автоматизация обновления Zabbix Agent
- Zabbix Helper Kit v0.3 — Настройка репозитория
- Установка Zabbix Agent — Zabbix Helper Kit v0.4
Zabbix Agent автообновление файлов расширений
Текущая структура репозитория:
/ftp/zabbix/ +-----|amd64/ +-----|zabbix_agentd.exe |i386/ +-----|zabbix_agentd.exe |update/ +-----|какие-тофайлы-с-юзерпараметрами.conf |какие-то-расширения.exe |да-что-угодно-вообще-что-надо-доставить-на-машину |zabbix_agentd.win.conf |ZHK_Updater.cfg |zhk_zu_version |zhk_zh_version |ZHK_Helper.cfg
Вкратце:
- amd64 — папка где лежит агент для 64-битных систем
- i386 — папка где лежит агент для 32-битных систем
- update — папка где лежат всякие конфиги содержащие юзерпараметры, а так же различные утилиты расширающие функционал заббикс агента, я называю их просто «расширения для Zabbix Agent». О них подробнее будет ниже.
- zabbix_agentd.win.conf — файл основного конфига заббикс агента. В нём через Include должна быть подлинкована папка папка zabbix_helper с маской *.conf
- ZHK_Updater.cfg — Файл с конфигом Zabbix Helper Updater для различных оверрайдов и хранения параметров
- zhk_zu_version — файл в котором хранится версия репозитория для Zabbix Helper Updater. Именно с числом в этом файле, данный модуль сопоставляет свою локальную версию.
- zhk_zh_version — файл в котором хранится версия репозитория для Zabbix Helper. Именно с числом в этом файле, данный модуль сопоставляет свою локальную версию.
- ZHK_Helper.cfg — текущая версия Zabbix Helper — сырая альфа где почти всё захардкожено. В будущем планируется реализовать оверрайды.
Zabbix Helper — Zabbix Agent автообновление расширений
Данный модуль отвечает за автоматическое обновление расширений для Zabbix Agent. Что из себя представляют расширения? В моём понимании это те или иные исполняемые файлы которые своим присутствием позволяют радикально расширить функционал заббикс агента. Это НЕ UserParameters, но это то, для эксплуатации чего, на машину придётся так же доставить файл содержащий в себе соответствующий UserParameter который позволит агенту заббикс задействовать данное расширение.
Пример расширения 1
Например у нас есть машина представляющая собою какую-нибудь онлайн кассу на какой-нибудь алкашной точке. Там есть какой-нибудь ненавистный сервис написанный кривожопыми ублюдками, который передаёт в егаис инфу по проданной алкашке. Этот сервис постоянно виснет и например если будет в отключке дольше чем N времени то владелец алкоточки огребёт от контрольных органов. Соответственно вы как IT аутсорсер данной алкоточки тоже огребёте или лишитесь заказчика.
На помощь приходит заббикс агент. Цепляем эту точку к своей какой-нибудь специально поднятой для этого сети через впн. Запускаем на удалённой машине Zabbix Helper Updater, после чего туда начинает деплоиться кусочек нашей инфраструктуры заббикса. Пишем на том же автоите расширение, которое проверяет статус сервиса который нам надо мониторить и возвращает результат либо на Zabbix Agent, который переправляет его на наш сервер, либо пуляет инфу в snmp trap заббикс сервера (я больше люблю первый вариант). В результате имеем мониторинг работоспособности ублюдского сервиса на удалённой машине.
Пишем расширение которое может прибить этот сервис и запустить его повторно. В конечном итоге имеем файл с юзерпараметрами для наших двух расширений и сами расширения в папке update нашего репозитория. Zabbix Helper при следующей проверке обнаружит новую версию репозитория, закачает и применит обнову. Как результат мы имеем желаемый функционал на удалённой точке. Либо на десятках — сотнях удалённых точек, всё зависит от масштабов.
Предвидя людей которые буду писать про то что «Есть куча специализированного софта который умеет это делать», да, так и есть. Но когда я реализовывал именно описанную выше схему, егаис лишь зарождался и такого софта небыло. Сейчас это лишь ванильный пример прямиком из каменного века, но зато наглядный. В общем расширения — это такие штуки, которые в 99% случаев ограничены лишь вашей фантазией и близости расположения ваших рук к заднице. Сделали ещё расширения? Zabbix Agent автообновление расширений позволит доставить это расширение на все подключенные машины и ввести их в действие уже через час.
Пример расширения 2
Так же, одним из вечно актуальных примеров могут быть какие-нибудь хитрые пинги, с условиями и проверками всяких там триггеров, реализовать которые в виде сторонней утилиты займет 5 секунд, а делать через заббикс дорого и долго.
Из выше изложенного думаю вы поняли что я могу до обосрания перечислить подобные примеры :). Думаю каждый может. Однако вернёмся к Zabbix Helper Kit.
Схема работы
Во-первых думаю важным будет сказать, что Zabbix Helper — не сможет работать в системе самостоятельно. Точнее работать то сможет, но приехать туда самостоятельно не сумеет. Во-вторых так же не сумеет самостоятельно запилиться в систему. В-третьих заббикс хэлпер не сумеет сам себя обновить. Поэтому Zabbix Helper доставляется в целевую систему после Zabbix Helper Updater, и уже после доставки и установки, начинает засасывать из репозитория все лежащие там расширения.
Алгоритм работы — Zabbix Agent Автообновление расширений
- При запуске авторизовываемся на ftp сервере с помощью данных указанных в переменных
$g_sFTPServer, $g_sFTPUsername, $g_sFTPPassword
- С помощью переменных
$g_sRemoteRepositoryPath, $g_sRemoteZHKVersionFileName
считываем из репозитория число - Сравниваем полученное число с числом указанным в переменной
$g_fZHKLocalRepositoryVersion
. Если полученное число больше — нужно обновиться, иначе завершаем работу - Для обновления скачиваем папку update из удалённого репозитория к себе в папку update
- Смотрим содержимое папки update и ищим там .exe файлы выдёргивая их названия
- Ищем в системе процессы с названиями аналогичными названиями exe файлов из папки Update. Если что-то нашли — то убиваем такой процесс.
- Бэкапим папку zabbix_helper и удаляем её
- Перемещаем файлы из папки update в zabbix_helper и удаляем её
- В конце, перезапускаем заббикс агент чтобы изменения вступили в силу
Собственоо вот и вся не хитрая манипуляция. Кроме того стоит добавить что в данный момент версия репозитория для Zabbix Helper жёстко вшита в код в виде числа 0.5, поэтому управлять включением и отключением автоматических обновлений нам придётся через репозиторий а не файл конфигурации. Указываем в файле zhk_zh_version число больше 0.5 и Zabbix Helper начинает каждый час перекачивать файлы и перезапускать Zabbix Agent. Указываем число меньше 0.5 и обновления расширений прекращаются пока снова содержимое файла версии не станет меньше 0.5. Будьте внимательны! Особенно те кто сидит на мобильных интернетах!
P.S.
Однако наверное стоит добавить что установка Zabbix Helper Kit v0.5 происходит в 3 этапа:
- На целевом компьютере запускается Zabbix Helper Updater (первый раз с правами администратора). Запустившись Zabbix Helper Updater создаёт задачу на запуск себя каждый час до скончания веков, подтягивает Zabbix Agent, его файл конфигурации, всё устанавливает, создаёт файл с триггерами сигнализирующими что Zabbix Helper Updater и Zabbix Agent успешно установлены. С этого момента Zabbix Agent на основе файла конфигурации скачанного из репозитория, уже начинает работать и подключаться к указанному в конфиге серверу. Zabbix Helper Updater завершает работу
- Zabbix Helper Updater запускается по расписанию, обнаруживает оверрайд
DeployZabbixHelper=1
, а так же версию удалённого репозитория болшую чем локальная и устанавливает Zabbix Helper. - Третьим шагом будет запуск по расписанию Zabbix Helper’a с последующей подгрузкой расширений. На этом этапе вся наша локальная мини инфраструктура войдёт в рабочий режим. Больше для донастройки заббикс агента бегать до этой машины не придётся.
Установка Zabbix Helper во время установки Zabbix Helper Updater по умолчанию отключена. Другими словами, не всем нужны расширения на локальных машинах. Поэтому когда админ определяется что пришло время доставить на машины Zabbix Helper, он увеличивает версию репозитория в zhk_zh_version, и при следующем запуске силами Zabbix Helper Updater на компьютер приезжает и запиливается в автозапуск Zabbix Helper.
Ссылка на репозиторий с версией v0.5
5 комментариев
2020/04/17 21:15:17 FTP сессия инициализирована
2020/04/17 21:15:17 Подключение к FTP установлено
2020/04/17 21:15:17 Проверяю версию ZHK Module в удалённом репозитории
2020/04/17 21:15:17 Путь к файлу версии: /***//zhk_zh_version
2020/04/17 21:15:17 Файл обнаружен
2020/04/17 21:15:18 Версия ZHK Module в репозитории:5.3
2020/04/17 21:15:18 Локальная версия устарела, необходимо обновление
2020/04/17 21:15:18 Скачиваю обновление
2020/04/17 21:15:18 Директория update создана
2020/04/17 21:15:18 Качаю файл .
2020/04/17 21:15:18 Качаю файл ..
2020/04/17 21:15:18 Качаю файл 1.bat
2020/04/17 21:15:18 Качаю файл 2.exe
2020/04/17 21:15:18 Загрузка обновлений завершена
2020/04/17 21:15:18 Останавливаю сервис Zabbix Agent
2020/04/17 21:15:18 Команда выполнена
2020/04/17 21:15:18 Использованная команда: C:\WINDOWS\system32\cmd.exe /c net stop «Zabbix Agent»
2020/04/17 21:15:23 В папке update не обнаружены exe файлы
2020/04/17 21:15:23 Не удалось создать резервную копию файлов
2020/04/17 21:15:23 Не удалось удалить папку с хэлперами
2020/04/17 21:15:23 Не удалось применить обновление
директория update не создаётся
и так же не создаётся лог файл..
что можно посмотреть?
Судя по логу там 4 непонятных файла
Строка 116:
Local $asExceptions[2] = [«Zabbix_Helper.exe», «Zabbix_Helper_Updater.exe»]
Оно ищет два конкретных exe файла чтобы понять что можно ставить обнову.
файла как раз два,
Zabbix_Helper.exe», «Zabbix_Helper_Updater.exe в папке есть
——-
и так же не создаётся лог файл..
так же
12 13 строки
#include
#include
инклуд есть а файлов нет
так же не очень понятно
зачем
Zabbix_Helper_Kit.au3 если это
Zabbix_Helper_Kit-Zabbix_Updater.au3
——-
«Создавать правило для него в брандмауэре Windows.
Записвывать в брандмауэр правило для себя.
Запиливаться в планировщик задач и запускаться каждый час:
Если компьютер в домене то имени заданной учётной записи.
Если в рабочей группе то от имени системы.»
——-
тоже не работает
Запускается от админа? Исключения в антивирусах прописаны?