Как мне настроить 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
Смотрите также официальная документация по параметрам пользователя для получения полной информации.