정규 표현식

Zabbix v7.4번역일: 2026-09-09원본 보기

개요

Zabbix는 Perl Compatible Regular Expressions(PCRE, PCRE2)를 지원합니다.

Zabbix에서 정규 표현식을 사용하는 방법은 두 가지입니다:

  • 정규 표현식을 직접 입력
  • Zabbix에서 생성한 전역 정규 표현식 사용

정규 표현식

지원되는 위치에서 정규 표현식을 직접 입력할 수 있습니다. Zabbix에서 @ 기호는 전역 정규 표현식을 참조하는 데 사용되므로, 표현식은 @로 시작할 수 없다는 점에 유의하세요.

정규 표현식을 사용할 때 스택 메모리가 부족해질 수 있습니다. 자세한 내용은 PCRE PERFORMANCE를 참고하세요.

다중 행 매칭에서 ^와 $ 앵커는 전체 문자열의 시작/끝이 아니라 각 행의 시작/끝에 매칭된다는 점에 유의하세요.

다양한 상황에서의 올바른 이스케이프 예시도 참고하세요.

전역 정규 표현식

Zabbix 프런트엔드에는 복잡한 정규 표현식을 생성하고 테스트할 수 있는 고급 편집기가 있습니다.

이 방식으로 정규 표현식을 생성하면, 이름 앞에 @를 붙여(예: @mycustomregexp) 프런트엔드 여러 곳에서 참조하여 사용할 수 있습니다.

전역 정규 표현식을 생성하려면:

  • 이동: Administration > General
  • 드롭다운에서 Regular expressions 선택
  • New regular expression 클릭

Expressions 탭에서는 정규 표현식 이름을 설정하고 하위 표현식을 추가할 수 있습니다.

필수 입력 필드는 모두 빨간색 별표로 표시됩니다.

Parameter < Description
Name < 정규 표현식 이름을 설정합니다. 모든 유니코드 문자를 사용할 수 있습니다.
Expressions < Expressions 블록에서 Add를 클릭하여 새 하위 표현식을 추가합니다.
Expression type 표현식 유형을 선택합니다:
Character string included - 부분 문자열과 매칭
Any character string included - 구분된 목록의 부분 문자열 중 하나와 매칭. 구분 목록에는 쉼표(,), 마침표(.), 슬래시(/)가 포함됩니다.
Character string not included - 해당 부분 문자열을 제외한 모든 문자열과 매칭
Result is TRUE - 정규 표현식과 매칭
Result is FALSE - 정규 표현식과 매칭하지 않음
^ Expression 부분 문자열/정규 표현식을 입력합니다.
Delimiter < 정규 표현식에서 텍스트 문자열을 구분하는 쉼표(,), 마침표(.), 슬래시(/)입니다. 이 매개변수는 "Any character string included" 표현식 유형이 선택된 경우에만 활성화됩니다.
Case sensitive < 정규 표현식이 대소문자를 구분하는지 지정하는 체크박스입니다.

표현식 안의 슬래시(/)는 구분자가 아니라 그대로 문자로 취급됩니다. 이 덕분에 슬래시가 포함된 표현식도 오류 없이 저장할 수 있습니다.

Zabbix에서 사용자 지정 정규 표현식 이름에는 쉼표, 공백 등이 포함될 수 있습니다. 이로 인해 참조 시 오해석될 수 있는 경우(예: 아이템 키 매개변수에 쉼표가 있는 경우), 전체 참조를 다음과 같이 따옴표로 감쌀 수 있습니다: "@My custom regexp for purpose1, purpose2".
다른 위치(예: LLD 규칙 속성)에서는 정규 표현식 이름을 따옴표로 감싸면 안 됩니다.

Test 탭에서는 테스트 문자열을 입력하여 정규 표현식과 그 하위 표현식을 테스트할 수 있습니다.

결과에는 각 하위 표현식의 상태와 전체 사용자 지정 표현식 상태가 표시됩니다.

전체 사용자 지정 표현식 상태는 Combined result로 정의됩니다. 여러 하위 표현식이 정의된 경우 Zabbix는 Combined result를 계산할 때 AND 논리 연산자를 사용합니다. 즉, 하나라도 Result가 False이면 Combined result도 False 상태가 됩니다.

기본 전역 정규 표현식

Zabbix는 기본 데이터셋에 여러 전역 정규 표현식을 포함하고 있습니다.

