다음을 통해 공유


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

parse_cef_dictionary 함수의 샘플 출력.

geo_location

IP 주소가 포함된 문자열(IPv4 및 IPv6이 지원됨)이 지정된 경우, geo_location 함수는 다음 속성을 포함하여 대략적인 지리적 위치를 반환합니다:

  • 국가
  • 지역
  • State(상태)
  • City
  • 위도
  • 경도
| extend GeoLocation = geo_location("1.0.0.5")

geo_location 함수의 샘플 출력 스크린샷.

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)
    

지원되는 테이블 형식 연산자

지원되는 스칼라 연산자

  • 모든 숫자 연산자가 지원됩니다.
  • 모든 날짜/시간 및 시간 범위 산술 연산자가 지원됩니다.
  • 다음 문자열 연산자가 지원됩니다.
    • `=
    • !=
    • =~
    • !~
    • 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()

스칼라 함수

식별자 인용

필요에 따라 식별자 인용을 사용합니다.

다음 단계

  • 데이터 수집 규칙 및 연결을 Azure Monitor 에이전트를 사용하여 가상 머신에서 만듭니다.