개요

수식 또는 표현식은 각 로그 이벤트에 대한 계산된 필드의 값을 정의합니다. 로그 속성, 다른 계산된 필드, 지원되는 함수 및 연산자를 참조할 수 있습니다. 수식을 작성하거나 편집할 때 편집기는 관련 필드, 함수 및 연산자를 자동으로 제안합니다.

기본 구문 및 언어 구조

구조구문 및 표기법
예약된 속성 또는 태그 tagtag(접두사 필요 없음)
대시가 포함된 태그의 경우 백슬래시로 이스케이프합니다.
예: ci\-job\-id
속성 attr@attr(@ 접두사 사용)
계산된 필드 field#field(# 접두사 사용)
문자열 리터럴(따옴표)
예: text 또는 Quoted "text"
"text"
"Quoted \"text\""
(로그 검색 구문 적용)
숫자 리터럴(숫자)
예: ten
10
함수 func, 포함 파라미터: xyfunc(x, y)
연산자
예: 피연산자 xy를 사용하는 이항 연산자 *
x*y

연산자

사용 가능한 연산자는 다음과 같습니다(우선 순위순).

연산자설명
()그룹화 또는 함수 호출
!, NOT, -논리 또는 산술 부정
^, %거듭제곱, 모듈로
*, /곱셈, 나눗셈
+, -덧셈, 뺄셈
<, <=, >, >=보다 작음, 보다 작거나 같음, 보다 큼, 보다 크거나 같음
==, !=일치함, 일치하지 않음
&&, AND논리 AND
||, OR논리 OR

함수

사용 가능한 함수는 다음과 같이 분류됩니다.

산술

abs(num value)

숫자의 절대값을 반환합니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다.
- @client_latency = 2
- @server_latency = 3
#discrepancy = abs(@client_latency - @server_latency)#discrepancy = 1

ceil(num value)

숫자를 가장 가까운 정수로 반올림합니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다.
@value = 2.2
#rounded_up = ceil(@value)#rounded_up = 3

floor(num value)

숫자를 가장 가까운 정수로 반내림합니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다.
@value = 9.99
#rounded_down = floor(@value)#rounded_down = 9

max(num value, [ num value, …])

숫자 집합 중에서 최댓값을 찾습니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다.
@CPU_temperatures = [-1, 1, 5, 5]
#highest_temp = max(@CPU_temperatures)#highest_temp = 5

min(num value, [num value, …])

숫자 집합 중에서 최솟값을 찾습니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다.
@CPU_temperatures = [-1, 1, 5, 5]
#lowest_temp = min(@CPU_temperatures)#lowest_temp = -1

round(num value, int precision)

숫자를 반올림합니다. 필요시 유지할 소수점 자릿수를 정의합니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다.
@value = -1234.01
#rounded_to_tens = round(@value, -1)#rounded_to_tens = -1230

문자열

concat(str string [str string, expr value, …])

여러 값을 하나의 문자열로 결합합니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다.
- @city = “Paris”
- @country = “France”
#region = concat(@city, ", ", @country)#region = “Paris, France”

lower(str string)

문자열을 소문자로 변환합니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다.
@first_name = “Bob”
#lower_name = lower(@first_name)#lower_name = “bob”

left(str string, int num_chars)

문자열의 시작 부분에서 텍스트 일부를 추출합니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다.
@price = “USD10.50”
#currency = left(@price, 3)#currency = “USD”

proper(str string)

문자열을 적절한 대소문자로 변환합니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다.
@address = “123 main st”
#formatted_address = proper(@address)#formatted_address = “123 Main St”

split_before(str string, str separator, int occurrence)

문자열에서 특정 패턴 앞에 오는 텍스트 일부를 추출합니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다.
@url = "www.example.com/path/to/split"
#url_extraction = split_before(@url, "/", 1)#url_extraction = "www.example.com/path"
#url_extraction = split_before(@url, "/", 2)#url_extraction = "www.example.com/path/to"

split_after(str string, str separator, int occurrence)

문자열에서 특정 패턴 뒤에 오는 텍스트 일부를 추출합니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다.
@url = "www.example.com/path/to/split"
#url_extraction = split_after(@url, "/", 0)#url_extraction = "path/to/split"
#url_extraction = split_after(@url, "/", 1)#url_extraction = "to/split"

substring(str string, int start, int length)

문자열의 중간 부분에서 텍스트 일부를 추출합니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다.
@price = “USD10.50”
#dollar_value = substring(@price, 2, 2)#dollar_value = “10”

right(str string, int num_chars)

문자열의 끝 부분에서 텍스트 일부를 추출합니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다.
@price = “USD10.50”
#cent_value = right(@price, 2)#cent_value = “50”

textjoin(str delimiter, bool ignore_empty, str string [str string, expr value, …])

구분 기호를 사용하여 여러 값을 하나의 문자열로 결합합니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다.
- @city = “Paris”
- @country = “France”
#region = textjoin(", ", "false", @city, @country)#region = “Paris, France”

upper(str string)

문자열을 대문자로 변환합니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다. @first_name = “Bob”#upper_name = upper(@first_name)#upper_name = “BOB”

논리

if(expr condition, expr if_true, expr if_false)

조건을 평가하고 그에 따라 값을 반환합니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다.
- @location = “Paris, France”
- @home = “New York, USA”
#abroad = if(@location == @home, "false", "true")#abroad = “true”

is_null(expr value)

속성이나 표현식이 null인지 여부를 확인합니다.

예시수식결과
로그 이벤트에 다음과 같은 속성이 있습니다.
- @users_online = 5
- @max_capacity = 0
is_null(@users_online / @max_capacity)“true”

추가 자료

추가 유용한 문서, 링크 및 기사: