Zabbix — это универсальный инструмент мониторинга, способный отслеживать динамику работы серверов и сетевого оборудования, быстро реагировать на внештатные ситуации и предупреждать возможные проблемы с нагрузкой. Система мониторинга Zabbix может собирать статистику в указанной рабочей среде и действовать в определенных случаях заданным образом.
В один прекрасный день мне надоело заходить на каждый свой deb-подобный сервер и проверять состояние обновления там. Путём не долгого, но очень увлекательного путешествия по интернету, я наткнулся на GitHub‘e на интересную реализацию данной задачи. Выложил её пользователь под ником — The Ranger. В чём заключается суть (беру описание со страницы автора):
Этот шаблон использует параметр моделирования обновления apt-get -s upgrade. По этой причине пользователю Zabbix не нужно предоставлять привилегии суперпользователя.
Однако для обновления репозиториев APT требуется root-доступ. Поскольку Zabbix запускается под управлением выделенного пользователя, это можно сделать либо с помощью sudo в приведенном ниже сценарии настройки агента (используя выделенную запись crontab для периодического вызова apt-get update), либо используя функциональность APT::Periodic, встроенную в саму систему APT. Поддержка APT::Periodical включена в эту настройку.
Поскольку APT::Periodic выполняется с помощью уже существующего скрипта обслуживания APT, расположенного в cron.daily, то минимальный период обновления репозиториев составляет один раз в день. Если требуется чаще проверять — используйте отдельный cron.hourly для почасового выполнения.
Как производится установка
Создаём дополнительную конфигурацию APT:
nano /etc/apt/apt.conf.d/02periodic
Заносим следующие данные:
APT::Periodic::Enable "1";
APT::Periodic::Update-Package-Lists "1";
После сохранения добавляем конфигурационный файл в Zabbix-agent (для zabbix-agent’а первой версии):
nano /etc/zabbix/zabbix_agentd.d/apt.conf
Или конфигурационный файл в Zabbix-agent2 (для zabbix-agent’а второй версии):
nano /etc/zabbix/zabbix_agent2.d/apt.conf
и вносим следующие настройки:
# Treat security and regular updates differently
# This is just a simulation, that can be run under zabbix user
# Since updating packages lists (apt-get update) requires root user,
# use APT::Periodic or some other functionality for that
# UserParameter=apt.all,apt-get -s dist-upgrade | grep -ci '^\s*Inst.*security.*' | tr -d '\n'
UserParameter=apt.all,apt-get -s dist-upgrade | grep -ci '^\s*Inst.*.*' | tr -d '\n'
UserParameter=apt.security,apt-get -s upgrade | grep -ci ^inst.*security | tr -d '\n'
UserParameter=apt.updates,apt-get -s dist-upgrade | grep -Pc '^Inst(?:(?!security).)*$' | tr -d '\n'
Строка «UserParameter=apt.all,apt-get -s dist-upgrade | grep -ci ‘^\s*Inst.*.*’ | tr -d ‘\n’» собирает информацию о всех обновлениях, строка «UserParameter=apt.security,apt-get -s upgrade | grep -ci ^inst.*security | tr -d ‘\n’» отображает информацию об обновления безопасности, а строка «UserParameter=apt.updates,apt-get -s dist-upgrade | grep -Pc ‘^Inst(?:(?!security).)*$’ | tr -d ‘\n’» — обо всех оставшихся обновлениях.
Последним этапом по настройке агента осталось перезапустить службу Zabbix-agent.
Для zabbix-agent’а первой версии:
systemctl restart zabbix-agent
Для zabbix-agent’а второй версии:
systemctl restart zabbix-agent2
Для настройки на Zabbix-сервере необходимо импортировать шаблон. Скачать его можно здесь или по ссылке в конце страницы.
Источник: https://github.com/theranger/zabbix-apt