정규 표현식
개요
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$

선택한 Expression type: "Result is FALSE". "TESTDATABASE" 문자열을 포함하는 이름과 매칭하지 않습니다.
인라인 정규 표현식 수정자 사용 예시
문자 "error"를 매칭하기 위해 인라인 수정자 (?i)를 포함한 다음 정규 표현식의 사용 예:
(?i)error

선택한 Expression type: "Result is TRUE". 문자 "error"가 매칭됩니다.
인라인 정규 표현식 수정자의 또 다른 예시
특정 행 이후의 문자를 매칭하기 위해 여러 인라인 수정자를 포함한 다음 정규 표현식의 사용 예:
(?<=match (?i)everything(?-i) after this line\n)(?sx).*# we add s modifier to allow . match newline characters

선택한 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 |