기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
parse
parse를 사용하여 로그 필드에서 데이터를 추출하고 쿼리에서 처리할 수 있는 추출된 필드를 생성합니다. parse 명령은 glob 표현식, 정규 표현식, logfmt 및 CSV의 네 가지 모드를 지원합니다.
fieldName이 생략되면 @message가 기본적으로 사용됩니다. 필드 이름을 첫 번째 인수로 지정하여 명명된 필드에서 구문 분석할 수 있습니다.
로그 이벤트가 지정된 패턴과 일치하지 않는 경우에도 결과에는 해당 이벤트가 표시되지만 추출된 필드는 표시되지 않습니다.
글롭 모드
와일드카드(*)를 추출하려는 값의 자리 표시자로 사용하고를 사용하여 명명된 필드에 할당합니다as.
구문
parsefieldName"pattern" asalias1,alias2
* 와일드카드 수는 별칭 수와 같아야 합니다.
예시
parse @message "user=*, method:*, latency := *" as @user, @method, @latency | stats avg(@latency) by @method, @user
parse @logStream "*/*/*/*" as env, service, instance, shard | stats count(*) by env, service
연결된 구문 분석
필드를 추출한 다음 추출된 필드를 추가로 구문 분석합니다.
parse @message "url=*" as url | parse url "/api/*/users/*" as apiVersion, userId | display apiVersion, userId
정규식 모드
명명된 캡처 그룹과 함께 정규식을 사용하여 필드를 추출합니다. 정규 표현식 구문에 대한 자세한 내용은 지원되는 정규식 구문 섹션을 참조하세요.
구문
parsefieldName/regex/
명명된 캡처 그룹을 사용하여 추출된 필드를 (?< 정의합니다.name>...)
예시
명명된 캡처 그룹을 사용하여 필드 추출
parse @message /user=(?<user2>.*?), method:(?<method2>.*?), latency := (?<latency2>.*?)/ | stats avg(latency2) by @method2, @user2
명명된 캡처 그룹을 사용하여 VPC 흐름 로그에서 ENI 추출
parse @message /(?<NetworkInterface>eni-.*?) / | display NetworkInterface, @message
다중 일치 모드
다중 일치 모드를 사용하여 필드에서 정규 표현식의 모든 일치 항목을 추출하여 로그 이벤트당 여러 행을 생성합니다. 정규식 패턴 multi 뒤에 키워드를 추가합니다.
구문
parsefieldName/regex/ multi
예시
로그 줄에서 모든 IP 주소 추출(다중 일치)
parse @message /(\d+\.\d+\.\d+\.\d+)/ as ip_addr multi | stats count(*) by ip_addr
Logfmt 모드
parse logfmt를 사용하여 logfmt 형식의 로그 줄을 키-값 페어로 구문 분석합니다. Logfmt는 각 줄에 공백으로 구분된 key=value 페어가 포함된 구조화된 로깅 형식입니다.
구문
parsefieldNamelogfmt asalias
그 결과 점 표기법으로 액세스하는 맵이 생성됩니다(예: , lf.levellf.msg).
예시
parse @message logfmt as lf | filter lf.level = "error" | display lf.msg, lf.duration
parse @message logfmt as lf | stats count(*) by lf.host
CSV 모드
parse csv를 사용하여 CSV 형식의 로그 선을 구조화된 필드로 구문 분석합니다. 쉼표로 구분된 각 값은 해당 별칭에 할당됩니다.
구문
parsefieldNamecsv asalias1,alias2,alias3
예시
parse @message csv as timestamp, level, message | filter level = "ERROR" | display timestamp, message
parse @message csv as host, method, path, status, duration | stats avg(duration) by method
JSON 필드 추출
이전에 구문 분석된 객체 필드에서 명시적으로 연결된 JSON 추출에 json field= 사용합니다. 이렇게 하면 원시 메시지를 다시 구문 분석하지 않고도 구조화된 필드에서 중첩된 키를 추출할 수 있습니다.fieldName
구문
json field=fieldName"key.subkey" asalias
예시
parse @message /(?<payload>\{.*\})/ as payload | json field=payload "user.name" as username | display username
json field=requestContext "identity.sourceIp" as caller_ip | stats count(*) by caller_ip