콘텐츠로 이동

AWS OpenSearch

AWS OpenSearch, 연결 수, 요청 수, 지연 시간, 느린 쿼리 등을 포함합니다.

설정

Func 설치

Guance 통합 - 확장 - 관리형 Func 개통을 권장합니다: 모든 사전 조건이 자동으로 설치되므로, 스크립트 설치를 계속 진행하세요

Func를 직접 배포하는 경우 Func 직접 배포를 참고하세요

설치 스크립트

안내: 요구 사항을 충족하는 Amazon AK를 미리 준비하세요. (간단히 하려면 전역 읽기 전용 권한 ReadOnlyAccess를 직접 부여해도 됩니다)

관리형 개통 스크립트

  1. Guance 콘솔에 로그인합니다.
  2. [통합] 메뉴를 클릭하고 [클라우드 계정 관리]를 선택합니다.
  3. [클라우드 계정 추가]를 클릭하고 [AWS]를 선택한 뒤, 화면에 필요한 정보를 입력합니다. 이전에 클라우드 계정 정보를 이미 구성했다면 이 단계는 건너뜁니다.
  4. [테스트]를 클릭합니다. 테스트가 성공하면 [저장]을 클릭합니다. 테스트가 실패하면 관련 구성 정보를 확인한 뒤 다시 테스트합니다.
  5. [클라우드 계정 관리] 목록에서 추가한 클라우드 계정을 확인할 수 있습니다. 해당 클라우드 계정을 클릭해 상세 페이지로 들어갑니다.
  6. 클라우드 계정 상세 페이지의 [통합] 버튼을 클릭하고 미설치 목록에서 AWS OpenSearch를 찾아 [설치] 버튼을 클릭하면 설치 화면이 나타납니다. 설치를 진행하면 됩니다.

수동 개통 스크립트

  1. Func 콘솔에 로그인하고 [스크립트 마켓]을 클릭한 뒤 Guance 스크립트 마켓으로 들어가 integration_aws_open_search를 검색합니다.

  2. [설치]를 클릭한 다음 AWS AK ID, AK Secret 및 계정명을 입력합니다.

  3. [배포 시작 스크립트]를 클릭하면 시스템이 자동으로 Startup 스크립트 세트를 생성하고, 해당 시작 스크립트를 자동으로 구성합니다.

  4. 활성화 후에는 「관리 / 자동 트리거 구성」에서 해당 자동 트리거 구성을 볼 수 있습니다. [실행]을 클릭하면 정기 실행을 기다리지 않고 즉시 한 번 실행할 수 있습니다. 잠시 후 실행 작업 기록과 해당 로그를 확인할 수 있습니다.

검증

  1. 「관리 / 자동 트리거 구성」에서 해당 작업의 자동 트리거 구성이 존재하는지 확인하고, 작업 기록과 로그를 확인해 이상이 없는지 검사합니다.
  2. Guance의 「인프라 / 사용자 정의」에서 자산 정보가 있는지 확인합니다.
  3. Guance의 「지표」에서 해당 모니터링 데이터가 있는지 확인합니다.

지표

AWS OpenSearch를 구성하면 기본 지표 집합은 다음과 같습니다. 구성 방식으로 더 많은 지표를 수집할 수 있습니다. AWS 클라우드 모니터링 지표 상세

클러스터 지표

Amazon OpenSearch Service는 클러스터에 다음 지표를 제공합니다.

