드릴다운에 예약된 쿼리 및 원시 데이터 사용 - Amazon Timestream

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

드릴다운에 예약된 쿼리 및 원시 데이터 사용

플릿 전체에서 집계된 통계를 사용하여 드릴다운이 필요한 영역을 식별한 다음 원시 데이터를 사용하여 세분화된 데이터로 드릴다운하여 심층적인 인사이트를 얻을 수 있습니다.

이 예제에서는 집계 대시보드를 사용하여 다른 배포에 비해 CPU 사용률이 더 높은 것으로 보이는 배포(배포는 지정된 리전, 셀, 사일로 및 가용 영역 내의 특정 마이크로서비스용)를 식별하는 방법을 알아봅니다. 그런 다음 드릴다운하여 원시 데이터를 더 잘 이해할 수 있습니다. 이러한 드릴다운은 빈도가 낮고 배포와 관련된 데이터에만 액세스할 수 있으므로이 분석에 원시 데이터를 사용할 수 있으며 예약된 쿼리를 사용할 필요가 없습니다.

배포당 드릴다운

아래 대시보드는 지정된 배포 내에서 보다 세분화된 서버 수준 통계를 자세히 보여줍니다. 이 대시보드는 플릿의 여러 부분을 드릴다운할 수 있도록 리전, 셀, 사일로, 마이크로서비스, availability_zone과 같은 변수를 사용합니다. 그런 다음 해당 배포에 대한 몇 가지 집계 통계를 표시합니다.

Dashboard showing deployment statistics with filters for region, cell, silo, and other parameters.
CPU distribution graph showing consistent patterns for avg, p90, p95, and p99 values over 24 hours.

아래 쿼리에서 변수의 드롭다운에서 선택한 값이 쿼리의 WHERE 절에서 조건자로 사용되므로 배포를 위한 데이터에만 집중할 수 있습니다. 그런 다음 패널은 해당 배포의 인스턴스에 대한 집계된 CPU 지표를 표시합니다. 원시 데이터를 사용하여 대화형 쿼리 지연 시간으로이 드릴다운을 수행하여 심층적인 인사이트를 도출할 수 있습니다.

SELECT bin(time, 5m) as minute, ROUND(AVG(cpu_user), 2) AS avg_value, ROUND(APPROX_PERCENTILE(cpu_user, 0.9), 2) AS p90_value, ROUND(APPROX_PERCENTILE(cpu_user, 0.95), 2) AS p95_value, ROUND(APPROX_PERCENTILE(cpu_user, 0.99), 2) AS p99_value FROM "raw_data"."devops" WHERE time BETWEEN from_milliseconds(1636527099476) AND from_milliseconds(1636613499476) AND region = 'eu-west-1' AND cell = 'eu-west-1-cell-10' AND silo = 'eu-west-1-cell-10-silo-1' AND microservice_name = 'demeter' AND availability_zone = 'eu-west-1-3' AND measure_name = 'metrics' GROUP BY bin(time, 5m) ORDER BY 1

인스턴스 수준 통계

이 대시보드는 CPU 사용률이 높은 서버/인스턴스도 나열하는 다른 변수를 사용률 내림차순으로 정렬하여 추가로 계산합니다. 이 변수를 계산하는 데 사용되는 쿼리가 아래에 표시됩니다.

WITH microservice_cell_avg AS ( SELECT AVG(cpu_user) AS microservice_avg_metric FROM "raw_data"."devops" WHERE $__timeFilter AND measure_name = 'metrics' AND region = '${region}' AND cell = '${cell}' AND silo = '${silo}' AND availability_zone = '${availability_zone}' AND microservice_name = '${microservice}' ), instance_avg AS ( SELECT instance_name, AVG(cpu_user) AS instance_avg_metric FROM "raw_data"."devops" WHERE $__timeFilter AND measure_name = 'metrics' AND region = '${region}' AND cell = '${cell}' AND silo = '${silo}' AND microservice_name = '${microservice}' AND availability_zone = '${availability_zone}' GROUP BY availability_zone, instance_name ) SELECT i.instance_name FROM instance_avg i CROSS JOIN microservice_cell_avg m WHERE i.instance_avg_metric > (1 + ${utilization_threshold}) * m.microservice_avg_metric ORDER BY i.instance_avg_metric DESC

