Назад | Перейти на главную страницу

Как заставить Zabbix сообщать об устаревших пакетах?

Как мне настроить Zabbix на создание отчетов для серверов Linux с устаревшими пакетами?

Следующая команда оболочки сообщает, доступны ли обновления пакета:

/usr/bin/yum --debuglevel 2 --security check-update 2>/dev/null \
    | grep -P '(?<! 0 packages) available$'

Если обновлений нет, возвращается пустая строка. Если обновления доступны, возвращает:

10 packages available

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

UserParameter=yum.updates,/usr/bin/yum --debuglevel 2 --security check-update 2>/dev/null | grep -P '(?<! 0 packages) available$'

Поместите эту строку либо в основной файл конфигурации для Zabbix агента (zabbix_agentd.conf), либо в отдельный файл (что может быть лучше, если вы планируете распространять этот параметр пользователя на большом количестве серверов) и включите его или его каталог, используя Include директива.

В текущей форме у вас есть параметр пользователя, который возвращает строку, поэтому в веб-интерфейсе Zabbix вы должны настроить элемент с помощью ключа yum.updates и тип «Персонаж». Тогда триггер будет:

{host:yum.updates.strlen()}#0

Однако проблема со строковыми элементами заключается в том, что их невозможно изобразить. Было бы неплохо иметь элемент, который возвращает целое число с количеством доступных обновлений, например (обратите внимание на конечную часть):

UserParameter=yum.updates,/usr/bin/yum --debuglevel 2 --security check-update 2>/dev/null | grep -P '...' || echo 0

Вам также придется изменить регулярное выражение в grep так что он возвращает только целое число.

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

{host:yum.updates.last()}>10

Смотрите также официальная документация по параметрам пользователя для получения полной информации.