CSP (Cloud Service Provider)/AWS

[AWS] CloudWatch Loginsight Query 사용법

BTC우동 2023. 6. 8. 09:01

 

안녕하세요~? 할배즈..입니다.

 

오늘은 CloudWatch의 Loginsight Query 기본 사용법에 대해 알아보겠습니다.

 

Amazon CloudWatch Logs를 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스, AWS CloudTrail, Route 53 및 다른 원본에서 시스템, 애플리케이션 및 사용자 지정 로그 파일을 모니터링, 저장 및 액세스할 수 있습니다.

 

CloudWatch Logs Insights를 사용하여 로그 데이터를 대화식으로 검색하고 분석할 수 있습니다. 운영상의 문제에 보다 효율적이고 효과적으로 대처할 수 있도록 쿼리를 수행할 수 있습니다. CloudWatch Logs Insights에는 몇 가지 간단하지만 강력한 명령과 함께 특별히 구축된 쿼리 언어가 포함되어 있습니다.

 

Cloud Watch Loginsight Query는 |(파이프라인)으로 구분됩니다.

  • fields – 하나 이상의 로그 필드를 검색. (abs, sqrt, strlen, trim 등의 기능도 활용할 수 있다.)
  • display – 쿼리 결과에 표시할 필드를 지정. 
  • filter – Boolean 연산자, 비교 연산자 및 정규 표현식에서 구축된 하나 이상의 조건을 기반으로 로그 필드를 검색.
  • stats – 특정 시간 간격동안 로그 필드의 합계, 평균, 카운트, 최소, 최대값 및 백분위수와 같은 집계 통계량을 계산.
  • sort – 로그 이벤트를 오름차순 또는 내림차순으로 정렬.
  • limit – 쿼리가 반환하는 로그 이벤트 수 제한.
  • parse – 로그 필드에서 데이터를 추출하여 쿼리에 의해 추가로 처리될 수 있는 하나 이상의 ephemeral  필드를 생성.

기본 문법

1. fields

fields를 사용하여 쿼리 결과에 특정 필드를 표시할 수 있습니다.

함수와 연산을 통해 필드를 수정하거나, 새로운 필드를 생성할 수 있습니다.

fields @timestamp, @message | sort @timestamp desc | limit 20

 

2. filter

filter 명령을 사용하여 하나 이상의 조건과 일치하는 로그 이벤트를 가져올 수 있습니다.

fields @timestamp, @message
| filter (range>3000)
| sort @timestamp desc
| limit 20

f1에 Exception 이 포함된 모든 이벤트를 반환하는 3가지 쿼리 (모두 대/소문자 구별)
* fields f1, f2, f3 | filter f1 like /Exception/
* fields f1, f2, f3 | filter f1 =~ /Exception/ 
* fields f1, f2, f3 | filter f1 like "Exception" (부문 문자열 일치)

대/ 소문자 구분하지 않는 쿼리
fields f1, f2, f3 | filter f1 like /(?i)Exception/

f1에 정확하게 단어 Exception이 포함된 모든 이벤트 반환 (대/소문자 구분하지 않음)
fields f1, f2, f3 | filter f1 =~ /^(?i)Exception$/

range에 대한 값이 3000보다 큰 모든 로그 이벤트를 반환하는 쿼리의 예를 보여줍니다. 쿼리는 결과를 20개의 로그 이벤트로 제한하고 로그 이벤트를 내림차순의 @timestamp로 정렬합니다.

 

3. stats

stats를 사용하여 로그 필드 값의 집계 통계를 계산할 수 있습니다.

  • f1필드의 평균을 "myAvgF1"으로 별칭을 사용하고 내림차순 정렬
stats avg(f1) as myAvgF1 | sort myAvgF1 desc

 

4. sort

sort를 사용하여 로그 이벤트를 오름차순(asc) 또는 내림차순(desc)으로 표시할 수 있습니다.

  • f1 필드를 기준으로 desc 정렬
Fileds f1, f2, f3 
      | sort f1 desc

 

5. limit

limit을 사용하여 쿼리에서 반환할 로그 이벤트 수를 지정할 수 있습니다.

 

 

지원되는 연산 및 함수

산술 연산자

a + b 덧셈
a - b 뺄셈
a * b 곱셈
a / b 나눗셈
a ^ b 거듭제곱(2 ^ 3에서 8 반환)
a % b 나머지 또는 모듈러스(10 % 3에서 1 반환)

 

boolean 연산자

and, or  not

 

비교 연산자

= 같음
!= 같지 않음
< 미만
> 초과
<= 작거나 같음
>= 크거나 같음

통계 집계 함수

avg(fieldName: NumericLogField) 숫자 지정된 필드의 값 평균입니다.
count()
count(fieldName: LogField)
숫자 로그 이벤트를 계산합니다. count()(또는count(*))는 쿼리에서 반환하는 이벤트 수를 모두 세고 count(fieldName)은 지정한 필드 이름이 포함된 레코드 수를 모두 계산합니다.
count_distinct(fieldName: LogField) 숫자 필드에 대해 고유한 값의 개수를 반환합니다. 필드의 카디널리티가 매우 높은 경우(고유한 값이 많이 포함되어 있음) count_distinct가 반환하는 값은 근사치입니다.
max(fieldName: LogField) LogFieldValue 쿼리된 로그에서 이 로그 필드에 대한 최댓값입니다.
min(fieldName: LogField) LogFieldValue 쿼리된 로그에서 이 로그 필드에 대한 최솟값입니다.
pct(fieldName: LogFieldValue, percent: number) LogFieldValue 백분위수는 데이터 세트에서 값의 상대적 위치를 나타냅니다. 예를 들어, pct(@duration, 95)는 @duration의 값 중 95퍼센트가 이 값보다 낮고 5퍼센트는 이 값보다 큰 @duration 값을 반환합니다.
stddev(fieldName: NumericLogField) 숫자 지정된 필드의 값에 대한 표준 편차입니다.
sum(fieldName: NumericLogField) 숫자 지정된 필드의 값 합계입니다.

 

지원되는 연산 및 함수는 더 다양하게 있지만 자주 사용하는 항목 위주로 정리하였습니다.

더 자세하게 알고 싶으면 

https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html

 

Amazon CloudWatch Logs란 무엇인가요? - Amazon CloudWatch Logs

Amazon CloudWatch Logs란 무엇인가요? Amazon CloudWatch Logs를 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스, AWS CloudTrail, Route 53 및 다른 원본에서 시스템, 애플리케이션 및 사용자 지정 로그 파일을

docs.aws.amazon.com

공식 문서를 참조해 주세요~!

 

이상 할배즈..였습니다~!