다음을 통해 공유


Azure Monitor에서 변환 만들기

Azure Monitor의 변환을 사용하면 들어오는 데이터를 Log Analytics 작업 영역에 저장하기 전에 필터링하거나 수정할 수 있습니다. 이는 DCR(데이터 수집 규칙)에서 KQL(Kusto 쿼리 언어) 문으로 구현됩니다. 이 문서에서는 변환 쿼리를 만들고 테스트하고 DCR에 추가하는 방법에 대한 지침을 제공합니다.

참고 항목

KQL에 익숙하지 않거나 Azure Monitor 데이터에 대한 로그 쿼리를 만드는 경우 Azure Monitor의 Log Analytics 개요 및 Azure Monitor의 로그 쿼리로 시작합니다.

기본 쿼리 구조

모든 변환 쿼리는 입력 스트림을 나타내는 가상 테이블인 것으로 시작 source합니다. 그런 다음 지원되는 모든 KQL 연산자를 사용하여 다른 테이블과 마찬가지로 데이터에 열을 필터링, 수정 또는 추가할 수 있습니다. 쿼리는 데이터 원본에서 보낸 각 항목에 개별적으로 적용됩니다.

쿼리 출력은 다음 고려 사항과 대상 테이블의 스키마와 일치해야 합니다.

  • 채워서는 안 되는 열을 생략할 수 있습니다. 대상 테이블의 레코드에 대해 열이 비어 있습니다.
  • 출력 테이블에 포함되지 않은 열을 제외해야 합니다. 데이터는 오류 없이 수락되지만 저장되지 않은 경우에도 추가 데이터 수집에 대한 요금이 청구됩니다.
  • 모든 변환의 출력은 datetime 형식의 TimeGenerated라는 열에 유효한 타임스탬프를 포함해야 합니다. 데이터 원본에 이 속성이 포함되지 않은 경우 변환에 extend 이 속성을 추가하거나 project

다음은 여러 함수를 수행하는 변환의 예입니다.

  • 문으로 들어오는 데이터를 필터링합니다 where .
  • 연산자를 사용하여 새 열을 추가합니다 extend .
  • 연산자를 사용하여 대상 테이블의 열과 일치하도록 출력의 형식을 지정 project 합니다.
source  
| where severity == "Critical" 
| extend Properties = parse_json(properties)
| project
    TimeGenerated = todatetime(["time"]),
    Category = category,
    StatusDescription = StatusDescription,
    EventName = name,
    EventId = tostring(Properties.EventId)

참고 항목

다양한 시나리오에 대한 다양한 샘플은 Azure Monitor의 DCR(데이터 수집 규칙) 샘플 및 시나리오를 참조하세요.

변환 쿼리 만들기

변환을 포함할 DCR을 만들거나 편집하기 전에 변환 쿼리를 만들고 테스트해야 합니다. 일반적으로 기존 데이터 또는 테스트 데이터에 대해 테스트 쿼리를 실행하여 이 작업을 수행합니다. 원하는 결과가 표시되면 아래 설명된 대로 테이블 이름을 DCR로 source 바꾸고 DCR에 변환 추가에서 설명한 대로 붙여넣을 수 있습니다.

Important

변환은 모든 KQL 기능을 지원하지 않습니다. 지원되는 기능 및 제한 사항은 Azure Monitor 변환에서 지원되는 KQL 기능을 참조하세요.

예를 들어 Syslog 이벤트를 필터링하는 변환을 만드는 경우 Log Analytics에서 실행할 수 있는 다음 쿼리로 시작할 수 있습니다.

Syslog | where SeverityLevel != 'info'

이 쿼리를 DCR에 붙여넣은 다음 테이블 이름을 source.로 변경할 수 있습니다.

source | where SeverityLevel != 'info'

