기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
드릴다운에 예약된 쿼리 및 원시 데이터 사용
플릿 전체에서 집계된 통계를 사용하여 드릴다운이 필요한 영역을 식별한 다음 원시 데이터를 사용하여 세분화된 데이터로 드릴다운하여 심층적인 인사이트를 얻을 수 있습니다.
이 예제에서는 집계 대시보드를 사용하여 다른 배포에 비해 CPU 사용률이 더 높은 것으로 보이는 배포(배포는 지정된 리전, 셀, 사일로 및 가용 영역 내의 특정 마이크로서비스용)를 식별하는 방법을 알아봅니다. 그런 다음 드릴다운하여 원시 데이터를 더 잘 이해할 수 있습니다. 이러한 드릴다운은 빈도가 낮고 배포와 관련된 데이터에만 액세스할 수 있으므로이 분석에 원시 데이터를 사용할 수 있으며 예약된 쿼리를 사용할 필요가 없습니다.
배포당 드릴다운
아래 대시보드는 지정된 배포 내에서 보다 세분화된 서버 수준 통계를 자세히 보여줍니다. 이 대시보드는 플릿의 여러 부분을 드릴다운할 수 있도록 리전, 셀, 사일로, 마이크로서비스, availability_zone과 같은 변수를 사용합니다. 그런 다음 해당 배포에 대한 몇 가지 집계 통계를 표시합니다.


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


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