기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
OpenSearch Piped Processing Language(PPL)
이 섹션에는 OpenSearch PPL을 사용한 CloudWatch Logs 쿼리에 대한 기본 소개가 포함되어 있습니다. PPL을 사용하면 파이프 조합 명령을 사용하여 데이터를 검색, 쿼리 및 분석할 수 있으므로 복잡한 쿼리를 더 쉽게 이해하고 구성할 수 있습니다. 구문은 Unix 파이프를 기반으로 하며 데이터를 변환하고 처리하기 위한 명령 체인을 활성화합니다. PPL을 사용하면 데이터를 필터링 및 집계하고 분석에 풍부한 수학, 문자열, 날짜, 조건부 및 기타 함수 집합을 사용할 수 있습니다.
PPL 쿼리SOURCE에를 포함시키는 것은 AWS CLI또는 API를 사용하여 쿼리를 생성할 때 로그 그룹 필드 인덱스와 쿼리에 포함할 데이터 소스를 지정하는 유용한 방법입니다. SOURCE 명령은 CloudWatch 콘솔이 아닌 AWS CLI및 API에서만 지원됩니다. CloudWatch 콘솔을 사용하여 쿼리를 시작할 때 콘솔 인터페이스를 사용하여 로그 그룹과 데이터 소스 이름 및 유형을 지정합니다.
aws:fieldIndex를 사용하여 쿼리에서 지정한 필드에 인덱싱된 로그 그룹만 검색하도록 강제하여 인덱스된 데이터만 반환합니다. filterIndex 명령에 지정된 필드를 기반으로 관련 로그 그룹이 자동으로 선택됩니다. 이렇게 하면 쿼리에 지정된 필드가 포함된 로그 이벤트가 없는 로그 그룹을 건너뛰고이 필드 인덱스의 쿼리에 지정된 값과 일치하는 로그 그룹만 스캔하여 스캔 볼륨이 줄어듭니다. aws:fieldIndex를 사용하여 필드 이름을 지정하고 소스 명령의 필드 이름 및 값을 지정하여 지정된 필드 및 값이 포함된 인덱싱된 데이터만 쿼리합니다. 자세한 내용은 쿼리 성능을 개선하고 스캔 볼륨을 줄이기 위한 필드 인덱스 생성 섹션을 참조하세요.
표준 로그 클래스의 로그 그룹 쿼리에 OpenSearch PPL을 사용할 수 있습니다.
참고
CloudWatch Logs에서 지원되는 모든 OpenSearch PPL 쿼리 명령에 대한 자세한 내용과 구문 및 제한에 대한 자세한 내용은 OpenSearch Service 개발자 가이드의 Supported PPL commands을 참조하세요.
사용할 수 있는 다른 쿼리 언어에 대한 자세한 내용은 CloudWatch Logs Insights, OpenSearch Service SQL 및 CloudWatch Metrics Insights을 참조하세요.
| 명령 또는 함수 | 예제 쿼리 | 설명 |
|---|---|---|
|
필드 |
|
프로젝션이 필요한 필드 집합을 표시합니다. |
|
join |
|
두 데이터세트를 함께 조인합니다. |
|
where |
|
지정한 조건에 따라 데이터를 필터링합니다. |
|
aws:fieldIndex |
|
쿼리에서 지정한 필드에 인덱싱된 로그 그룹만 검색하도록 쿼리를 강제하여 인덱싱된 데이터만 반환합니다. |
|
통계 |
|
집계 및 계산 수행 |
|
parse |
|
문자열에서 정규식 패턴을 추출하고 추출된 패턴을 표시합니다. 추출된 패턴을 사용하여 새 필드를 생성하거나 데이터를 필터링할 수 있습니다. |
|
sort |
|
필드 이름을 기준으로 표시된 결과를 정렬합니다. sort -FieldName을 사용하여 내림차순으로 정렬합니다. |
|
eval |
|
필드 값을 수정 또는 처리하고 다른 필드에 저장합니다. 이는 열을 수학적으로 수정하거나, 열에 문자열 함수를 적용하거나, 열에 날짜 함수를 적용하는 데 유용합니다. |
|
rename |
|
검색 결과에서 하나 이상의 필드 이름을 바꿉니다. |
|
head |
|
표시된 쿼리 결과를 첫 번째 N개 행으로 제한합니다. |
|
top |
|
필드의 가장 빈번한 값을 찾습니다. |
|
dedup |
|
지정한 필드를 기반으로 중복 항목을 제거합니다. |
|
rare |
|
필드 목록에 있는 모든 필드의 가장 빈도가 낮은 값을 찾습니다. |
|
subquery |
|
PPL 명령문 내에서 복잡한 중첩 쿼리를 수행합니다. |
|
trendline |
|
필드의 이동 평균을 계산합니다. |
|
eventStats |
|
계산된 요약 통계로 이벤트 데이터를 강화합니다. 이벤트 내에서 지정된 필드를 분석하고 다양한 통계 측정값을 계산한 다음 이러한 결과를 각 원래 이벤트에 새 필드로 추가합니다. |
|
확장 |
|
여러 값이 포함된 필드를 별도의 행으로 분할하여 지정된 필드의 각 값에 대해 새 행을 생성합니다. |
|
fillnull |
|
입력한 값으로 null 필드를 채웁니다. 하나 이상의 필드에서 사용할 수 있습니다. |
|
평면화 |
|
필드를 평면화합니다. 필드는 |
|
cidrmatch |
|
지정된 IP 주소가 지정된 CIDR 범위 내에 있는지 확인합니다. |
|
fieldsummary |
|
각 필드(개수, 고유 개수, 최소, 최대, 평균, stddev 및 평균)에 대한 기본 통계를 계산합니다. |
|
grok |
|
grok 패턴으로 텍스트 필드를 구문 분석하고 검색 결과에 결과를 추가합니다. |
|
문자열 함수 |
|
PPL 쿼리 내에서 문자열 및 텍스트 데이터를 조작하고 변환할 수 있는 PPL의 내장 함수입니다. 예를 들어, 변환 사례, 문자열 결합, 부분 추출, 텍스트 정리 등이 있습니다. |
|
날짜/시간 함수 |
|
PPL 쿼리에서 날짜 및 타임스탬프 데이터를 처리하고 변환하기 위한 내장 함수입니다. 예: date_add, date_format, datediff, date-sub, timestampadd, timestampdiff, current_timezone, utc_timestamp, current_date |
|
조건 함수 |
|
특정 필드 조건을 확인하고 조건부로 표현식을 평가하는 내장 함수입니다. 예를 들어, field1이 null인 경우 field2를 반환합니다. |
|
수학 함수 |
|
PPL 쿼리에서 수학 계산 및 변환을 수행하기 위한 내장 함수입니다. 예: abs(절대값), round(숫자 반올림), sqrt(제곱근), pow(검정력 계산), ceil(가장 가까운 정수로 반올림) |
|
CryptoGraphic 함수 |
|
지정된 필드의 해시를 계산하려면 |
|
JSON 함수 |
|
배열, 추출 및 검증을 포함하여 JSON을 처리하기 위한 내장 함수입니다. 예: json_object, json_array, to_json_string, json_array_length, json_extract, json_keys 및 json_valid |
쿼리 범위
쿼리에 SOURCE를 포함시키는 것은 AWS CLI또는 API를 사용하여 쿼리를 생성할 때 쿼리에 포함할 로그 그룹을 지정하는 유용한 방법입니다. SOURCE 명령은 CloudWatch 콘솔이 아닌 AWS CLI및 API에서만 지원됩니다. CloudWatch 콘솔을 사용하여 쿼리를 시작할 때 콘솔 인터페이스를 사용하여 로그 그룹과 데이터 소스 이름 및 유형을 지정합니다.
PPL의 소스 명령은 이제 여러 가지 지정 방법을 지원합니다.
-
로그 그룹
-
필드 인덱스 - 신규
-
데이터 소스 및 유형 - 신규
로그 그룹
로그 그룹 소스 선택은 고객이 검색해야 하는 정확한 로그 그룹(들)을 알 때 사용할 수 있습니다.
source = [lg:`/aws/lambda/my-function`] | where status = 200 | head 10
필드 인덱스
필드 인덱스 기반 소스 선택은 인덱싱된 필드를 필터링할 때 결과를 인덱싱된 데이터로만 제한하여 쿼리되는 데이터의 양을 줄입니다. filterIndex 명령에 지정된 필드를 기반으로 관련 로그 그룹이 자동으로 선택됩니다. 필드 인덱스 및 필드 인덱스 생성 방법에 대한 자세한 내용은 필드 인덱스 생성을 참조하여 쿼리 성능을 개선하고 스캔 볼륨을 줄입니다.
aws:fieldIndex를 사용하여 쿼리에서 지정한 필드에 인덱싱된 로그 그룹만 검색하도록 강제하여 인덱스된 데이터만 반환합니다. 해당 필드에 인덱싱된 이러한 로그 그룹의 경우, 인덱싱된 필드의 쿼리에 지정된 필드가 포함된 로그 이벤트가 없는 로그 그룹을 건너뛰어 쿼리를 추가로 최적화합니다. 또한 해당 필드 인덱스의 쿼리에 지정된 값과 일치하는 이러한 로그 그룹의 로그 이벤트만 스캔하려고 시도하여 스캔 볼륨을 줄입니다. 필드 인덱스 및 필드 인덱스 생성 방법에 대한 자세한 내용은 필드 인덱스 생성을 참조하여 쿼리 성능을 개선하고 스캔 볼륨을 줄입니다.
PPL에서 aws:fieldIndex는 인덱스로 처리해야 하는 키 값 페어를 지정하는 데 사용됩니다. 구문은 다음과 같습니다.
source = [`aws:fieldIndex`="region", `region` = "us-west-2"] | where status = 200 | head 10
여기서 각 항목은 다음과 같습니다.
-
`aws:fieldIndex`="region"는 리전을 필드 인덱스로 식별합니다.-
참고: 대신 = 고객이 IN을 사용하여 여러 인덱스를 지정할 수 있음(아래 예)
-
-
`region`="us-west-2"적용할 필터 조건을 식별합니다.-
참고: 대신 = 고객이 IN을 사용하여 여러 값을 지정할 수 있음(아래 예)
-
고객은 다음과 같이 여러 fieldIndexes를 지정할 수 있습니다.
source = [`aws:fieldIndex` IN ("status", "region"), `status` = 200, `region` IN ("us-west-2", "us-east-1")] | head 10
데이터 소스 및 유형
데이터 소스 및 유형 기반 소스 선택은 고객이 쿼리해야 하는 정확한 데이터 소스를 알고 있을 때 사용할 수 있습니다. 이 쿼리는 지정된 데이터 소스 및 유형이 포함된 하나 이상의 로그 그룹을 통해 실행됩니다.
source = [ds:`data_source.type`] | where status = 200 | head 10
데이터 소스 쿼리에 지원되는 PPL
PPL에서 데이터 소스를 쿼리하는 사용 사례를 지원하기 위해 동적 소스 선택기 절을 사용할 수 있습니다. 이 구문을 사용하면 검색 명령에서 데이터 소스를 지정하여 쿼리할 수 있습니다. 최대 10개의 데이터 소스를 지정할 수 있습니다.
구문
source=[ds:`DataSource1.Type1`, ds:`DataSource2.Type2`, ...ds:`DataSourcen.Typen`]
쿼리 예
search source=[ds:`DataSource1.Type1`, ds:`DataSource2.Type2`] | fields field1, field2
결합된 예제
고객은 어떤 순서로든 모든 소스 선택 연산자를 지정할 수 있으며, 결과는 적용된 모든 조건의 교집합이 됩니다.
예를 들어 /aws/lambda/my-function-1에는 다양한 인덱스를 포함한 여러 데이터 소스 및 유형이 포함될 수 있습니다. 다음 쿼리가 실행되면 반환된 결과에는 소스 및 유형 DataSource1.Type1의 이벤트만 있고 'status' = 200의 기준과 일치합니다.
search source=[ ds:`DataSource1.Type1`, lg:`/aws/lambda/my-function-1`, `aws:fieldIndex` IN ("status"), `status` = 200 ]
제한 사항
OpenSearch PPL을 사용하여 CloudWatch Logs Insights에서 쿼리할 때 다음 제한이 적용됩니다.
-
데이터 소스 쿼리에는 조인 또는 하위 쿼리 명령을 사용할 수 없습니다.