LINUX.ORG.RU
ФорумAdmin

Zabbix, предобработка + регулярные выражения

 


0

1

Добрый день! Вопрос к специалистам по системе мониторинга 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». Выражение работает отлично, дашборд всё показывает, но только если это выражение в единственном экземпляре. Если вставить оба выражения, то при тестировании в пошаговом режиме, выполняется только первый шаг, будь там число или ошибка, просто при ошибке выражение фейлится и на второе не переходит. Как заставить проверять оба выражения? Ну или может вообще какое-то другое решение подскажете…

Ответ на: -23 от anonymous

Я уже пробовал с минусом, так не работает( Значение должно быть только положительное

Bash_Boy ()
Ответ на: комментарий от Bash_Boy

Я уже пробовал с минусом, так не работает( Значение должно быть только положительное

а что мешает, где ограничение?

может нужно, типа: «сервер1\s(-?[0-9]+)» – не точно, не помню какие там регулярки

«минус ноль или один раз» добавить?

anonymous ()
Ответ на: комментарий от Bash_Boy

Ну или я просто не знаю как в регулярном выражении задать вывод как положительных, так и отрицательных чисел Потому как это «сервер1\s([0-9]+)», даёт возможность отображать только положительные

Bash_Boy ()
Ответ на: комментарий от anonymous

Вы были чуть быстрее)) Да спасибо вот так «сервер1\s(-?[0-9]+)» показывает и отрицательные и положительные. Тогда это всё упрощает) Спасибо!

Bash_Boy ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.