기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
OpenSearch 구조화 쿼리 언어(SQL)
이 섹션에는 OpenSearch SQL을 사용한 CloudWatch Logs 쿼리에 대한 기본 소개가 포함되어 있습니다. 관계형 데이터베이스로 작업하는 데 익숙한 옵션을 제공합니다. OpenSearch SQL은 SQL 기능의 하위 집합을 제공하므로 임시 쿼리 및 데이터 분석 작업을 수행하는 데 적합합니다. OpenSearch SQL을 사용하면 SELECT, FROM, WHERE, GROUP BY, HAVING 및 기타 다양한 SQL 명령 및 함수와 같은 명령을 사용할 수 있습니다. 로그 그룹 간에 JOINs 실행하고, 하위 쿼리를 사용하여 로그 그룹 간에 데이터를 상호 연관시키고, 풍부한 JSON, 수학, 문자열, 조건부 및 기타 SQL 함수 세트를 사용하여 로그 및 보안 데이터에 대한 강력한 분석을 수행할 수 있습니다.
OpenSearch SQL은 표준 로그 클래스의 로그 그룹 쿼리에만 사용할 수 있습니다.
참고
다음 표에는 CloudWatch Logs에서 지원되는 SQL 명령 및 함수가 나열되어 있습니다. 구문을 포함한 모든 OpenSearch SQL 명령에 대한 자세한 내용은 OpenSearch Service 개발자 안내서의 지원되는 SQL 명령을 참조하세요.
사용할 수 있는 다른 쿼리 언어에 대한 자세한 내용은CloudWatch Logs Insights, OpenSearch Service PPL 및 CloudWatch를 Metrics Insights참조하세요.
지원되는 SQL 명령
참고
예제 쿼리 열에서 쿼리하려는 데이터 소스에 따라
필요에 따라를 바꿉니다.<logGroup>
명령 또는 함수 | 쿼리 예 | 설명 |
---|---|---|
SELECT |
|
프로젝션된 값을 표시합니다. |
FROM |
|
데이터를 검색할 소스 테이블(들) 또는 뷰(들)를 지정하는 기본 제공 절로, 다양한 유형의 조인 및 하위 쿼리를 지원합니다. |
WHERE |
|
제공된 필드 기준에 따라 로그 이벤트를 필터링합니다. |
GROUP BY |
|
범주를 기반으로 로그 이벤트를 그룹화하고 통계를 기반으로 평균을 찾습니다. |
HAVING |
|
그룹화 조건을 기준으로 결과를 필터링합니다. |
ORDER BY |
|
ORDER BY 절의 필드를 기반으로 결과를 정렬합니다. 내림차순 또는 오름차순으로 정렬할 수 있습니다. |
JOIN |
|
공통 필드를 기반으로 두 테이블의 결과를 조인합니다. 내부 조인 또는 왼쪽 외부 조인을 지정해야 합니다. |
LIMIT |
|
표시된 쿼리 결과를 첫 번째 N개 행으로 제한합니다. |
문자열 함수 |
|
SQL 쿼리 내에서 문자열 및 텍스트 데이터를 조작하고 변환할 수 있는 SQL의 내장 함수입니다. 예를 들어 변환 사례, 문자열 결합, 부분 추출, 텍스트 정리 등이 있습니다. |
날짜 함수 |
|
SQL 쿼리에서 날짜 및 타임스탬프 데이터를 처리하고 변환하기 위한 내장 함수입니다. 예: date_add, date_format, datediff, current_date. |
조건 함수 |
|
지정된 조건을 기반으로 작업을 수행하거나 조건부로 표현식을 평가하는 내장 함수입니다. 예: CASE 및 IF. |
함수 집계 |
|
여러 행에 대해 계산을 수행하여 단일 요약 값을 생성하는 내장 함수입니다. SUM, COUNT, AVG, MAX 및 MIN을 예로 들 수 있습니다. |
JSON 함수 |
|
데이터 세트에서 JSON 구조를 조작할 수 있도록 SQL 쿼리(예: from_json, to_json, get_json_object, json_tuple) 내에서 JSON 형식의 데이터를 구문 분석, 추출, 수정 및 쿼리하는 기본 제공 함수입니다. |
배열 함수 |
|
SQL 쿼리에서 배열 유형 열로 작업하기 위한 내장 함수를 사용하면 배열 데이터 액세스, 수정 및 분석과 같은 작업(예: 크기, 폭발, array_contains)을 수행할 수 있습니다. |
윈도 함수 |
|
현재 행(창)과 관련된 지정된 행 집합에 대해 계산을 수행하여 순위, 실행 합계 및 이동 평균과 같은 작업을 활성화하는 내장 함수입니다. 예: ROW_NUMBER, RANK, LAG 및 LEAD |
변환 함수 |
|
SQL 쿼리 내에서 데이터를 한 유형에서 다른 유형으로 변환하여 데이터 유형 변환 및 형식 변환을 지원하는 내장 함수입니다. 예: CAST, TO_DATE, TO_TIMESTAMP 및 BINARY. |
조건자 함수 |
|
조건을 평가하고 지정된 기준 또는 패턴을 기반으로 부울 값(true/false)을 반환하는 내장 함수입니다. 예를 들어 IN, LIKE, BETWEEN, IS NULL 및 EXISTS가 있습니다. |
여러 로그 그룹 선택 |
|
SELECT 문에서 여러 로그 그룹을 지정할 수 있습니다. |
multi-log-group 쿼리에 지원되는 SQL
SQL에서 여러 로그 그룹을 쿼리하는 사용 사례를 지원하려면 logGroups
명령을 사용하면 됩니다. 이 구문을 사용하여 FROM 명령에 지정하여 여러 로그 그룹을 쿼리할 수 있습니다.
구문:
`logGroups( logGroupIdentifier: ['LogGroup1','LogGroup2', ...'LogGroupn'] )
이 구문에서는 logGroupIdentifier
파라미터에 최대 50개의 로그 그룹을 지정할 수 있습니다. 모니터링 계정의 로그 그룹을 참조하려면 LogGroup
이름 대신 ARNs 사용합니다.
쿼리 예제:
SELECT LG1.Column1, LG1.Column2 from `logGroups( logGroupIdentifier: ['LogGroup1', 'LogGroup2'] )` as LG1 WHERE LG1.Column1 = 'ABC'
CloudWatch Logs를 쿼리할 때 FROM
문 뒤에 여러 로그 그룹이 포함된 다음 구문은 지원되지 않습니다.
SELECT Column1, Column2 FROM 'LogGroup1', 'LogGroup2', ...'LogGroupn' WHERE Column1 = 'ABC'
제한 사항
OpenSearch SQL을 사용하여 CloudWatch Logs Insights에서 쿼리할 때 다음 제한 사항이 적용됩니다.
-
SELECT 문에는 JOIN을 하나만 포함할 수 있습니다.
-
중첩 하위 쿼리는 한 수준만 지원됩니다.
-
세미콜론(;)으로 구분된 여러 문 쿼리는 지원되지 않습니다.
-
동일하지만 경우에 따라서만 다른 필드 이름을 포함하는 쿼리(예: field1 및 FIELD1)는 지원되지 않습니다.
예를 들어 다음 쿼리는 지원되지 않습니다.
Select AWSAccountId, AwsAccountId from LogGroup
그러나 필드 이름(
@logStream
)이 두 로그 그룹에서 동일하기 때문에 다음 쿼리가 지원됩니다.Select a.`@logStream`, b.`@logStream` from Table A INNER Join Table B on a.id = b.id
-
함수와 표현식은 필드 이름에서 작동해야 하며 FROM 절에 지정된 로그 그룹이 있는 SELECT 문의 일부여야 합니다.
예를 들어이 쿼리는 지원되지 않습니다.
SELECT cos(10) FROM LogGroup
이 쿼리는 다음과 같이 지원됩니다.
SELECT cos(field1) FROM LogGroup
-
SQL 또는 PPL 명령을 사용하는 경우 특정 필드를 백틱에 묶어 성공적으로 쿼리합니다. 백틱은 특수 문자(비영숫자 및 비숫자)가 있는 필드에 필요합니다. 예를 들어 ,
Operation.Export
및@message
를 백틱Test::Field
으로 묶습니다. 순전히 영문자 이름의 필드를 백틱으로 묶을 필요는 없습니다.간단한 필드가 있는 쿼리의 예:
SELECT SessionToken, Operation, StartTime FROM `LogGroup-A` LIMIT 1000;
백틱이 추가된 유사한 쿼리:
SELECT `@SessionToken`, `@Operation`, `@StartTime` FROM `LogGroup-A` LIMIT 1000;