지표 설명
ClusterStatus.green 값이 1이면 모든 인덱스 샤드가 클러스터의 노드에 할당되었음을 나타냅니다. 관련 통계: 최대값
ClusterStatus.yellow 값이 1이면 모든 인덱스의 기본 샤드가 클러스터의 노드에 할당되었지만, 적어도 하나의 인덱스에서 복제 샤드가 그렇지 않음을 나타냅니다. 자세한 내용은 노란색 클러스터 상태를 참조하세요. 관련 통계: 최대값
ClusterStatus.red 값이 1이면 적어도 하나의 인덱스에서 기본 샤드와 복제 샤드가 클러스터의 노드에 할당되지 않았음을 나타냅니다. 자세한 내용은 빨간색 클러스터 상태를 참조하세요. 관련 통계: 최대값
Shards.active 활성 기본 샤드와 복제 샤드의 총 수입니다. 관련 통계: 최대값, 합계
Shards.unassigned 클러스터의 노드에 할당되지 않은 샤드 수입니다. 관련 통계: 최대값, 합계
Shards.delayedUnassigned 노드 할당이 타임아웃 설정으로 인해 지연된 샤드 수입니다. 관련 통계: 최대값, 합계
Shards.activePrimary 활성 기본 샤드 수입니다. 관련 통계: 최대값, 합계
Shards.initializing 초기화 중인 샤드 수입니다. 관련 통계: 합계
Shards.relocating 재배치 중인 샤드 수입니다. 관련 통계: 합계
Nodes OpenSearch 서비스 클러스터의 노드 수입니다. 전용 마스터 UltraWarm 노드와 노드를 포함합니다. 자세한 내용은 Amazon OpenSearch Service에서 구성 변경을 참조하세요. 관련 통계: 최대값
SearchableDocuments 클러스터의 모든 데이터 노드에 걸친 검색 가능한 문서의 총 수입니다. 관련 통계: 최솟값, 최댓값, 평균
CPUUtilization 클러스터 데이터 노드의 CPU 사용률입니다. 최대값은 CPU 사용률이 가장 높은 노드를 나타냅니다. 평균값은 클러스터의 모든 노드를 나타냅니다. 이 지표는 개별 노드에도 사용할 수 있습니다. 관련 통계: 최대값, 평균
ClusterUsedSpace 클러스터의 총 사용 공간입니다. 정확한 값을 얻으려면 1분을 기다려야 합니다. OpenSearch Service 콘솔은 이 값을 GiB 단위로 표시합니다. Amazon CloudWatch 콘솔은 MiB로 표시합니다. 관련 통계: 최솟값, 최대값
ClusterIndexWritesBlocked 클러스터가 들어오는 쓰기 요청을 허용하는지 차단하는지를 나타냅니다. 값이 0이면 클러스터가 요청을 허용한다는 뜻입니다. 값이 1이면 요청을 차단한다는 뜻입니다. 일반적인 원인으로는 FreeStorageSpace가 너무 낮거나 JVMMemoryPressure가 너무 높은 경우가 있습니다. 이를 완화하려면 디스크 공간을 늘리거나 클러스터를 확장하는 것을 고려하세요. 관련 통계: 최대값
FreeStorageSpace 클러스터의 각 데이터 노드에서 사용 가능한 공간입니다. Sum은 클러스터의 총 가용 공간을 표시하지만, 정확한 값을 얻으려면 1분을 기다려야 합니다. Minimum과 Maximum은 각각 최소 및 최대 가용 공간을 가진 노드를 표시합니다. 이 지표는 개별 노드에도 사용할 수 있습니다. 이 지표가 0에 도달하면 OpenSearchClusterBlockException이 발생합니다. 복구하려면 인덱스를 삭제하거나, 더 큰 인스턴스를 추가하거나, 기존 인스턴스에 EBS 기반 스토리지를 추가해야 합니다. 자세한 내용은 사용 가능한 스토리지 공간 부족을 참조하세요. OpenSearch Service 콘솔은 이 값을 GiB 단위로 표시합니다. Amazon CloudWatch 콘솔은 MiB로 표시합니다.
JVMMemoryPressure 클러스터의 모든 데이터 노드에서 Java 힙이 사용하는 최대 비율입니다. OpenSearch Service는 인스턴스 RAM의 절반을 Java 힙에 사용하며, 최대 힙 크기는 32 GiB입니다. 인스턴스 RAM은 최대 64 GiB까지 수직 확장할 수 있으며, 이후에는 인스턴스를 추가해 수평 확장할 수 있습니다. Amazon OpenSearch Service용 권장 CloudWatch 알람을 참조하세요. 관련 통계: 최대값 서비스 소프트웨어 R20220323에서 이 지표의 로직이 변경되었습니다. 자세한 내용은 릴리스 노트를 참조하세요.
JVMGCYoungCollectionCount “young generation” 가비지 컬렉션 실행 횟수입니다. 리소스가 충분한 클러스터에서는 이 값이 작게 유지되어야 하며 자주 증가하지 않아야 합니다. 관련 노드 통계: 최대값 관련 클러스터 통계: 합계, 최대값, 평균
JVMGCOldCollectionTime 클러스터가 “old generation” 가비지 컬렉션에 사용한 시간(밀리초)입니다. 관련 노드 통계: 최대값 관련 클러스터 통계: 합계, 최대값, 평균
JVMGCYoungCollectionTime 클러스터가 “young generation” 가비지 컬렉션에 사용한 시간(밀리초)입니다. 관련 노드 통계: 최대값 관련 클러스터 통계: 합계, 최대값, 평균
JVMGCOldCollectionCount “old generation” 가비지 컬렉션 실행 횟수입니다. 지속적으로 증가하는 많은 실행 횟수는 클러스터 운영에서 정상일 수 있습니다. 이 지표는 노드 수준에서도 수집됩니다. 관련 노드 통계: 최대값 관련 클러스터 통계: 합계, 최대값, 평균
IndexingLatency 노드의 모든 인덱싱 작업이 분 N과 분 (N-1) 사이에 사용한 총 시간(밀리초)의 차이입니다.
IndexingRate 분당 인덱싱 작업 수입니다.
SearchLatency 노드의 모든 검색이 분 N과 분 (N-1) 사이에 사용한 총 시간(밀리초)의 차이입니다.
SearchRate 데이터 노드의 모든 샤드에서 분당 검색 요청 총 수입니다.
SegmentCount 데이터 노드의 세그먼트 수입니다. 세그먼트가 많을수록 각 검색에 더 많은 시간이 걸립니다. OpenSearch는 때때로 더 작은 세그먼트를 더 큰 세그먼트로 병합합니다. 관련 노드 통계: 최대값, 평균 관련 클러스터 통계: 합계, 최대값, 평균
SysMemoryUtilization 사용 중인 인스턴스 메모리 비율입니다. 이 지표 값이 높은 것은 정상이며, 일반적으로 클러스터 문제를 의미하지 않습니다. 잠재적인 성능 및 안정성 문제를 더 잘 나타내는 지표는 JVMMemoryPressure를 참조하세요. 관련 노드 통계: 최솟값, 최대값, 평균 관련 클러스터 통계: 최솟값, 최대값, 평균
OpenSearchDashboardsConcurrentConnections OpenSearch Dashboards의 활성 동시 연결 수입니다. 이 수치가 계속 높다면 클러스터 확장을 고려하세요. 관련 노드 통계: 최대값 관련 클러스터 통계: 합계, 최대값, 평균
OpenSearchDashboardsHeapTotal MiB 단위로 OpenSearch Dashboards에 할당된 힙 메모리 양입니다. 서로 다른 EC2 인스턴스 유형은 정확한 메모리 할당에 영향을 줄 수 있습니다. 관련 노드 통계: 최대값 관련 클러스터 통계: 합계, 최대값, 평균
OpenSearchDashboardsHeapUsed MiB 단위의 OpenSearch Dashboards 사용 중 힙 메모리의 절대량입니다. 관련 노드 통계: 최대값 관련 클러스터 통계: 합계, 최대값, 평균
OpenSearchDashboardsHeapUtilization OpenSearch Dashboards가 사용하는 사용 가능한 최대 힙 메모리 비율입니다. 이 값이 80%를 초과하면 클러스터 확장을 고려하세요. 관련 노드 통계: 최대값 관련 클러스터 통계: 최솟값, 최대값, 평균
OpenSearchDashboardsResponseTimesMaxInMillis OpenSearch Dashboards가 요청에 응답하는 데 걸리는 최대 시간(밀리초)입니다. 요청이 결과를 반환하는 데 계속 오래 걸리면 인스턴스 유형 크기를 늘리는 것을 고려하세요. 관련 노드 통계: 최대값 관련 클러스터 통계: 최대값, 평균
OpenSearchDashboardsOS1MinuteLoad OpenSearch Dashboards의 1분 CPU 평균 부하입니다. 이상적으로는 CPU 부하가 1.00 미만이어야 합니다. 일시적 피크는 괜찮지만, 이 지표가 지속적으로 1.00보다 높으면 인스턴스 유형 크기를 늘리기를 권장합니다. 관련 노드 통계: 평균 관련 클러스터 통계: 평균, 최대값
OpenSearchDashboardsRequestTotal OpenSearch Dashboards로 보낸 HTTP 요청 총 수입니다. 시스템 속도가 느리거나 대시보드 요청이 많이 보이면 인스턴스 유형 크기를 늘리는 것을 고려하세요. 관련 노드 통계: 합계 관련 클러스터 통계: 합계
ThreadpoolForce_mergeQueue force merge 스레드 풀에서 대기 중인 작업 수입니다. 큐 크기가 계속 크다면 클러스터 확장을 고려하세요. 관련 노드 통계: 최대값 관련 클러스터 통계: 합계, 최대값, 평균
ThreadpoolForce_mergeRejected force merge 스레드 풀에서 거부된 작업 수입니다. 이 수치가 지속적으로 증가하면 클러스터 확장을 고려하세요. 관련 노드 통계: 최대값 관련 클러스터 통계: 합계
ThreadpoolForce_mergeThreads force merge 스레드 풀의 크기입니다. 관련 노드 통계: 최대값 관련 클러스터 통계: 평균, 합계
ThreadpoolSearchQueue 검색 스레드 풀에서 대기 중인 작업 수입니다. 큐 크기가 계속 크다면 클러스터 확장을 고려하세요. 검색 큐의 최대 크기는 1000입니다. 관련 노드 통계: 최대값 관련 클러스터 통계: 평균, 합계
ThreadpoolSearchRejected 검색 스레드 풀에서 거부된 작업 수입니다. 이 수치가 지속적으로 증가하면 클러스터 확장을 고려하세요. 관련 노드 통계: 최대값 관련 클러스터 통계: 합계
ThreadpoolSearchThreads 검색 스레드 풀의 크기입니다. 관련 노드 통계: 최대값 관련 클러스터 통계: 평균, 합계
Threadpoolsql-workerQueue SQL 검색 스레드 풀에서 대기 중인 작업 수입니다. 큐 크기가 계속 크다면 클러스터 확장을 고려하세요. 관련 노드 통계: 최대값 관련 클러스터 통계: 합계, 최대값, 평균
Threadpoolsql-workerRejected SQL 검색 스레드 풀에서 거부된 작업 수입니다. 이 수치가 지속적으로 증가하면 클러스터 확장을 고려하세요. 관련 노드 통계: 최대값 관련 클러스터 통계: 합계
Threadpoolsql-workerThreads SQL 검색 스레드 풀의 크기입니다. 관련 노드 통계: 최대값 관련 클러스터 통계: 평균, 합계
ThreadpoolWriteQueue 쓰기 스레드 풀에서 대기 중인 작업 수입니다. 관련 노드 통계: 최대값 관련 클러스터 통계: 평균, 합계
ThreadpoolWriteRejected 쓰기 스레드 풀에서 거부된 작업 수입니다. 관련 노드 통계: 최대값 관련 클러스터 통계: 평균, 합계
ThreadpoolWriteThreads 쓰기 스레드 풀의 크기입니다. 관련 노드 통계: 최대값 관련 클러스터 통계: 평균, 합계
CoordinatingWriteRejected 마지막 OpenSearch 서비스 프로세스 시작 이후 인덱싱 압력으로 인해 조정 노드에서 발생한 거부 총 수입니다. 관련 노드 통계: 최대값 관련 클러스터 통계: 평균, 합계 이 지표는 버전 7.1 이상에서 사용할 수 있습니다.
ReplicaWriteRejected 마지막 OpenSearch 서비스 프로세스 시작 이후 인덱싱 압력으로 인해 복제 샤드에서 발생한 거부 총 수입니다. 관련 노드 통계: 최대값 관련 클러스터 통계: 평균, 합계 이 지표는 버전 7.1 이상에서 사용할 수 있습니다.
PrimaryWriteRejected 마지막 OpenSearch 서비스 프로세스 시작 이후 인덱싱 압력으로 인해 기본 샤드에서 발생한 거부 총 수입니다. 관련 노드 통계: 최대값 관련 클러스터 통계: 평균, 합계 이 지표는 버전 7.1 이상에서 사용할 수 있습니다.
ReadLatency EBS 볼륨의 읽기 작업 지연 시간(초)입니다. 이 지표는 개별 노드에도 사용할 수 있습니다. 관련 통계: 최솟값, 최댓값, 평균
ReadThroughput EBS 볼륨의 읽기 작업 처리량(바이트/초)입니다. 이 지표는 개별 노드에도 사용할 수 있습니다. 관련 통계: 최솟값, 최댓값, 평균
ReadIOPS EBS 볼륨의 읽기 작업에 대한 초당 입출력(I/O) 작업 수입니다. 이 지표는 개별 노드에도 사용할 수 있습니다. 관련 통계: 최솟값, 최댓값, 평균
WriteIOPS EBS 볼륨의 쓰기 작업에 대한 초당 입출력(I/O) 작업 수입니다. 이 지표는 개별 노드에도 사용할 수 있습니다. 관련 통계: 최솟값, 최댓값, 평균
WriteLatency EBS 볼륨의 쓰기 작업 지연 시간(초)입니다. 이 지표는 개별 노드에도 사용할 수 있습니다. 관련 통계: 최솟값, 최댓값, 평균
BurstBalance EBS 볼륨의 burst 버킷에 남아 있는 입출력(I/O) 크레딧의 비율입니다. 값이 100이면 해당 볼륨이 누적할 수 있는 크레딧의 최대치에 도달했음을 의미합니다. 이 비율이 70% 미만이면 EBS burst balance가 낮음을 참조하세요. gp3 볼륨 유형의 도메인과 볼륨 크기가 1000 GiB를 초과하는 gp2 볼륨의 도메인에서는 burst balance가 0으로 유지됩니다. 관련 통계: 최솟값, 최댓값, 평균
CurrentPointInTime 노드에서 활성 PIT 검색 컨텍스트의 수입니다.
TotalPointInTime 노드 시작 이후 만료된 PIT 검색 컨텍스트의 수입니다.
HasActivePointInTime 값이 1이면 노드 시작 이후 노드에 활성 PIT 컨텍스트가 있음을 나타냅니다. 값이 0이면 없습니다.
HasUsedPointInTime 값이 1이면 노드 시작 이후 노드에 만료된 PIT 컨텍스트가 있었음을 나타냅니다. 값이 0이면 없습니다.
AsynchronousSearchInitializedRate 지난 1분 동안 초기화된 비동기 검색 수입니다.
AsynchronousSearchRunningCurrent 현재 실행 중인 비동기 검색 수입니다.
AsynchronousSearchCompletionRate 지난 1분 동안 성공적으로 완료된 비동기 검색 수입니다.
AsynchronousSearchFailureRate 마지막 1분 동안 완료 및 실패한 비동기 검색 수입니다.
AsynchronousSearchPersistRate 지난 1분 동안 유지된 비동기 검색 수입니다.
AsynchronousSearchRejected 노드 시작 이후 거부된 비동기 검색 총 수입니다.
AsynchronousSearchCancelled 노드 시작 이후 취소된 비동기 검색 총 수입니다.
SQLRequestCount _SQL API에 대한 요청 수입니다. 관련 통계: 합계
SQLUnhealthy 값이 1이면 SQL 플러그인이 특정 요청에 대해 5xx 응답 코드를 반환하거나 잘못된 쿼리 DSL을 OpenSearch로 전달해 응답함을 의미합니다. 다른 요청은 계속 성공합니다. 값이 0이면 최근 실패가 없음을 의미합니다. 값 1이 계속 보이면 클라이언트가 플러그인에 보내는 요청 문제를 조사하세요. 관련 통계: 최대값
SQLDefaultCursorRequestCount SQLRequestCount와 유사하지만 페이징 요청만 계산합니다. 관련 통계: 합계
SQLFailedRequestCountByCusErr 클라이언트 문제로 실패한 _SQL API 요청 수입니다. 예를 들어 요청이 IndexNotFoundException으로 HTTP 상태 코드 400을 반환할 수 있습니다. 관련 통계: 합계
SQLFailedRequestCountBySysErr 서버 문제 또는 기능 제한으로 실패한 _SQL API 요청 수입니다. 예를 들어 요청이 VerificationException으로 HTTP 상태 코드 503을 반환할 수 있습니다. 관련 통계: 합계
OldGenJVMMemoryPressure 클러스터의 모든 데이터 노드에서 “old generation”에 사용되는 Java 힙의 최대 비율입니다. 이 지표는 노드 수준에서도 수집됩니다. 관련 통계: 최대값
OpenSearchDashboardsHealthyNodes(이전에는 KibanaHealthyNodes로 불림) OpenSearch Dashboards의 상태 점검입니다. 최솟값, 최댓값, 평균이 모두 1이면 대시보드가 정상적으로 동작한다는 뜻입니다. 노드가 10개이고 최대값이 1, 최소값이 0, 평균값이 0.7이면 7개 노드(70%)는 정상이고 3개 노드(30%)는 상태가 좋지 않다는 의미입니다. 관련 통계: 최솟값, 최댓값, 평균
InvalidHostHeaderRequests OpenSearch 클러스터를 대상으로 한 HTTP 요청 중 잘못된(또는 누락된) Host 헤더를 포함한 요청 수입니다. 유효한 요청에는 Host 헤더 값으로 도메인 호스트 이름이 포함됩니다. OpenSearch Service는 제한적 접근 정책이 없는 공개 접근 도메인에 대한 잘못된 요청을 거부합니다. 모든 도메인에 제한적 접근 정책을 적용하는 것을 권장합니다. 이 지표 값이 크다면 OpenSearch 클라이언트가 요청에 도메인 호스트 이름을 포함하는지 확인하세요(예: IP 주소가 아닌 도메인 호스트 이름). 관련 통계: 합계
OpenSearchRequests(previously ElasticsearchRequests) OpenSearch 클러스터로 전송된 요청 수입니다. 관련 통계: 합계
2xx, 3xx, 4xx, 5xx 지정된 HTTP 응답 코드(2xx, 3xx, 4xx, 5xx)를 반환한 도메인 요청 수입니다. 관련 통계: 합계