쿼리를 테스트하는 데 사용할 데이터에 대해 다음 전략 중 하나를 사용합니다.

  • 변환하려는 데이터를 이미 수집하고 있는 경우 Log Analytics를 사용하여 필요에 따라 데이터를 필터링하거나 수정하는 쿼리를 작성할 수 있습니다. 쿼리 텍스트를 복사하여 DCR에 붙여넣습니다.
  • Log Analytics를 사용하여 연산자를 사용하여 쿼리를 datatable 작성하여 들어오는 데이터를 나타내는 샘플 데이터 집합을 만듭니다. 연산자 없이 datatable 쿼리 텍스트를 복사하여 DCR에 붙여넣습니다.
  • 이 프로세스를 사용하여 Azure Portal에서 새 테이블을 만들고 샘플 데이터를 제공합니다. 포함된 인터페이스를 사용하여 변환 쿼리를 만들고 테스트합니다. 쿼리 텍스트를 복사하여 DCR에 붙여넣거나 프로세스를 완료한 다음 DCR을 편집하여 변환 쿼리를 복사합니다. 그런 다음 필요하지 않은 경우 새 테이블을 삭제할 수 있습니다.

DCR에 변환 추가

변환 쿼리가 있으면 DCR에 추가할 수 있습니다. Azure Monitor에서 DCR(데이터 수집 규칙) 만들기 및 편집의 지침을 사용하여 DCR 정의에 변환 쿼리를 포함하도록 이 섹션의 정보를 사용하여 DCR을 만들거나 편집합니다.

참고 항목

일부 데이터 원본은 Azure Portal을 사용하여 DCR에 변환을 추가하는 메서드를 제공합니다. 예를 들어 가상 머신 에서 텍스트를 수집하면 Azure Portal에서 변환 쿼리를 지정할 수 있습니다. 대부분의 데이터 수집 시나리오는 현재 변환을 추가하기 위해 DCR 정의로 직접 작업해야 합니다. 이 섹션에 설명된 프로세스입니다.

변환 쿼리는 DCR의 transformKql 데이터 흐름 섹션에 있는 속성에 지정됩니다. 데이터 원본을 대상과 페어링하는 섹션입니다. 변환은 대상으로 전송되기 전에 데이터 흐름의 들어오는 스트림에 적용됩니다. 동일한 스트림 또는 대상이 다른 데이터 흐름에서 사용되는 경우에도 해당 데이터 흐름에만 적용됩니다.

transformKql 속성을 생략하거나 값이 단순히source인 경우 변환이 적용되지 않고 들어오는 데이터가 수정 없이 대상으로 전송됩니다.

Important

변환 쿼리는 DCR의 한 줄에 있어야 합니다. Azure Portal에서 변환을 만드는 경우 가독성을 위해 여러 줄을 사용할 수 있으며 \n 각 새 줄에 대한 쿼리에 포함됩니다.

다음 예제에서는 속성이 없 transformKql 으므로 들어오는 데이터는 수정 없이 대상으로 전송됩니다.

"dataFlows": [ 
    { 
        "streams": [ 
        "Microsoft-Syslog" 
        ], 
        "destinations": [ 
        "centralWorkspace" 
        ] 
    } 
] 

다음 예제 transformKql 에서는 들어오는 데이터가 수정 없이 대상으로 전송되도록 간단한 쿼리 source를 사용합니다. 해당 기능은 이전 예제와 동일합니다.

"dataFlows": [ 
    { 
        "streams": [ 
        "Microsoft-Syslog" 
        ], 
        "transformKql": "source", 
        "destinations": [ 
        "centralWorkspace" 
        ] 
    } 
] 

다음 예제 transformKql 에서는 데이터를 필터링하는 쿼리가 있으므로 오류 메시지만 대상으로 전송됩니다.

"dataFlows": [ 
    { 
        "streams": [ 
        "Microsoft-Syslog" 
        ], 
        "transformKql": "source | where message has 'error'", 
        "destinations": [ 
        "centralWorkspace" 
        ] 
    } 
] 

작업 영역 변환 DCR 만들기

작업 영역 변환 DCR(데이터 수집 규칙)은 Log Analytics 작업 영역에 직접 적용되는 특수 DCR입니다. 각 작업 영역에 대해 하나의 작업 영역 변환 DCR만 있을 수 있지만 여러 테이블에 대한 변환을 포함할 수 있습니다.

다음 방법 중 하나를 사용하여 작업 영역에 대한 작업 영역 변환 DCR을 만들고 하나 이상의 변환을 추가합니다.

