Azure Monitor 변환에서 지원되는 KQL 기능
Azure Monitor 의 변환을 사용하면 들어오는 Azure Monitor 데이터에 대해 KQL 쿼리를 실행하여 들어오는 데이터를 필터링하거나 수정한 후 Log Analytics 작업 영역에 저장할 수 있습니다. 이 문서에서는 변환에서만 사용할 수 있는 특수 연산자 외에도 변환 쿼리에서 KQL 고려 사항 및 지원되는 기능을 자세히 설명합니다.
변환은 각 레코드에 개별적으로 적용되므로 여러 레코드에서 작동하는 KQL 연산자를 사용할 수 없습니다. 단일 행을 입력으로 사용하고 둘 이상의 행을 반환하지 않는 연산자만 지원됩니다. 예를 들어, summarize는 여러 레코드를 요약하므로 지원되지 않습니다.
이 문서에 나열된 연산자만 변환에서 지원됩니다. 다른 로그 쿼리에서 사용할 수 있는 다른 연산자는 변환에서 지원되지 않습니다.
특별 고려 사항
구문 분석 명령
변환의 구문 분석 명령은 성능상의 이유로 문당 10개의 열로 제한됩니다. 변환에 10개 이상의 열을 구문 분석해야 하는 경우 큰 구문 분석 명령 분리에 설명된 대로 여러 문으로 분할합니다.
동적 데이터 처리
동적 데이터와 함께 다음 입력을 고려합니다.
{
"TimeGenerated" : "2021-11-07T09:13:06.570354Z",
"Message": "Houston, we have a problem",
"AdditionalContext": {
"Level": 2,
"DeviceID": "apollo13"
}
}
AdditionalContext의 속성에 액세스하려면 입력 스트림에서 이를 동적 형식 열로 정의합니다.
"columns": [
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "Message",
"type": "string"
},
{
"name": "AdditionalContext",
"type": "dynamic"
}
]
이제 AdditionalContext 열의 콘텐츠를 구문 분석하여 KQL 변환에서 사용할 수 있습니다.
source
| extend parsedAdditionalContext = parse_json(AdditionalContext)
| extend Level = toint (parsedAdditionalContext.Level)
| extend DeviceId = tostring(parsedAdditionalContext.DeviceID)
동적 리터럴
함수를 parse_json
사용하여 동적 리터럴을 처리합니다.
예를 들어 다음 쿼리는 동일한 기능을 제공합니다.
print d=dynamic({"a":123, "b":"hello", "c":[1,2,3], "d":{}})
print d=parse_json('{"a":123, "b":"hello", "c":[1,2,3], "d":{}}')
특수 함수
다음 함수는 변환에서만 사용할 수 있습니다. 다른 로그 쿼리에서는 사용할 수 없습니다.
parse_cef_dictionary
CEF 메시지가 포함된 문자열이 지정된 경우 parse_cef_dictionary
는 메시지의 Extension 속성을 동적 키/값 개체로 구문 분석합니다. 세미콜론은 아래 예제와 같이 원시 메시지를 메서드에 전달하기 전에 바꾸어야 하는 예약 문자입니다.
| extend cefMessage=iff(cefMessage contains_cs ";", replace(";", " ", cefMessage), cefMessage)
| extend parsedCefDictionaryMessage =parse_cef_dictionary(cefMessage)
| extend parsecefDictionaryExtension = parsedCefDictionaryMessage["Extension"]
| project TimeGenerated, cefMessage, parsecefDictionaryExtension
geo_location
IP 주소가 포함된 문자열(IPv4 및 IPv6이 지원됨)이 지정된 경우, geo_location
함수는 다음 속성을 포함하여 대략적인 지리적 위치를 반환합니다:
- 국가
- 지역
- State(상태)
- City
- 위도
- 경도
| extend GeoLocation = geo_location("1.0.0.5")
Important
이 함수에서 사용하는 IP 지리적 위치 서비스의 특성으로 인해 과도하게 사용되는 경우 데이터 수집 대기 시간이 발생할 수 있습니다. 변환당 이 함수를 여러 번 이상 사용할 때 주의해야 합니다.
지원되는 문장
Let 문
오른쪽 let
은 스칼라 식, 테이블 형식 식 또는 사용자 정의 함수일 수 있습니다. 스칼라 인수가 있는 사용자 정의 함수만 지원됩니다.
테이블 형식 식 명령문
변환에서 KQL 문에 대해 지원되는 유일한 데이터 원본은 다음과 같습니다.
source, 원본 데이터를 나타냅니다. 예시:
source | where ActivityId == "383112e4-a7a8-4b94-a701-4266dfc18e41" | project PreciseTimeStamp, Message
print
연산자- 항상 단일 행을 생성합니다. 예시:print x = 2 + 2, y = 5 | extend z = exp2(x) + exp2(y)
지원되는 테이블 형식 연산자
extend
project
print
where
parse
project-away
project-rename
datatable
columnifexists
(column_ifexists 대신 columnifexists 사용)
지원되는 스칼라 연산자
- 모든 숫자 연산자가 지원됩니다.
- 모든 날짜/시간 및 시간 범위 산술 연산자가 지원됩니다.
- 다음 문자열 연산자가 지원됩니다.
- `=
!=
=~
!~
contains
!contains
contains_cs
!contains_cs
has
!has
has_cs
!has_cs
startswith
!startswith
startswith_cs
!startswith_cs
endswith
!endswith
endswith_cs
!endswith_cs
matches regex
in
!in
- 다음 비트 연산자가 지원됩니다.
binary_and()
binary_or()
binary_xor()
binary_not()
binary_shift_left()
binary_shift_right()
스칼라 함수
- 비트 함수
- 변환 함수
- DateTime 및 TimeSpan 함수
- 동적 및 배열 함수
- 수학 함수
- 조건부 함수
- 문자열 함수
base64_encodestring
(base64_encode_tostring 대신 base64_encodestring 사용)base64_decodestring
(base64_decode_tostring 대신 base64_decodestring 사용)countof
extract
extract_all
indexof
isempty
isnotempty
parse_json
replace
split
strcat
strcat_delim
strlen
substring
tolower
toupper
hash_sha256
- 형식 함수
식별자 인용
필요에 따라 식별자 인용을 사용합니다.
다음 단계
- 데이터 수집 규칙 및 연결을 Azure Monitor 에이전트를 사용하여 가상 머신에서 만듭니다.