객체

수집된 AWS OpenSearch 객체 데이터 구조입니다. 「인프라-사용자 정의」에서 객체 데이터를 확인할 수 있습니다.

{
  "measurement": "aws_opensearch",
  "tags": {
    "name"                  : "df-prd-es",
    "EngineVersion"         : "Elasticsearch_7.10",
    "DomainId"              : "5882XXXXX135/df-prd-es",
    "DomainName"            : "df-prd-es",
    "ClusterConfig"         : "{도메인의 인스턴스 유형과 인스턴스 수 JSON 데이터}",
    "ServiceSoftwareOptions": "{서비스 소프트웨어의 현재 상태 JSON 데이터}",
    "region"                : "cn-northwest-1",
    "RegionId"              : "cn-northwest-1"
  },
  "fields": {
    "EBSOptions": "{지정된 도메인의 탄력적 블록 스토리지 데이터 JSON 데이터}",
    "Endpoints" : "{인덱싱 및 검색 요청을 전송하는 도메인 엔드포인트의 매핑 JSON 데이터}",
    "message"   : "{인스턴스 JSON 데이터}"
  }
}

주의: tagsfields의 필드는 이후 업데이트에 따라 변경될 수 있습니다. 안내 1: tags.name 값은 인스턴스 ID이며, 고유 식별자로 사용됩니다. 안내 2: 이 스크립트에서 tags.name에 대응하는 데이터 필드는 DomainName입니다. 이 스크립트를 사용할 때는 여러 AWS 계정에 중복된 DomainName 값이 없어야 합니다. 안내 3: tags.ClusterConfig, tags.Endpoint, tags.ServiceSoftwareOptions, fields.message, fields.EBSOptions, fields.Endpoints는 모두 JSON 직렬화 후 문자열입니다.

문서 평가

이 페이지가 도움이 되었나요?