Добрый день! Вопрос к специалистам по системе мониторинга zabbix. У меня есть некий скрипт на одном сервере, который собирает статистику. Статистика довольно простая - количество подключений к серверам. Этот скрипт возвращает забиксу данные следующего вида:
"сервер1 72
сервер2 0
сервер3 25"
и т.д. Заббикс, всё это дело принимает в общий айтем и потом через зависимые айтемы передают на дашборд после предобработки. Предобработка, в зависимых айтемах выглядит следующим образом: Тип:«регулярное выражение» Параметры: «сервер1\s([0-9]+)» Вывод: «\1». т.е. на дашборд приходят только цифровые значения получаемых данных. Тут вопросов нет, всё работает как нужно. Но вот бывают ситуации, когда, например, какой-либо сервер недоступен, ну перегружается или просто выключен, тогда скрипт передаёт следующее: «сервер1 ОШИБКА: 23» И по коду ошибки мы понимаем, что с ним происходит. И вот тут начинаются проблемы с zabbix, он не может отобразить данную ошибку на дашборде, потому как зависимые айтемы имеют тип информации «Numeric (unsigned)», можно было бы в скрипте убрать «ОШИБКА:» и тогда будет всё работать, но мы не будем понимать - это сейчас 23 пользователя на сервере или ошибка №23. Есть мысль обойти эту проблему путём преобразования значений, но тогда нужно использовать второе регулярное выражение. Я создал вот такое выражение: Тип:«регулярное выражение» Параметры: «сервер1\s([A-Z:]+)\s([0-9]+)» Вывод: «666666» В преобразовании, я задал, что коду «666666» (такого количества подключений быть не может) соответствует «ОШИБКА: 23». Выражение работает отлично, дашборд всё показывает, но только если это выражение в единственном экземпляре. Если вставить оба выражения, то при тестировании в пошаговом режиме, выполняется только первый шаг, будь там число или ошибка, просто при ошибке выражение фейлится и на второе не переходит. Как заставить проверять оба выражения? Ну или может вообще какое-то другое решение подскажете…