Я проверяю, произошла ли ошибка, проверяя, соответствует ли последнее значение регулярному выражению.
({myhost.com:my.item.regexp(^ERROR$)})#0
Мне нужна некоторая терпимость, проверяя не последние, а последние N значений на соответствие регулярному выражению, то есть последние 2-3 значения.
Как я могу этого добиться?
В соответствии с Документация по функциям Zabbix, функция regexp () принимает второй параметр - количество секунд или значений для анализа. К сожалению, он вернет 1, если хотя бы одно из значений совпадает, а это не то, что вам нужно - вам нужно, чтобы все значения совпадали.
Поэтому, если ваше регулярное выражение достаточно простое, рассмотрите возможность использования функции count () с операторами «eq» или «like»:
{host:item.count(#3,ERROR,eq)} = 3
{host:item.count(#3,ERROR,like)} = 3
Также существует запрос функции, позволяющий использовать регулярные выражения в функции count (), и он отслеживается в ZBXNEXT-1250.
Хотел бы что-нибудь
({myhost.com:my.item.regexp(^ERROR$).max(#3)}=0)
работать на вас? Если нет, просто используйте встроенный конструктор выражения триггера в веб-интерфейсе Zabbix, он упрощает, если не упрощает, такие вещи.