OpenSearch PPL 언어 - Amazon CloudWatch Logs

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

OpenSearch PPL 언어

이 섹션에는 OpenSearch PPL을 사용한 CloudWatch Logs 쿼리에 대한 기본 소개가 포함되어 있습니다. PPL을 사용하면 파이프 조합 명령을 사용하여 데이터를 검색, 쿼리 및 분석할 수 있으므로 복잡한 쿼리를 더 쉽게 이해하고 구성할 수 있습니다. 구문은 Unix 파이프를 기반으로 하며 데이터를 변환하고 처리하기 위한 명령 체인을 활성화합니다. PPL을 사용하면 데이터를 필터링 및 집계하고 분석에 풍부한 수학, 문자열, 날짜, 조건부 및 기타 함수 집합을 사용할 수 있습니다.

OpenSearch PPL은 표준 로그 클래스의 로그 그룹 쿼리에만 사용할 수 있습니다. 쿼리할 로그 그룹을 선택할 때 단일 로그 그룹, 접두사를 공유하는 로그 그룹 세트를 선택하거나 모든 로그 그룹을 선택할 수 있습니다.

참고

CloudWatch Logs에서 지원되는 모든 OpenSearch PPL 쿼리 명령에 대한 자세한 내용과 구문 및 제한에 대한 자세한 내용은 OpenSearch Service 개발자 안내서의 지원되는 PPL 명령을 참조하세요.

명령 또는 함수 쿼리 예 설명

필드

fields field1, field2

프로젝션이 필요한 필드 세트를 표시합니다.

join

LEFT JOIN left=l, right=r on l.id = r.id `join_right_lg` | fields l.field_1, r.field_2

두 데이터 세트를 함께 조인합니다.

여기서 각 항목은 다음과 같습니다.

where field1="success" | where field2 != "i-023fe0a90929d8822" | fields field3, field4, field5,field6 | head 1000

지정한 조건에 따라 데이터를 필터링합니다.

stats

stats count(), count(field1), min(field1), max(field1), avg(field1) by field2 | head 1000

집계 및 계산 수행

parse

parse field1 ".*/(?<field2>[^/]+$)" | where field2 = "requestId" | fields field1, field2 | head 1000

문자열에서 정규식(정규식) 패턴을 추출하고 추출된 패턴을 표시합니다. 추출된 패턴을 사용하여 새 필드를 생성하거나 데이터를 필터링할 수 있습니다.

정렬

stats count(), count(field1), min(field1) as field1Alias, max(`field1`), avg(`field1`) by field2 | sort -field1Alias | head 1000

필드 이름을 기준으로 표시된 결과를 정렬합니다. sort -FieldName을 사용하여 내림차순으로 정렬합니다.

평가

eval field2 = field1 * 2 | fields field1, field2 | head 20

필드 값을 수정 또는 처리하고 다른 필드에 저장합니다. 이는 열을 수학적으로 수정하거나, 열에 문자열 함수를 적용하거나, 열에 날짜 함수를 적용하는 데 유용합니다.

이름 바꾸기

rename field2 as field1 | fields field1;

검색 결과에서 하나 이상의 필드 이름을 바꿉니다.

head

fields `@message` | head 20

표시된 쿼리 결과를 첫 번째 N개 행으로 제한합니다.

top

top 2 field1 by field2

필드의 가장 빈번한 값을 찾습니다.

dedup

dedup field1 | fields field1, field2, field3

지정한 필드를 기반으로 중복 항목을 제거합니다.

드물게

rare field1 by field2

필드 목록에 있는 모든 필드의 가장 빈도가 낮은 값을 찾습니다.

subquery

where field_1 IN [ search source= `subquery_lg` | fields field_2 ] | fields id, field_1

PPL 문 내에서 복잡한 중첩 쿼리를 수행합니다.

추세선

trendline sma(2, field1) as field1Alias

필드의 이동 평균을 계산합니다.

eventStats

eventstats sum(field1) by field2

계산된 요약 통계로 이벤트 데이터를 강화합니다. 이벤트 내에서 지정된 필드를 분석하고 다양한 통계 측정값을 계산한 다음 이러한 결과를 각 원래 이벤트에 새 필드로 추가합니다.

확장

eval tags_array_string = json_extract(`@message`, '$.tags')| eval tags_array = json_array(json_extract(tags_string, '$[0]'), json_extract(tags_string, '$[1]'))| expand tags_array as color_tags

여러 값이 포함된 필드를 별도의 행으로 분할하여 지정된 필드의 각 값에 대해 새 행을 생성합니다.

fillnull

fields `@timestamp`, error_code, status_code | fillnull using status_code = "UNKNOWN", error_code = "UNKNOWN"

입력한 값으로 null 필드를 채웁니다. 하나 이상의 필드에서 사용할 수 있습니다.

flatten

eval metadata_struct = json_object('size', json_extract(metadata_string, '$.size'), 'color', json_extract(metadata_string, '$.color')) | flatten metadata_struct as (meta_size, meta_color)

필드를 평면화합니다. 필드는 struct<?,?> 또는 유형이어야 합니다array<struct<?,?>>.

cidrmatch

where cidrmatch(ip, '2003:db8::/32') | fields ip

지정된 IP 주소가 지정된 CIDR 범위 내에 있는지 확인합니다.

fieldsummary

where field1 != 200 | fieldsummary includefields= field1 nulls=true

각 필드(개수, 고유 개수, 최소, 최대, 평균, stddev 및 평균)에 대한 기본 통계를 계산합니다.

grok

grok email '.+@%{HOSTNAME:host}' | fields email, host

grok 패턴으로 텍스트 필드를 구문 분석하고 검색 결과에 결과를 추가합니다.

문자열 함수

eval field1Len = LENGTH(field1) | fields field1Len

PPL 쿼리 내에서 문자열 및 텍스트 데이터를 조작하고 변환할 수 있는 PPL의 내장 함수입니다. 예를 들어 변환 사례, 문자열 결합, 부분 추출, 텍스트 정리 등이 있습니다.

날짜-시간 함수

eval newDate = ADDDATE(DATE('2020-08-26'), 1) | fields newDate

PPL 쿼리에서 날짜 및 타임스탬프 데이터를 처리하고 변환하기 위한 내장 함수입니다. 예: date_add, date_format, datediff, date-sub, timestampadd, timestampdiff, current_timezone, utc_timestamp, current_date.

조건 함수

eval field2 = isnull(field1) | fields field2, field1, field3

특정 필드 조건을 확인하고 조건부로 표현식을 평가하는 내장 함수입니다. 예를 들어 field1이 null인 경우 field2를 반환합니다.

수학 함수

eval field2 = ACOS(field1) | fields field1

PPL 쿼리에서 수학 계산 및 변환을 수행하기 위한 내장 함수입니다. 예를 들어, abs(절대값), round(숫자 반올림), sqrt(제곱근), pow(검정력 계산), ceil(가장 가까운 정수로 반올림)이 있습니다.

CryptoGraphic 함수

eval crypto = MD5(field)| head 1000

지정된 필드의 해시를 계산하려면

JSON 함수

eval valid_json = json('[1,2,3,{"f1":1,"f2":[5,6]},4]') | fields valid_json

배열, 추출 및 검증을 포함하여 JSON을 처리하기 위한 내장 함수입니다. 예: json_object, json_array, to_json_string, json_array_length, json_extract, json_keys 및 json_valid.