다음을 통해 공유


Azure Monitor의 샘플 변환

Azure Monitor 의 변환을 사용하면 들어오는 데이터가 Log Analytics 작업 영역으로 전송되기 전에 필터링하거나 수정할 수 있습니다. 이 문서에서는 사용자 고유의 변환 만들기를 시작하는 데 사용할 수 있는 일반적인 시나리오에 대한 샘플 쿼리를 제공합니다. 이러한 변환을 테스트하고 DCR(데이터 수집 규칙)에 추가하는 방법에 대한 자세한 내용은 Azure Monitor에서 변환 만들기를 참조하세요.

데이터 비용 절감

Log Analytics 작업 영역으로 전송된 모든 데이터에 대해 수집 비용이 청구되므로 비용을 줄이는 데 필요하지 않은 데이터를 필터링하려고 합니다.

데이터 행 필터링

where 문을 사용하여 특정 요구 사항과 일치하는 들어오는 데이터를 필터링합니다. 들어오는 레코드가 문과 일치하지 않으면 레코드가 대상으로 전송되지 않습니다. 다음 예제에서는 심각도가 Critical 있는 레코드만 수집됩니다.

source | where severity == "Critical" 

데이터 열 필터링

데이터 수집 비용을 절감할 필요가 없는 열을 데이터 원본에서 제거합니다. project 문을 사용하여 출력의 열을 지정하거나 제거할 열만 지정하는 데 사용합니다project-away. 다음 예제에서는 열이 RawData 출력에서 제거됩니다.

source | project-away RawData

열에서 중요한 데이터 구문 분석

중요한 데이터가 포함된 열이 과도한 텍스트에 묻혀 있을 수 있습니다. 중요한 데이터만 유지하고 필요하지 않은 텍스트를 제거합니다. 원하는 데이터와 extract 같은 substring 문자열 함수를 사용하여 구문 분석합니다. 단일 열을 여러 값으로 나누거나 split 사용하여 parse 데이터를 구문 분석하고 원하는 값을 선택할 수도 있습니다. 그런 다음 구문 분석된 데이터를 project-away 사용하여 새 열을 만들고 원래 열을 제거하는 데 사용합니다extend.

Warning

복잡한 구문 분석 명령을 사용하는 방법에 대한 팁은 큰 구문 분석 명령 분리를 참조하세요.

다음 예제에서 열에는 RequestContext ResourceId 작업 영역이 있는 JSON이 포함됩니다. parse_jsonsplit 함수는 작업 영역의 단순 이름을 추출하는 데 사용됩니다. 이 값에 대해 새 열이 만들어지고 다른 열이 제거됩니다.

source
| extend Context = parse_json(RequestContext)
| extend Workspace_CF = tostring(Context['workspaces'][0])
| extend WorkspaceName_CF = split(Workspace_CF,"/")[8]
| project-away RequestContext, Context, Workspace_CF

기본 로그에 행 보내기

낮은 수집 비용을 위해 기본 쿼리 기능이 필요한 데이터의 행을 기본 로그 테이블로 보냅니다. 여러 테이블에 데이터를 보내는 방법에 대한 자세한 내용은 여러 테이블에 데이터 보내기를 참조하세요.

중요한 데이터 제거

개인 정보 보호 또는 규정 준수를 위해 저장하지 않으려는 정보를 보내는 데이터 원본이 있을 수 있습니다.

중요한 정보 필터링

데이터 비용 절감에 설명된 것과 동일한 전략을 사용하여 전체 행 또는 중요한 정보가 포함된 특정 열을 필터링합니다. 다음 예제에서는 열이 ClientIP 출력에서 제거됩니다.

source | project-away ClientIP

중요한 정보 난독 처리

문자열 함수를 사용하여 IP 주소 또는 전화 번호의 숫자와 같은 정보를 공통 문자로 대체합니다. 다음 예제에서는 전자 메일 주소의 사용자 이름을 "*****"로 바꿉니다.

source | extend Email = replace_string(Email,substring(Email,0,indexof(Email,"@")),"*****")

대체 테이블로 보내기

역할 기반 액세스 제어 구성이 다른 대체 테이블에 중요한 레코드를 보냅니다. 여러 테이블에 데이터를 보내는 방법에 대한 자세한 내용은 여러 테이블에 데이터 보내기를 참조하세요.

데이터 보강

변환을 사용하여 비즈니스 컨텍스트를 제공하거나 나중에 데이터 쿼리를 단순화하는 정보를 데이터에 추가합니다. 문자열 함수를 사용하여 열에서 중요한 정보를 추출한 다음 문을 extend 사용하여 데이터 원본에 새 열을 추가합니다. 다음 예제에서는 다른 열의 IP 주소가 내부 또는 외부인지를 식별하는 열을 추가합니다.

source | extend IpLocation = iff(split(ClientIp,".")[0] in ("10","192"), "Internal", "External")

대상에 대한 데이터 서식 지정

대상 테이블의 구조와 일치하지 않는 형식으로 데이터를 보내는 데이터 원본이 있을 수 있습니다. 변환을 사용하여 데이터를 필요한 스키마로 다시 포맷합니다.

스키마 수정

대상 테이블과 project 일치하도록 들어오는 데이터의 스키마와 같은 extend 명령을 사용하고 수정합니다. 다음 예제에서는 현재 시간을 반환하기 위해 KQL 함수를 사용하여 나가는 데이터에 호출된 TimeGenerated 새 열이 추가됩니다.

source | extend TimeGenerated = now()

데이터 구문 분석

split 또는 parse 연산자를 사용하여 대상 테이블의 여러 열로 데이터를 구문 분석합니다. 다음 예제에서 들어오는 데이터에는 대상 테이블의 개별 열로 분할되는 쉼표로 구분된 열 RawData 이 있습니다.

source 
| project d = split(RawData,",") 
| project TimeGenerated=todatetime(d[0]), Code=toint(d[1]), Severity=tostring(d[2]), Module=tostring(d[3]), Message=tostring(d[4])

Warning

복잡한 구문 분석 명령을 사용하는 방법에 대한 팁은 큰 구문 분석 명령 분리를 참조하세요.

다음 단계