지원되는 테이블에 변환을 추가하여 Azure Portal에서 작업 영역 변환 DCR을 만들 수 있습니다.

  1. Azure Portal의 Log Analytics 작업 영역 메뉴에서 테이블을 선택합니다. 관심 있는 테이블의 오른쪽을 클릭하고 변환 만들기를 선택합니다.

    Azure Portal에서 테이블에 대한 변환을 만드는 옵션을 보여 주는 스크린샷

  2. 이 작업 영역에 대해 작업 영역 변환 DCR이 아직 만들어지지 않은 경우 작업 영역을 만드는 옵션을 선택합니다. 이미 만들어진 경우 해당 DCR이 이미 선택됩니다. 각 작업 영역에는 하나의 작업 영역 변환 DCR만 있을 수 있습니다.

    새 데이터 수집 규칙을 만드는 모습을 보여 주는 스크린샷

  3. 다음을 선택하여 테이블에서 샘플 데이터를 봅니다. 변환 편집기를 클릭하여 변환 쿼리를 정의합니다.

    로그 테이블의 샘플 데이터를 보여 주는 스크린샷

  4. 그런 다음 변환 쿼리를 편집하고 실행하여 테이블의 실제 데이터에 대한 결과를 볼 수 있습니다. 원하는 결과를 얻을 때까지 쿼리를 계속 수정하고 테스트합니다.

  5. 쿼리에 만족하면 적용을 클릭한 다음 다음 만들기를 클릭하여 DCR을 새 변환과 함께 저장합니다.

    변환 저장을 보여 주는 스크린샷

변환 최적화 및 모니터링

변환은 DCR로 수집된 모든 레코드에 대해 KQL 쿼리를 실행하므로 효율적으로 실행하는 것이 중요합니다. 변환 실행 시간은 전체 데이터 수집 대기 시간에 기여하며, 실행하는 데 시간이 너무 걸리는 변환은 데이터 수집 파이프라인의 성능에 영향을 미치고 데이터 손실을 초래할 수 있습니다. 최적 변환을 실행하는 데 1초 이상 걸리지 않습니다. 변환으로 구현하기 전에 쿼리 테스트에 대한 지침과 효율적으로 실행되지 않는 쿼리 최적화에 대한 권장 사항은 Azure Monitor의 로그 쿼리 최적화를 참조하세요.

Important

변환에 20초 이상 걸리는 경우 데이터 손실이 발생할 수 있습니다.

변환은 대화형으로 실행되지 않으므로 지속적으로 모니터링하여 제대로 실행되고 데이터를 처리하는 데 과도한 시간이 소요되지 않도록 하는 것이 중요합니다. 변환의 상태 및 성능을 모니터링하는 로그 및 메트릭에 대한 자세한 내용은 Azure Monitor에서 DCR 데이터 수집 모니터링 및 문제 해결을 참조하세요. 여기에는 KQL 및 메트릭에서 발생하는 오류를 식별하여 실행 기간을 추적하는 것이 포함됩니다.

다음 메트릭은 변환에 대해 자동으로 수집되며 정기적으로 검토하여 변환이 예상대로 계속 실행되고 있는지 확인해야 합니다. 이러한 메트릭 중 하나가 임계값을 초과하면 자동으로 알림을 받을 메트릭 경고 규칙을 만듭니다.

  • 분당 로그 변환 기간
  • 분당 로그 변환 오류

DCR 오류 로그를 사용하여 변환 또는 기타 쿼리에서 발생하는 오류를 추적할 수 있습니다. 항목이 이 테이블에 기록될 때 자동으로 알림을 받을 로그 경고 규칙을 만듭니다.

지침

데이터 수집 방법에 따라 변환을 만드는 방법은 여러 가지가 있습니다. 다음 표에는 변형 만들기를 위한 다양한 방법에 대한 지침이 나와 있습니다.

데이터 수집 참조
로그 수집 API REST API(Azure Portal)를 사용하여 Azure Monitor 로그에 데이터 보내기
REST API(Azure Resource Manager 템플릿)를 사용하여 Azure Monitor 로그에 데이터 보내기
Azure Monitor 에이전트가 있는 가상 머신 Azure Monitor 로그에 변환 추가
Container Insights를 사용하는 Kubernetes 클러스터 컨테이너 인사이트의 데이터 변환
Azure Event Hubs 자습서: Azure Event Hubs의 이벤트를 Azure Monitor 로그로 수집(공개 미리 보기)

다음 단계

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