Регулярные выражения

Обзор

Perl Compatible Regular Expressions (PCRE, PCRE2) поддерживаются в Zabbix.

В Zabbix есть два способа использования регулярных выражений:

  • Ввод регулярного выражения вручную
  • Использование глобального регулярного выражения, созданного в Zabbix

Регулярные выражения

Вы можете вручную ввести регулярное выражение в поддерживаемых местах.
Обратите внимание, что выражение не должно начинаться с @, так как этот символ используется в Zabbix для ссылки на глобальные регулярные выражения.

При использовании регулярных выражений возможно исчерпание памяти стека. Подробнее см. в PCRE PERFORMANCE.

Обратите внимание, что при сопоставлении в многострочном режиме якоря ^ и $ соответствуют началу и концу каждой строки соответственно, а не началу и концу всей строки.

Также см. примеры правильного экранирования в различных контекстах.

Глобальные регулярные выражения

Zabbix предоставляет в веб-интерфейсе расширенный редактор для создания и тестирования сложных регулярных выражений.
Чтобы открыть его, перейдите в Administration > General > Regular expressions.
Zabbix включает ряд предопределенных глобальных регулярных выражений в наборе данных по умолчанию.

Вы можете фильтровать список регулярных выражений по имени и описанию, чтобы найти нужные выражения.

Конфигурация

Чтобы создать глобальное регулярное выражение, нажмите Создать регулярное выражение и введите параметры регулярного выражения в форме.

Все обязательные поля ввода отмечены красной звездочкой.

Параметр Описание
Имя Укажите имя регулярного выражения. Допускаются любые символы Unicode.
Выражения Нажмите Добавить в разделе Выражения, чтобы добавить новое подвыражение.
Тип выражения Выберите тип выражения:
Содержит строку - совпадает с подстрокой.
Содержит любую подстроку из списка - совпадает с любой подстрокой из списка, разделенного разделителем. В качестве разделителя можно использовать запятую ,, точку . или косую черту /.
Не содержит строку - совпадает с любой строкой, кроме подстроки.
Соответствует регулярному выражению - совпадает с регулярным выражением.
Не соответствует регулярному выражению - не совпадает с регулярным выражением.
Выражение Введите подстроку/регулярное выражение.
Максимальная длина: 2048 символов.
Разделитель Запятая ,, точка . или косая черта / для разделения текстовых строк в регулярном выражении. Этот параметр активен только при выборе типа выражения Содержит любую подстроку из списка.
С учетом регистра Флажок, указывающий, чувствительно ли регулярное выражение к регистру букв.
Описание Введите описание для регулярного выражения.
Тестовое выражение Значение, используемое для проверки регулярного выражения.

Косая черта / в выражении воспринимается буквально, а не как разделитель. Это позволяет сохранять выражения, содержащие косую черту, без ошибок.

Пользовательское имя регулярного выражения в Zabbix может содержать запятые, пробелы и т. д. В случаях, когда это может привести к неверной интерпретации при ссылке на него (например, запятая в параметре ключа элемента данных), всю ссылку можно заключить в кавычки, например: "\@My custom regexp for purpose1, purpose2".
Имена регулярных выражений не должны заключаться в кавычки в других местах (например, в свойствах правила LLD).

После создания регулярного выражения его можно использовать в нескольких местах в веб-интерфейсе, обращаясь к нему по имени с префиксом @, например @mycustomregexp.

Кнопки формы

Кнопки в нижней части формы позволяют выполнять различные операции:

Button Description
Добавить регулярное выражение. Эта кнопка доступна только для новых регулярных выражений.
Обновить свойства регулярного выражения.
Создать еще одно регулярное выражение на основе свойств текущего регулярного выражения.
Проверить регулярное выражение и его подвыражения на предоставленном значении.
Удалить регулярное выражение.
Отменить редактирование свойств регулярного выражения.

Проверка регулярного выражения

Вы можете проверить регулярное выражение и его подвыражения, введя значение в поле Test expression и нажав кнопку Test button.

В столбце Test result отображается статус каждого подвыражения. Поле Combined result отображает общий статус регулярного выражения. Если определено несколько подвыражений, Zabbix использует логический оператор AND для вычисления Combined result; то есть, если хотя бы один результат равен False, Combined result также будет False.

Регулярные выражения по умолчанию для глобальных правил

Набор данных по умолчанию включает следующие предопределенные глобальные регулярные выражения:

