매크로 함수

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

개요

매크로 함수는 매크로 값을 커스터마이즈(예: 특정 부분 문자열을 단축하거나 추출)하여 더 쉽게 다룰 수 있도록 해줍니다.

매크로 함수의 문법은 다음과 같습니다:

{macro.func(params)}

여기서

  • macro - 커스터마이즈할 매크로;
  • func - 적용할 함수 (지원되는 함수 참고);
  • params - 콤마로 구분된 함수 파라미터 목록으로, 다음의 경우 반드시 큰따옴표로 묶어야 합니다:
    • 공백이나 큰따옴표로 시작하는 경우;
    • 닫는 괄호나 콤마를 포함하는 경우.

예를 들면:

{{TIME}.fmttime(format,time_shift)}
{{ITEM.VALUE}.regsub(pattern, output)}
{{$USERMACRO}.regsub(pattern, output)}
{{#LLDMACRO}.regsub(pattern, output)}

매크로 함수는 다음에서 지원됩니다

매크로 함수는 위에 나열된 매크로를 지원하는 모든 위치에서 사용할 수 있습니다. 다만 매크로만 사용 가능하다고 명시적으로 언급된 경우(예: 호스트 매크로 설정이나 저수준 디스커버리 규칙의 필터)는 예외입니다.

매크로당 하나의 함수만 지원되며, 여러 매크로 함수를 체인으로 연결하는 것은 지원되지 않습니다.

매크로 함수가 다른 컨텍스트(함수, 아이템 키, 다른 매크로 등) 내부에서 사용되는 경우에 대해서는 이스케이핑 예제를 참고하세요.

지원되는 함수

함수는 추가 정보 없이 나열되어 있습니다. 자세한 내용을 보려면 함수를 클릭하세요.

함수 설명
btoa 매크로 값을 Base64 인코딩으로 변환.
fmtnum 소수점 이하 출력 자릿수를 제어하는 숫자 형식 지정.
fmttime 시간 형식 지정.
htmldecode 매크로 값을 HTML 인코딩에서 디코딩.
htmlencode 매크로 값을 HTML 인코딩으로 변환.
iregsub 정규 표현식 매칭을 통한 부분 문자열 추출(대소문자 구분 없음).
lowercase 매크로 값 문자를 소문자로 변환.
regrepl 매크로 값 내 문자/부분 문자열 치환.
regsub 정규 표현식 매칭을 통한 부분 문자열 추출(대소문자 구분).
tr 매크로 값 문자의 음역(transliteration).
uppercase 매크로 값 문자를 대문자로 변환.
urldecode 매크로 값을 URL 인코딩에서 디코딩.
urlencode 매크로 값을 URL 인코딩으로 변환.

함수 상세

선택적 함수 파라미터는 < >로 표시됩니다.

btoa

매크로 값을 Base64 인코딩으로 변환합니다. Base64 인코딩은 바이너리 데이터를 텍스트로 표현하는 방식으로, 텍스트 기반 프로토콜을 통한 바이너리 콘텐츠 저장 및 안전한 전송에 유용합니다.

예:

{{ITEM.VALUE}.btoa()} - will Base64-encode a value like "zabbix" into "emFiYml4"
fmtnum(digits)

소수점 이하 출력 자릿수를 제어하는 숫자 형식 지정.

파라미터:

  • digits - 소수점 이하 자릿수. 유효 범위: 0-20. 뒤에 붙는 0은 표시되지 않습니다.

예:

{{ITEM.VALUE}.fmtnum(2)} - will return "24.35" from a received value of "24.3483523"
{{ITEM.VALUE}.fmtnum(0)} - will return "24" from a received value of "24.3483523"
fmttime(format,<time_shift>)

시간 형식 지정.
이 함수는 다음 시간 형식 중 하나로 해석되는 매크로와 함께 사용할 수 있습니다:

  • hh:mm:ss
  • yyyy-mm-ddThh:mm:ss[tz] (ISO8601 표준)
  • UNIX 타임스탬프

파라미터:

  • format - 필수 형식 문자열로, strftime 함수 형식과 호환됩니다;
  • time_shift (선택) - 형식 지정 전에 시간에 적용할 시간 이동값; -<N><time_unit> 또는 +<N><time_unit>으로 시작해야 하며, 여기서:
    • N - 더하거나 뺄 시간 단위의 개수;
    • time_unit - h (시간), d (일), w (주), M (월) 또는 y (년).

참고:

  • time_shift 파라미터는 다단계 시간 연산을 지원하며, 시간 단위의 시작점으로 이동하기 위한 /<time_unit>을 포함할 수 있습니다 (/d - 자정, /w - 해당 주의 첫째 날(월요일), /M - 해당 월의 첫째 날 등). 예: -1w - 정확히 7일 전; -1w/w - 지난주 월요일; -1w/w+1d - 지난주 화요일.
  • 시간 연산은 우선순위 없이 왼쪽에서 오른쪽으로 계산됩니다. 예를 들어 -1M/d+1h/w는 ((-1M/d)+1h)/w로 해석됩니다.

예:

{{TIMESTAMP}.fmttime(%B)} - will return "October" from a received value of "1633098961"
{{TIMESTAMP}.fmttime(%d %B,-1M/M)} - will return "1 September" from a received value of "1633098961"
{{EVENT.TIMESTAMP}.fmttime("%x %X")} - will return the locale-specific representation of the date and time; for example, "07/15/26 10:25:39" for the event timestamp "1784100339"
{{EVENT.TIME}.fmttime("%x %X")} - will return the locale-specific representation of the date and time; for example, "07/15/26 10:25:39" for the timestamp "1784100339" associated with the event
htmldecode

매크로 값을 HTML 인코딩에서 디코딩합니다.

다음 문자가 지원됩니다:

값 디코딩된 값
&amp; &
&lt; <
&gt; >
&quot; "
&#039; '
&#39; '

예:

{{ITEM.VALUE}.htmldecode()} - will HTML-decode a value like "&lt;" into "<"
htmlencode

매크로 값을 HTML 인코딩으로 변환합니다.

다음 문자가 지원됩니다:

값 인코딩된 값
& &amp;
< &lt;
> &gt;
" &quot;
' &#39;

예:

{{ITEM.VALUE}.htmlencode()} - will HTML-encode a character like "<" into "&lt;"
iregsub(pattern,output)

정규 표현식 매칭을 통한 부분 문자열 추출(대소문자 구분 없음).

파라미터:

  • pattern - 매칭할 정규 표현식;
  • output - 출력 옵션. 캡처 그룹을 위해 \1 - \9 플레이스홀더가 지원됩니다. \0은 매칭된 텍스트를 반환합니다.

참고:

  • 정규 표현식과 일치하는 항목이 없으면 함수는 빈 문자열을 반환합니다.
  • 함수 패턴이 올바르지 않은 정규 표현식이면 매크로는 'UNKNOWN'으로 평가됩니다(저수준 디스커버리 매크로는 예외로, 이 경우 함수는 무시되고 매크로는 해석되지 않은 상태로 남습니다).
  • 치환 문자열에서 존재하지 않는 캡처 그룹을 참조하면 빈 문자열로 대체됩니다.

예:

{{ITEM.VALUE}.iregsub("fail|error|fault|problem","ERROR")} - will resolve to "ERROR" if "fail", "error", "fault", or "problem" substrings are received (case-insensitive); will return an empty string if there is no match
lowercase

매크로 값의 모든 문자를 소문자로 변환합니다. 단일 바이트 문자셋(예: ASCII)에서 동작하며 UTF-8은 지원하지 않습니다.

예:

{{ITEM.VALUE}.lowercase()} - will transform a value like "Zabbix SERVER" into "zabbix server" (lowercase)
regrepl(pattern,replacement,<pattern2>,<replacement2>,...)

매크로 값 내 문자/부분 문자열 치환.

파라미터:

  • pattern - 매칭할 정규 표현식;
  • replacement - 치환 문자열. 캡처 그룹을 위해 치환 문자열에서 \1 - \9 플레이스홀더가 지원됩니다.

참고:

  • 패턴과 일치하는 모든 항목이 치환됩니다.
  • 패턴과 치환은 순차적으로 처리되며, 각 다음 쌍은 이전 치환 결과에 따라 적용됩니다;
  • 치환 문자열에서 존재하지 않는 캡처 그룹을 참조하면 빈 문자열로 대체됩니다.

예:

{{ITEM.VALUE}.regrepl("oldParam", "newParam")} - will replace "oldParam" with "newParam"
{{ITEM.VALUE}.regrepl("([^a-z])","\\\1")} - all non-letter characters will be escaped with a backslash
{$THRESHOLD:"{{#FSNAME}.regrepl(\"\\$\",\"\")}"} - will remove a trailing backslash (for example, to replace "C:\" with "C:")
{{ITEM.VALUE}.regrepl("_v1\.0", "_v2.0", "\(final\)", "")} - will replace multiple parts in item value
regsub(pattern,output)

정규 표현식 매칭을 통한 부분 문자열 추출(대소문자 구분).

파라미터:

  • pattern - 매칭할 정규 표현식;
  • output - 출력 옵션. 캡처 그룹을 위해 \1 - \9 플레이스홀더가 지원됩니다. \0은 매칭된 텍스트를 반환합니다.

참고:

  • 정규 표현식과 일치하는 항목이 없으면 함수는 빈 문자열을 반환합니다.
  • 함수 패턴이 올바르지 않은 정규 표현식이면 매크로는 'UNKNOWN'으로 평가됩니다(저수준 디스커버리 매크로는 예외로, 이 경우 함수는 무시되고 매크로는 해석되지 않은 상태로 남습니다).
  • 치환 문자열에서 존재하지 않는 캡처 그룹을 참조하면 빈 문자열로 대체됩니다.

예:

{{ITEM.VALUE}.regsub("^([0-9]+)", Problem ID: \1)} - will resolve to "Problem ID: 123" if a value like "123 Log line" is received
{{ITEM.VALUE}.regsub("fail|error|fault|problem","ERROR")} - will resolve to "ERROR" if "fail", "error", "fault", or "problem" substrings are received (case-sensitive); will return an empty string if there is no match

더 많은 예제를 참고하세요.

tr(characters,replacement)

매크로 값 문자의 음역(transliteration).

  • characters - 치환할 문자 집합;
  • replacement - 위치별로 대응하는 치환 문자 집합.

예:

{{ITEM.VALUE}.tr(abc, xyz)} - will replace all occurrences of "a" with "x", "b" with "y", "c" with "z"
{{ITEM.VALUE}.tr(abc, xyzq)} - will replace all occurrences of "a" with "x", "b" with "y", "c" with "z" ("q" is ignored)
{{ITEM.VALUE}.tr(abcde, xyz)} - will replace all occurrences of "a" with "x", "b" with "y", "c" with "z", "d" with "z", "e" with "z" (i.e. xyzzz)
{{ITEM.VALUE}.tr("\\\'", "\/\"")} - will replace all occurrences of backslash with forward slash, single quotes with double quotes
{{ITEM.VALUE}.tr(A-Z,a-z)} - will convert all letters to lowercase
{{ITEM.VALUE}.tr(0-9a-z,*)} - will replace all numbers and lowercase letters with "*"
{{ITEM.VALUE}.tr(0-9,ab)} - will replace all occurrences of 0 with "a", and replace all occurrences of 1, 2, 3, 4, 5, 6, 7, 8, and 9 with "b"
{{ITEM.VALUE}.tr(0-9abcA-L,*)} - will replace all numbers, "abc" characters, and A-L range with "*"
{{ITEM.VALUE}.tr("\n","*")} - will replace end-of-line occurrences with *
{{ITEM.VALUE}.tr("e", "\n")} - will replace all "e" with end-of-line

리터럴 문자를 포함하려면:

backslash - must be escaped as \\
single quote - must be escaped as \'
double quote - must be escaped as \"

백슬래시를 사용한 지원되는 이스케이프 시퀀스:

\\\\ => \\ - double backslash to single backslash
\\a  => \a - alert
\\b  => \b - backspace
\\f  => \f - form feed
\\n  => \n - newline
\\r  => \r - return
\\t  => \t - horizontal tab
\\v  => \v - vertical tab
uppercase

매크로 값의 모든 문자를 대문자로 변환합니다. 단일 바이트 문자셋(예: ASCII)에서 동작하며 UTF-8은 지원하지 않습니다.

예:

{{ITEM.VALUE}.uppercase()} - will transform a value like "Zabbix Server" into "ZABBIX SERVER" (uppercase)
urldecode

매크로 값을 URL 인코딩에서 디코딩합니다.

예:

{{ITEM.VALUE}.urldecode()} - will URL-decode a value like "%2F" into "/"
urlencode

매크로 값을 URL 인코딩으로 변환합니다.

예:

{{ITEM.VALUE}.urlencode()} - will URL-encode a character like "/" into "%2F"

추가 예제

아래 표는 매크로 함수 사용의 추가 예제를 보여줍니다.

:::noteinfo {#IFALIAS}는 LLD 매크로이며 저수준 디스커버리 컨텍스트(디스커버리 규칙, 프로토타입, 그리고 이들로부터 생성된 아이템/트리거)에서만 정의됩니다. LLD 외부에서 사용하면 토큰이 확장되지 않은 상태로 남습니다. :::

매크로 함수 수신된 값 출력
{{ITEM.VALUE}.regsub(^[0-9]+, Problem)} 123Log line Problem
{{ITEM.VALUE}.regsub("^([0-9]+)", "Problem")} 123 Log line Problem
{{ITEM.VALUE}.regsub(".*", "Problem ID: \1")} Log line Problem ID:
{{ITEM.VALUE}.regsub("^(\w+).*?([0-9]+)", " Problem ID: \1_\2 ")} MySQL crashed errno 123 Problem ID: MySQL_123
{{ITEM.VALUE}.regsub("([1-9]+", "Problem ID: \1")} 123 Log line *UNKNOWN* (잘못된 정규 표현식)
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)} customername_1 customername
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)} customername_1 1
{{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} customername_1 {{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} (잘못된 정규 표현식)
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"} customername_1 {$MACRO:"customername"}
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"} customername_1 {$MACRO:"1"}
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} customername_1 {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} (잘못된 정규 표현식)
"{$MACRO:"\{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)}\"}" customername_1 "{$MACRO:"\customername\"}"
"{$MACRO:"\{{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)}\"}" customername_1 "{$MACRO:"\1\"}"
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" customername_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" (잘못된 정규 표현식)
전체 아이템 값 보기

텍스트/로그 아이템에 대해 해석된 {ITEM.VALUE} 및 {ITEM.LASTVALUE} 매크로의 긴 값은 일부 프론트엔드 위치에서 20자로 잘립니다. 이러한 매크로의 전체 값을 보려면 매크로 함수를 사용할 수 있습니다. 예:

{{ITEM.VALUE}.regsub("(.*)", \1)}
{{ITEM.LASTVALUE}.regsub("(.*)", \1)}

추가로 참고: {ITEM.VALUE} 및 {ITEM.LASTVALUE} 매크로 상세 정보.