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

Обзор

Zabbix поддерживает Perl совместимые регулярные выражения (PCRE, PCRE2).

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

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

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

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

При использовании регулярных выражений возможно переполнение стека. Дополнительную информацию смотрите на странице руководства pcrestack.

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

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

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

В Zabbix веб-интерфейсе имеется продвинутый редактор для создания и тестирования сложных регулярных выражений.

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

Для создания глобального регулярного выражения:

  • Перейдите в: Администрирование → Общие
  • Выберите Регулярные выражения в выпадающем списке
  • Нажмите на Новое регулярное выражение

Вкладка Выражения позволяет указать имя регулярного выражения и добавить подвыражения.

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

Параметр Описание
Имя Укажите имя регулярного выражения. Разрешены любые Unicode символы.
Выражения Нажмите на Добавить в Блоке выражений, чтобы добавить новое подвыражение.
Тип выражения Выберите тип выражения:
Строка символов включена - совпадение по подстроке
Любая строка символов включена - совпадение по любой из подстрок из списка с разделителями. Разделители в списке включают в себя запятую (,), точку (.) или прямую косую черту (/).
Строка символов не включена - совпадение по любой строке за исключением подстроки
Результат ПРАВДА - совпадение с регулярным выражением
Результат ЛОЖЬ - отсутствие совпадения с регулярным выражением
Выражение Укажите подстроку/регулярное выражение.
Разделитель Запятая (,), точка (.) или прямая косая черта (/) для разделения текстовых строк в регулярном выражении. Этот параметр доступен только когда выбран режим типа выражения "Любоая строка символов включена".
Регистрозависимое Отметьте эту опцию чтобы указать является ли регулярное выражение чувствительным к регистру букв.

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

В Zabbix имя пользовательского регулярного выражения может содержать запятые, пробелы и т.п. В этих случаях, там где имеется вероятность неверной интерпретации при использовании ссылки (например, запятая в параметре ключа элемента данных) нужно всю ссылку заключить в кавычки, вот таким образом: "\@Мое выражение для цели, цели2".
В других местах (например, в свойствах LLD правил) имена регулярных выражение нельзя заключать в кавычки.

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

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

Name Expression Matches
Файловые системы для обнаружения ^(btrfs|ext2|ext3|ext4|jfs|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|refs|apfs|ntfs|fat32|zfs)$ "btrfs" или "ext2" или "ext3" или "ext4" или "jfs" или "reiser" или "xfs" или "ffs" или "ufs" или "jfs" или "jfs2" или "vxfs" или "hfs" или "refs" или "apfs" или "ntfs" или "fat32" или "zfs"
Сетевые интерфейсы для обнаружения ^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", после которых опционально может следовать любое количество цифр или точек.
Устройства хранения для SNMP-обнаружения ^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$ "Physical memory" или "Virtual memory" или "Memory buffers" или "Cached memory" или "Swap space"
Имена служб Windows для обнаружения ^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$ "MMCSS" или "gupdate" или "SysmonLog" или строки вида "clr_optimization_v2.0.50727_32" и "clr_optimization_v4.0.30319_32", где вместо точек можно использовать любой символ, кроме символа новой строки.
Состояния запуска служб Windows для обнаружения ^(automatic|automatic delayed)$ "automatic" или "automatic delayed"

Примеры

Пример

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

^TESTDATABASE$

regexp\_expr\_2.png

Выбран Тип выражения: "Результат ЛОЖЬ". Не соответствует имени, содержащему строку "TESTDATABASE".

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

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

(?i)error

regexp\_expr\_3a.png

Выбран Тип выражения: "Результат ПРАВДА". Есть соответствие по символам "error".

Другой пример с использованием inline модификатора регулярного выражения

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

(?<=match (?i)everything(?-i) after this line\n)(?sx).*# мы добавили s модификатор, чтобы разрешить . соответствие символам перехода на новую строку

regexp\_expr\_4\_new.png

Выбран Тип выражения: "Релультат ПРАВДА". Символы после указанной строки совпадают.

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

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

Расположение Регулярное выражение Глобальное регулярное выражение Многострочное сопоставление Комментарии
Элементы данных агента
eventlog[] Yes Yes Yes параметры regexp, severity, source, eventid
eventlog.count[] параметры regexp, severity, source, eventid
log[] параметр regexp
log.count[]
logrt[] Yes/No параметр regexp поддерживает оба варианта, параметр file_regexp поддерживает только неглобальные выражения
logrt.count[]
proc.cpu.util[] No No параметр 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[] Yes параметр regexp
vfs.file.regmatch[]
web.page.regexp[]
SNMP traps
snmptrap[] Yes Yes No параметр regexp
Предобработка значений элементов данных Yes No No параметр pattern
Функции для триггеров/вычисляемых элементов данных
count() Yes Yes Yes параметр pattern, если параметр operator имеет значение regexp или iregexp
countunique() Yes Yes
find() Yes Yes
logeventid() Yes Yes No параметр pattern
logsource()
Обнаружение низкого уровня
Фильтры Yes Yes No поле Regular expression
Переопределения Yes No В параметрах matches, does not match для условий Operation
Условия действий Yes No No В параметрах matches, does not match для условий авторегистрации Host name и Host metadata
Скрипты Yes Yes No поле Input validation rule
Веб-мониторинг Yes No Yes Variables с префиксом regex:
поле Required string
Контекст пользовательского макроса Yes No No В контексте макроса с префиксом regex:
Функции макросов
regsub() Yes No No параметр pattern
iregsub()
Индикаторы связей на картах Yes No No поле Pattern (для текстовых элементов данных)
Сопоставление иконок Yes Yes No поле Expression
Сопоставление значений Yes No No поле Value, если тип сопоставления — regexp