Name Expression Matches
File systems for discovery `^(btrfs ext2
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
Windows service names for discovery `^(MMCSS gupdate
Windows service startup states for discovery `^(automatic automatic delayed)$`

예시

예시 1

특정 이름을 가진 데이터베이스를 제외하고 데이터베이스를 검색(low-level discovery)하는 다음 표현식의 사용 예:

^TESTDATABASE$

regexp_expr_2.png

선택한 Expression type: "Result is FALSE". "TESTDATABASE" 문자열을 포함하는 이름과 매칭하지 않습니다.

인라인 정규 표현식 수정자 사용 예시

문자 "error"를 매칭하기 위해 인라인 수정자 (?i)를 포함한 다음 정규 표현식의 사용 예:

(?i)error

regexp_expr_3a.png

선택한 Expression type: "Result is TRUE". 문자 "error"가 매칭됩니다.

인라인 정규 표현식 수정자의 또 다른 예시

특정 행 이후의 문자를 매칭하기 위해 여러 인라인 수정자를 포함한 다음 정규 표현식의 사용 예:

(?<=match (?i)everything(?-i) after this line\n)(?sx).*# we add s modifier to allow . match newline characters

regexp_expr_4_new.png

선택한 Expression type: "Result is TRUE". 특정 행 이후의 문자가 매칭됩니다.

g 수정자는 행 안에 지정할 수 없습니다. 사용 가능한 수정자 목록은 pcresyntax man page에서 확인할 수 있습니다. PCRE 구문에 대한 자세한 내용은 PCRE HTML documentation을 참고하세요.

위치별 정규 표현식 지원

Location < Regular expression Global regular expression Multiline matching Comments
Agent items < < < < <
< eventlog[] Yes Yes Yes regexp, severity, source, eventid parameters
< eventlog.count[] ^ ^ ^ regexp, severity, source, eventid parameters
^ log[] ^ ^ ^ regexp parameter
^ log.count[] ^ ^ ^ ^
^ logrt[] ^ Yes/No ^ regexp parameter supports both, file_regexp parameter supports non-global expressions only
^ logrt.count[] ^ ^ ^ ^
^ proc.cpu.util[] ^ No No cmdline parameter
^ proc.get[] ^ ^ ^ ^
^ proc.mem[] ^ ^ ^ ^
^ proc.num[] ^ ^ ^ ^
^ sensor[] ^ ^ ^ device and sensor parameters on Linux 2.4
^ system.hw.macaddr[] ^ ^ ^ interface parameter
^ system.sw.packages[] ^ ^ ^ regexp parameter
^ system.sw.packages.get[] ^ ^ ^ regexp parameter
^ vfs.dir.count[] ^ ^ ^ regex_incl, regex_excl, regex_excl_dir parameters
^ vfs.dir.get[] ^ ^ ^ regex_incl, regex_excl, regex_excl_dir parameters
^ vfs.dir.size[] ^ ^ ^ regex_incl, regex_excl, regex_excl_dir parameters
^ vfs.file.regexp[] ^ ^ Yes regexp parameter
^ vfs.file.regmatch[] ^ ^ ^ ^
^ web.page.regexp[] ^ ^ ^ ^
SNMP traps < < < < <
< snmptrap[] Yes Yes No regexp parameter
Item value preprocessing < Yes No No pattern parameter
Functions for triggers/calculated items < < < < <
< count() Yes Yes Yes pattern parameter if operator parameter is regexp or iregexp
< countunique() Yes Yes ^ ^
< find() Yes Yes ^ ^
^ logeventid() Yes Yes No pattern parameter
^ logsource() ^ ^ ^ ^
Low-level discovery < < < < <
< Filters Yes Yes No Regular expression field
^ Overrides Yes No ^ In matches, does not match options for Operation conditions
Action conditions < Yes No No In matches, does not match options for Host name and Host metadata autoregistration conditions
Scripts < Yes Yes No Input validation rule field
Web monitoring < Yes No Yes Variables with a regex: prefix
Required string field
User macro context < Yes No No In macro context with a regex: prefix
Macro functions < < < < <
< regsub() Yes No No pattern parameter
^ iregsub() ^ ^ ^ ^
Link indicators in maps < Yes No No Pattern field (for text items)
Icon mapping < Yes Yes No Expression field
Value mapping < Yes No No Value field if mapping type is regexp