Amazon Managed Service for Prometheus에서 쿼리 비용 관리
Amazon Managed Service for Prometheus는 단일 쿼리에서 사용할 수 있는 처리된 쿼리 샘플(QSP) 수에 제한을 설정하여 쿼리 비용을 제한하는 기능을 제공합니다. QSP에 대해 경고 및 오류라는 두 가지 유형의 임계값을 구성하여 쿼리 비용을 효과적으로 관리하고 제어할 수 있습니다.
쿼리가 경고 임계값에 도달하면 API 쿼리 응답에 경고 메시지가 나타납니다. Amazon Managed Grafana를 통해 조회된 쿼리의 경우, Amazon Managed Grafana UI에 경고가 표시되므로 사용자가 비용이 많이 드는 쿼리를 식별하는 데 도움이 됩니다. 오류 임계값에 도달한 쿼리는 요금이 부과되지 않으며 오류와 함께 거부됩니다.
Amazon Managed Service for Prometheus는 쿼리 스로틀링 외에도 쿼리 성능 데이터를 CloudWatch Logs에 로깅하는 기능을 제공합니다. 이 기능을 통해 쿼리를 상세하게 분석할 수 있어 Amazon Managed Service for Prometheus 쿼리를 최적화하고 비용을 보다 효과적으로 관리하는 데 도움이 됩니다. 쿼리 로깅은 지정된 쿼리 샘플 처리량(QSP) 임계값을 초과하는 쿼리에 대한 정보를 캡처합니다. 이 데이터는 CloudWatch Logs에 게시되므로 쿼리 성능을 조사하고 분석할 수 있습니다. 로깅되는 쿼리에는 API 쿼리와 규칙 쿼리가 모두 포함됩니다. 불필요한 CloudWatch Logs 사용을 최소화하기 위해 기본적으로 쿼리 로깅은 비활성화되어 있습니다. 쿼리 분석에 필요한 경우 이 기능을 활성화할 수 있습니다.
쿼리 로깅 구성
Amazon Managed Service for Prometheus 콘솔 또는 AWS CLI에서 create-query-logging-configuration API 요청을 호출하여 쿼리 로깅을 구성할 수 있습니다. 이 API 본문에 대상 목록이 포함되어 있지만, 현재는 CloudWatch Logs만 대상으로 지원되며 대상에는 CloudWatch 구성을 사용하는 요소가 정확히 하나만 포함되어야 합니다.
사전 조건
logGroup이 이미 생성되어 있는지 확인합니다. 구성에 사용되는 ID 또는 역할은 다음 정책 또는 이에 상응하는 권한을 보유하고 있어야 합니다.
CloudWatch Logs 구성
AWS Management 콘솔 또는 AWS CLI를 통해 Amazon Managed Service for Prometheus에 로그인하여 CloudWatch Logs를 구성할 수 있습니다.
Amazon Managed Service for Prometheus 콘솔에서 쿼리 로깅을 구성하려면
-
워크스페이스 세부 정보 패널의 로그 탭으로 이동합니다.
-
쿼리 인사이트에서 생성을 선택합니다.
-
로그 그룹 드롭다운을 선택하고 로그를 게시할 로그 그룹을 선택합니다.
CloudWatch 콘솔에서 새 로그 그룹을 생성할 수도 있습니다.
-
임계값(QSP)을 입력합니다.
-
저장을 선택합니다.
AWS CLI를 사용하여 쿼리 로깅을 구성하려면 다음 명령을 사용합니다.
aws amp create-query-logging-configuration \ --workspace-idmy_workspace_ID\ --destinations '[{"cloudWatchLogs":{"logGroupArn":"$my-log-group-arn"},"filters":{"qspThreshold":$qspThreshold}}]'
작업 업데이트, 삭제 및 설명 방법에 대한 정보는 Amazon Managed Service for Prometheus API 참조를 참조하세요.
쿼리 스로틀링 임계값 구성
QSP 임계값을 구성하려면 QueryMetrics API에 쿼리 파라미터를 제공해야 합니다.
-
max_samples_processed_warning_threshold – 처리된 쿼리 샘플에 대해 경고 임계값을 설정합니다.
-
max_samples_processed_error_threshold – 처리된 쿼리 샘플에 대해 오류 임계값을 설정합니다.
Amazon Managed Grafana 사용자의 경우 grafana 데이터 소스 구성을 사용하여 데이터 소스의 모든 쿼리에 제한을 적용할 수 있습니다.
-
Amazon Managed Grafana에서 Amazon Managed Service for Prometheus 데이터 소스 구성으로 이동합니다.
-
사용자 지정 쿼리 파라미터에서 임계값 헤더를 추가합니다.
-
저장을 선택합니다.
로그 내용
규칙에서 발생한 쿼리의 경우, CloudWatch Log에서 해당 쿼리에 대한 다음 정보를 확인할 수 있습니다.
{ workspaceId: "workspace_id", message: { query: "avg(rate(go_goroutines[1m])) > 1", name: "alert_rule", kind: "alerting", group: "test-alert", namespace: "test", samples: "59321", }, component: "ruler" }
API 직접 호출에서 발생한 쿼리의 경우, CloudWatch Log에서 해당 쿼리에 대한 다음 정보를 확인할 수 있습니다.
{ workspaceId: "ws-5e7658c2-7ccf-4c30-9de9-2ab26fa30639", message: { query: "sum by (instance) (go_memstats_alloc_bytes{job=\"node\"})", queryType: "range", start: "1683308700000", end: "1683913500000", step: "300000", samples: "11496", userAgent: "AWSPrometheusDPJavaClient/2.0.436.0 ", dashboardUid: "11234", panelId: "12" }, component: "query-frontend" }
제한 사항
정책 크기 제한 – CloudWatch Logs 리소스 정책은 5,120자로 제한됩니다. CloudWatch Logs에서 정책이 이 크기 제한에 도달하는 것을 감지하면 /aws/vendedlogs/로 시작하는 로그 그룹을 자동으로 활성화합니다. 쿼리 로깅을 활성화할 때 Amazon Managed Service for Prometheus는 지정된 로그 그룹으로 CloudWatch Logs 리소스 정책을 업데이트해야 합니다. CloudWatch Logs 리소스 정책 크기 한도에 도달하지 않도록 CloudWatch Logs 로그 그룹 이름에 접두사 /aws/vendedlogs/를 추가합니다.