기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
stats
stats
를 사용하여 막대형 차트, 꺾은선형 차트, 누적 영역 차트와 같은 로그 데이터의 시각화를 생성합니다. 이렇게 하면 로그 데이터에서 패턴을 더 효율적으로 식별할 수 있습니다. CloudWatch Logs Insights는 해당 stats
함수와 하나 이상의 집계 함수를 사용하는 쿼리에 대한 시각화를 생성합니다.
예를 들어, Route 53 로그 그룹의 다음 쿼리는 시간당 Route 53 레코드의 분포를 쿼리 유형별로 보여주는 시각화를 반환합니다.
stats count(*) by queryType, bin(1h)
이러한 쿼리는 모두 막대 차트를 생성할 수 있습니다. 쿼리가 bin()
함수를 사용하여 필드별로 데이터를 그룹화하는 경우 선형 차트 및 누적 영역 차트도 볼 수 있습니다.
bin
함수에서는 다음과 같은 시간 단위 및 약어가 지원됩니다. 둘 이상의 문자를 포함하는 모든 단위 및 약어의 경우 s를 추가하여 복수화할 수 있습니다. 따라서 hr
및 hrs
모두 시간을 지정하는 데 사용됩니다.
millisecond
ms
msec
second
s
sec
minute
m
min
hour
h
hr
day
d
week
w
month
mo
mon
quarter
q
qtr
year
y
yr
시계열 데이터 시각화
시계열 시각화는 다음과 같은 특성을 가진 쿼리에 사용할 수 있습니다.
-
쿼리에 집계 함수가 하나 이상 포함되어 있습니다. 자세한 정보는 Aggregation Functions in the Stats Command 섹션을 참조하세요.
-
쿼리가
bin()
함수를 사용하여 필드 하나를 기준으로 데이터를 그룹화합니다.
이러한 쿼리는 선형 차트, 누적 영역 차트, 막대 차트 및 파이 차트를 생성할 수 있습니다.
예제
전체 자습서는 자습서: 시계열 시각화를 생성하는 쿼리 실행 섹션을 참조하세요.
다음은 시계열 시각화에 사용할 수 있는 쿼리 예제입니다.
다음 쿼리는 5분마다 생성된 데이터 포인트와 함께 myfield1
필드의 평균 값에 대한 시각화를 생성합니다. 각 데이터 포인트는 이전 5분 동안 생성된 로그의 myfield1
값 평균을 집계한 것입니다.
stats avg(myfield1) by bin(5m)
다음 쿼리는 5분마다 생성된 데이터 포인트와 함께 여러 필드를 기준으로 세 값의 시각화를 생성합니다. 쿼리가 집계 함수를 포함하고 있고 그룹화 필드로 bin()
을 사용하기 때문에 시각화가 생성됩니다.
stats avg(myfield1), min(myfield2), max(myfield3) by bin(5m)
선형 차트 및 누적 영역 차트 제한 사항
로그 항목 정보를 집계하지만 bin()
함수를 사용하지 않는 쿼리는 막대 차트를 생성할 수 있습니다. 그러나 이러한 쿼리는 선형 차트 또는 누적 영역 차트를 생성할 수 없습니다. 이러한 쿼리 유형에 대한 자세한 내용은 필드별로 그룹화된 로그 데이터 시각화 섹션을 참조하세요.
필드별로 그룹화된 로그 데이터 시각화
stats
함수와 하나 이상의 집계 함수를 사용하는 쿼리에 대해 막대 차트를 생성할 수 있습니다. 자세한 정보는 Aggregation Functions in the Stats Command 섹션을 참조하세요.
시각화를 보려면 쿼리를 실행합니다. 그런 다음 Visualization(시각화) 탭을 선택하고 Line(선형) 옆의 화살표를 선택한 다음 Bar(막대)를 선택합니다. 막대 차트에서는 시각화가 최대 100개 막대로 제한됩니다.
예제
전체 자습서는 자습서: 로그 필드로 그룹화된 시각화를 생성하는 쿼리 실행 섹션을 참조하세요. 다음 단락에는 필드별 시각화에 대한 더 많은 예제 쿼리가 포함되어 있습니다.
다음 VPC 흐름 로그 쿼리는 각 대상 주소에 대해 세션당 전송된 평균 바이트 수를 찾습니다.
stats avg(bytes) by dstAddr
각 결과 값에 대해 둘 이상의 막대가 포함된 차트를 생성할 수도 있습니다. 예를 들어 다음 VPC 흐름 로그 쿼리는 각 대상 주소에 대해 세션당 전송된 평균 및 최대 바이트 수를 찾습니다.
stats avg(bytes), max(bytes) by dstAddr
다음 쿼리는 쿼리 유형에 대해 Amazon Route 53 쿼리 로그 수를 찾습니다.
stats count(*) by queryType
단일 쿼리에서 여러 통계 명령 사용
단일 쿼리에 최대 두 개의 stats
명령을 사용할 수 있습니다. 이렇게 하면 첫 번째 집계의 출력에 대해 추가 집계를 수행할 수 있습니다.
예: 두 개의 stats
명령을 사용한 쿼리
예를 들어, 다음 쿼리는 먼저 5분 빈(bin)의 총 트래픽 볼륨을 찾아낸 다음 해당 5분 빈 중 최고, 최저, 평균 트래픽 볼륨을 계산합니다.
FIELDS strlen(@message) AS message_length | STATS sum(message_length)/1024/1024 as logs_mb BY bin(5m) | STATS max(logs_mb) AS peak_ingest_mb, min(logs_mb) AS min_ingest_mb, avg(logs_mb) AS avg_ingest_mb
예: 여러 통계 명령어를 다른 함수(filter
, fields
, bin
)와 결합
단일 쿼리에서 두 개의 stats
명령을 다른 명령(filter
및 fields
)과 결합할 수 있습니다. 예를 들어 다음 쿼리는 세션에서 고유한 IP 주소 수를 찾고 클라이언트 플랫폼별로 세션 수를 찾아내고, 해당 IP 주소를 필터링한 다음, 마지막으로 클라이언트 플랫폼별 평균 세션 요청을 찾아냅니다.
STATS count_distinct(client_ip) AS session_ips, count(*) AS requests BY session_id, client_platform | FILTER session_ips > 1 | STATS count(*) AS multiple_ip_sessions, sum(requests) / count(*) AS avg_session_requests BY client_platform
여러 stats
명령을 사용하여 쿼리에서 bin
및 dateceil
함수를 사용할 수 있습니다. 예를 들어 다음 쿼리는 먼저 메시지를 5분 블록으로 결합한 다음 5분 블록을 10분 블록으로 집계하고 각 10분 블록 내의 최고, 최저 및 평균 트래픽 볼륨을 계산합니다.
FIELDS strlen(@message) AS message_length | STATS sum(message_length) / 1024 / 1024 AS logs_mb BY BIN(5m) as @t | STATS max(logs_mb) AS peak_ingest_mb, min(logs_mb) AS min_ingest_mb, avg(logs_mb) AS avg_ingest_mb BY dateceil(@t, 10m)
참고 및 제한 사항
쿼리당 최대 두 개의 stats
명령을 사용할 수 있습니다. 이 할당량은 변경할 수 없습니다.
sort
또는 limit
명령을 사용하는 경우 이 명령은 두 번째 stats
명령 뒤에 나타나야 합니다. 두 번째 stats
명령 앞에 있는 경우 쿼리는 유효하지 않습니다.
쿼리에 두 개의 stats
명령이 있는 경우 첫 번째 stats
집계가 완료될 때까지 쿼리의 일부 결과가 표시되지 않습니다.
단일 쿼리의 두 번째 stats
명령에서는 첫 번째 stats
명령에 정의된 필드만 참조할 수 있습니다. 예를 들어 첫 번째 stats
집계 후에는 @message
필드를 사용할 수 없으므로 다음 쿼리는 유효하지 않습니다.
FIELDS @message | STATS SUM(Fault) by Operation # You can only reference `SUM(Fault)` or Operation at this point | STATS MAX(strlen(@message)) AS MaxMessageSize # Invalid reference to @message
첫 번째 stats
명령 이후에 참조하는 모든 필드는 첫 번째 stats
명령에서 정의해야 합니다.
STATS sum(x) as sum_x by y, z | STATS max(sum_x) as max_x by z # You can only reference `max(sum_x)`, max_x or z at this point
중요
bin
함수는 항상 @timestamp
필드를 묵시적으로 사용합니다. 즉, 첫 번째 stats
명령을 사용하여 timestamp
필드를 전파하지 않으면 두 번째 stats
명령에서 bin
함수를 사용할 수 없습니다. 예를 들어 다음 쿼리는 유효하지 않습니다.
FIELDS strlen(@message) AS message_length | STATS sum(message_length) AS ingested_bytes BY @logStream | STATS avg(ingested_bytes) BY bin(5m) # Invalid reference to @timestamp field
대신 첫 번째 stats
명령에서 @timestamp
필드를 정의하면 다음 예제와 같이 두 번째 stats
명령에서 dateceil
과 함께 필드를 사용할 수 있습니다.
FIELDS strlen(@message) AS message_length | STATS sum(message_length) AS ingested_bytes, max(@timestamp) as @t BY @logStream | STATS avg(ingested_bytes) BY dateceil(@t, 5m)
stats와 함께 사용할 함수
CloudWatch Logs Insights는 통계 집계 함수와 통계 비집계 함수를 모두 지원합니다.
statsaggregation 함수를 stats
명령에서 사용하고 다른 함수의 인수로 사용합니다.
함수 | 결과 유형 | 설명 |
---|---|---|
|
number |
지정된 필드의 값 평균입니다. |
|
number |
로그 이벤트를 계산합니다. |
|
number |
필드에 대해 고유한 값의 개수를 반환합니다. 필드의 카디널리티가 매우 높은 경우(고유한 값이 많이 포함되어 있음) |
|
LogFieldValue |
쿼리된 로그에서 이 로그 필드에 대한 최댓값입니다. |
|
LogFieldValue |
쿼리된 로그에서 이 로그 필드에 대한 최솟값입니다. |
|
LogFieldValue |
백분위수는 데이터 세트에서 값의 상대적 위치를 나타냅니다. 예를 들어, |
|
number |
지정된 필드의 값에 대한 표준 편차입니다. |
|
number |
지정된 필드의 값 합계입니다. |
통계 비집계 함수
비집계 함수를 stats
명령에서 사용하고 다른 함수의 인수로 사용합니다.
함수 | 결과 유형 | 설명 |
---|---|---|
|
LogField |
쿼리된 로그에서 가장 이른 타임스탬프가 있는 로그 이벤트에서 |
|
LogField |
쿼리된 로그에서 최신 타임스탬프가 있는 로그 이벤트에서 |
|
LogField |
쿼리된 로그에서 가장 빨리 정렬된 |
|
LogField |
쿼리된 로그에서 가장 늦게 정렬된 |