Name Expression Matches
File systems for discovery ^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$ "btrfs" or "ext2" or "ext3" or "ext4" or "reiser" or "xfs" or "ffs" or "ufs" or "jfs" or "jfs2" or "vxfs" or "hfs" or "apfs" or "refs" or "ntfs" or "fat32" or "zfs".
Network interfaces for discovery ^Software Loopback Interface Строки, начинающиеся с "Software Loopback Interface".
^lo$ "lo".
^(In)?[Ll]oop[Bb]ack[0-9._]*$ Строки, при необходимости начинающиеся с "In", затем с "L" или "l", затем с "oop", затем с "B" или "b", затем с "ack" и, при необходимости, далее с любым количеством цифр, точек или символов подчеркивания.
^NULL[0-9.]*$ Строки, начинающиеся с "NULL" и, при необходимости, далее с любым количеством цифр или точек.
^[Ll]o[0-9.]*$ Строки, начинающиеся с "Lo" или "lo" и, при необходимости, далее с любым количеством цифр или точек.
^[Ss]ystem$ "System" или "system".
^Nu[0-9.]*$ Строки, начинающиеся с "Nu" и, при необходимости, далее с любым количеством цифр или точек.
Storage devices for SNMP discovery ^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$ "Physical memory" or "Virtual memory" or "Memory buffers" or "Cached memory" or "Swap space".
Windows service names for discovery ^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$ "MMCSS" or "gupdate" or "SysmonLog" or strings matching "clr_optimization_v2.0.50727_32" or "clr_optimization_v4.0.30319_32", where each dot can be replaced by any character except a newline.
Windows service startup states for discovery ^(automatic|automatic delayed)$ "automatic" or "automatic delayed".

Импорт/экспорт регулярного выражения

Вы можете импортировать или экспортировать глобальные регулярные выражения, как описано на странице настройки экспорта/импорта Regular expressions.

Примеры

Пример исключения точной строки

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

^TESTDATABASE$

И Test result, и Combined result отображают FALSE: имя совпадает с "TESTDATABASE", поэтому условие Does not match regular expression не выполняется.

Пример с встроенным модификатором regex для нечувствительного к регистру совпадения

Используйте следующее регулярное выражение, которое включает встроенный модификатор (?i) для выполнения нечувствительного к регистру совпадения символов "error":

(?i)error

И Test result, и Combined result отображают TRUE: символы "error" совпадают даже при выбранном Case sensitive, потому что встроенный модификатор (?i) делает совпадение нечувствительным к регистру.

Пример с несколькими встроенными модификаторами регулярных выражений

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

(?<=match (?i)eveRything(?-i) after this line\r\n)(?sx).*# comment

где:

  • (?i) - включает нечувствительное к регистру сопоставление;
  • (?-i) - отключает нечувствительное к регистру сопоставление;
  • (?s) - включает режим dotall, позволяя . сопоставляться с символами новой строки;
  • (?x) - включает расширенный режим, позволяя игнорировать пробелы и комментарии в регулярном выражении.

И Test result, и Combined result отображают TRUE: сопоставляются символы, следующие за указанной строкой.

Модификатор g нельзя указывать встроенно. Список доступных модификаторов можно найти на странице man pcresyntax. Для получения дополнительной информации о синтаксисе PCRE см. документацию PCRE в формате HTML.

Поддержка регулярных выражений по расположению

Расположение Регулярное выражение Глобальное регулярное выражение Многострочное сопоставление Комментарии
Элементы данных агента
eventlog[] Да Да Да параметры regexp, severity, source, eventid
eventlog.count[] параметры regexp, severity, source, eventid
log[] параметр regexp
log.count[]
logrt[] Да/Нет параметр regexp поддерживает оба варианта, параметр file_regexp поддерживает только неглобальные выражения
logrt.count[]
proc.cpu.util[] Нет Нет параметр cmdline
proc.get[]
proc.mem[]
proc.num[]
sensor[] параметры device и sensor в Linux 2.4
system.hw.macaddr[] параметр interface
system.sw.packages[] параметр regexp
system.sw.packages.get[] параметр regexp
vfs.dir.count[] параметры regex_incl, regex_excl, regex_excl_dir
vfs.dir.get[] параметры regex_incl, regex_excl, regex_excl_dir
vfs.dir.size[] параметры regex_incl, regex_excl, regex_excl_dir
vfs.file.regexp[] Да параметр regexp
vfs.file.regmatch[]
web.page.regexp[]
SNMP traps
snmptrap[] Да Да Нет параметр regexp
Предобработка значения элемента данных Да Нет Нет параметр pattern
Функции для триггеров/вычисляемых элементов данных
count() Да Да Да параметр pattern, если параметр operator имеет значение regexp или iregexp
countunique() Да Да
find() Да Да
logeventid() Да Да Нет параметр pattern
logsource()
Низкоуровневое обнаружение
Фильтры Да Да Нет поле Regular expression
Переопределения Да Нет в условиях matches, does not match для операций Operation
Условия действий Да Нет Нет в условиях автрорегистрации matches, does not match для Host name и Host metadata
Скрипты Да Да Нет поле Input validation rule
Веб-мониторинг Да Нет Да Variables с префиксом regex:
поле Required string
Контекст пользовательского макроса Да Нет Нет в контексте макроса с префиксом regex:
Функции макросов
regsub() Да Нет Нет параметр pattern
iregsub()
Индикаторы ссылок на картах Да Нет Нет поле Pattern (для текстовых элементов данных)
Сопоставление значков Да Да Нет поле Expression
Сопоставление значений Да Нет Нет поле Value, если тип сопоставления — regexp
Параметры конфигурации агента
AllowKeyRegexp Да Нет Нет Шаблон
DenyKeyRegexp