이전 쿼리에서 변수는 다른 변수에 대해 선택한 값에 따라 동적으로 다시 계산됩니다. 배포에 대해 변수가 채워지면 목록에서 개별 인스턴스를 선택하여 해당 인스턴스의 지표를 추가로 시각화할 수 있습니다. 아래 스냅샷과 같이 인스턴스 이름의 드롭다운에서 다른 인스턴스를 선택할 수 있습니다.

List of Amazon Web Services (AWS) resource identifiers for Demeter instances in eu-west-1 region.
Dashboard showing CPU utilization, memory usage, GC pause events, and disk I/O metrics for an AWS instance.

앞의 패널에는 선택한 인스턴스의 통계가 표시되며, 이러한 통계를 가져오는 데 사용되는 쿼리는 다음과 같습니다.

SELECT BIN(time, 30m) AS time_bin, AVG(cpu_user) AS avg_cpu, ROUND(APPROX_PERCENTILE(cpu_user, 0.99), 2) as p99_cpu FROM "raw_data"."devops" WHERE time BETWEEN from_milliseconds(1636527099477) AND from_milliseconds(1636613499477) AND measure_name = 'metrics' AND region = 'eu-west-1' AND cell = 'eu-west-1-cell-10' AND silo = 'eu-west-1-cell-10-silo-1' AND availability_zone = 'eu-west-1-3' AND microservice_name = 'demeter' AND instance_name = 'i-zaZswmJk-demeter-eu-west-1-cell-10-silo-1-00000272.amazonaws.com' GROUP BY BIN(time, 30m) ORDER BY time_bin desc
SELECT BIN(time, 30m) AS time_bin, AVG(memory_used) AS avg_memory, ROUND(APPROX_PERCENTILE(memory_used, 0.99), 2) as p99_memory FROM "raw_data"."devops" WHERE time BETWEEN from_milliseconds(1636527099477) AND from_milliseconds(1636613499477) AND measure_name = 'metrics' AND region = 'eu-west-1' AND cell = 'eu-west-1-cell-10' AND silo = 'eu-west-1-cell-10-silo-1' AND availability_zone = 'eu-west-1-3' AND microservice_name = 'demeter' AND instance_name = 'i-zaZswmJk-demeter-eu-west-1-cell-10-silo-1-00000272.amazonaws.com' GROUP BY BIN(time, 30m) ORDER BY time_bin desc
SELECT COUNT(gc_pause) FROM "raw_data"."devops" WHERE time BETWEEN from_milliseconds(1636527099477) AND from_milliseconds(1636613499478) AND measure_name = 'events' AND region = 'eu-west-1' AND cell = 'eu-west-1-cell-10' AND silo = 'eu-west-1-cell-10-silo-1' AND availability_zone = 'eu-west-1-3' AND microservice_name = 'demeter' AND instance_name = 'i-zaZswmJk-demeter-eu-west-1-cell-10-silo-1-00000272.amazonaws.com'
SELECT avg(gc_pause) as avg, round(approx_percentile(gc_pause, 0.99), 2) as p99 FROM "raw_data"."devops" WHERE time BETWEEN from_milliseconds(1636527099478) AND from_milliseconds(1636613499478) AND measure_name = 'events' AND region = 'eu-west-1' AND cell = 'eu-west-1-cell-10' AND silo = 'eu-west-1-cell-10-silo-1' AND availability_zone = 'eu-west-1-3' AND microservice_name = 'demeter' AND instance_name = 'i-zaZswmJk-demeter-eu-west-1-cell-10-silo-1-00000272.amazonaws.com'
SELECT BIN(time, 30m) AS time_bin, AVG(disk_io_reads) AS avg, ROUND(APPROX_PERCENTILE(disk_io_reads, 0.99), 2) as p99 FROM "raw_data"."devops" WHERE time BETWEEN from_milliseconds(1636527099478) AND from_milliseconds(1636613499478) AND measure_name = 'metrics' AND region = 'eu-west-1' AND cell = 'eu-west-1-cell-10' AND silo = 'eu-west-1-cell-10-silo-1' AND availability_zone = 'eu-west-1-3' AND microservice_name = 'demeter' AND instance_name = 'i-zaZswmJk-demeter-eu-west-1-cell-10-silo-1-00000272.amazonaws.com' GROUP BY BIN(time, 30m) ORDER BY time_bin desc