컨텍스트 매크로

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

개요

사용자 매크로에는 선택적으로 컨텍스트를 사용할 수 있으며, 이를 통해 기본값을 컨텍스트에 맞는 값으로 재정의할 수 있습니다.

컨텍스트는 매크로 이름 뒤에 붙습니다. 구문은 컨텍스트가 정적 텍스트 값인지에 따라 달라집니다:

{$MACRO:"static text"}

또는 정규 표현식인 경우:

{$MACRO:regex:"regular expression"} 

정규 표현식 컨텍스트를 가진 매크로는 사용자 매크로 설정에서만 정의할 수 있다는 점에 유의하세요. 트리거 표현식처럼 다른 곳에서 regex: 접두사를 사용자 매크로 컨텍스트로 사용하면 정적 컨텍스트로 취급됩니다.

컨텍스트 인용 부호는 선택 사항입니다(중요 사항도 참조).

매크로 컨텍스트 예시:

예시 설명
{$LOW_SPACE_LIMIT} 컨텍스트가 없는 사용자 매크로.
{$LOW_SPACE_LIMIT:/tmp} 컨텍스트가 있는 사용자 매크로(정적 문자열).
{$LOW_SPACE_LIMIT:regex:"^/tmp$"} 컨텍스트가 있는 사용자 매크로(정규 표현식). {$LOW_SPACE_LIMIT:/tmp}와 동일합니다.
{$LOW_SPACE_LIMIT:regex:"^/var/log/.*$"} 컨텍스트가 있는 사용자 매크로(정규 표현식). /var/log/로 시작하는 모든 문자열과 일치합니다.

사용 사례

컨텍스트 매크로를 정의하면 트리거 표현식에서(로우레벨 디스커버리로 수집한 값을 기반으로) 더 유연한 임계값을 구현할 수 있습니다. 예를 들어 다음과 같은 매크로를 정의할 수 있습니다:

  • {$LOW_SPACE_LIMIT} = 10
  • {$LOW_SPACE_LIMIT:/home} = 20
  • {$LOW_SPACE_LIMIT:regex:"^/[a-z]+$"} = 30

그런 다음 마운트된 파일 시스템 디스커버리용 트리거 프로토타입에서 로우레벨 디스커버리 매크로를 매크로 컨텍스트로 사용할 수 있습니다:

last(/host/vfs.fs.size[{#FSNAME},pfree])<{$LOW_SPACE_LIMIT:"{#FSNAME}"}

디스커버리 이후에는 발견된 마운트 지점이나 파일 시스템 유형에 따라 트리거에 서로 다른 저용량 임계값이 적용됩니다. 다음의 경우 장애 이벤트가 생성됩니다:

  • /home 폴더의 여유 디스크 공간이 20% 미만인 경우
  • 정규식 패턴과 일치하는 폴더(예: /etc, /tmp, /var)의 여유 디스크 공간이 30% 미만인 경우
  • 정규식 패턴과 일치하지 않고 /home도 아닌 폴더의 여유 디스크 공간이 10% 미만인 경우

중요 사항

  • 컨텍스트가 있는 사용자 매크로가 두 개 이상 존재하면 Zabbix는 먼저 단순 컨텍스트 매크로를 매칭하려 시도한 후, 정규 표현식이 있는 컨텍스트 매크로를 정해지지 않은 순서로 매칭합니다.

정의되지 않은 동작을 피하려면 같은 문자열에 매칭되는 서로 다른 컨텍스트 매크로를 만들지 마세요.

  • 컨텍스트가 있는 매크로를 호스트, 연결된 템플릿, 전역에서 찾지 못하면 컨텍스트가 없는 매크로를 검색합니다.
  • 컨텍스트에서는 로우레벨 디스커버리 매크로만 지원됩니다. 그 외의 매크로는 무시되고 일반 텍스트로 취급됩니다.

기술적으로 매크로 컨텍스트는 아이템 키 파라미터와 유사한 규칙으로 지정되지만, , 문자가 있어도 매크로 컨텍스트는 여러 파라미터로 파싱되지 않는다는 점이 다릅니다:

  • 컨텍스트에 } 문자가 포함되어 있거나 " 문자로 시작하는 경우 매크로 컨텍스트는 "로 인용해야 합니다. 인용된 컨텍스트 안의 따옴표는 \ 문자로 이스케이프해야 합니다.
  • \ 문자 자체는 이스케이프되지 않으므로, 인용된 컨텍스트가 \ 문자로 끝나는 것은 불가능합니다. 즉 매크로 {$MACRO:"a:\b\c\"}는 유효하지 않습니다.
  • 컨텍스트의 앞쪽 공백은 무시되지만 뒤쪽 공백은 무시되지 않습니다:
    • 예를 들어 {$MACRO:A}는 {$MACRO: A}와 같지만 {$MACRO:A }와는 다릅니다.
  • 여는 따옴표 앞과 닫는 따옴표 뒤의 모든 공백은 무시되지만, 따옴표 안의 공백은 무시되지 않습니다:
    • 매크로 {$MACRO:"A"}, {$MACRO: "A"}, {$MACRO:"A" }, {$MACRO: "A" }는 모두 같지만, 매크로 {$MACRO:"A"}와 {$MACRO:" A "}는 다릅니다.

다음 매크로들은 컨텍스트가 같기 때문에 모두 동등합니다: {$MACRO:A}, {$MACRO: A}, {$MACRO:"A"}. 이는 아이템 키와 대조되는데, 아이템 키에서는 'key[a]', 'key[ a]', 'key["a"]'가 의미상으로는 같지만 고유성 측면에서는 다릅니다.