이 참조 가이드는 Elasticsearch OpenTelemetry 통합을 통해 수집되는 모든 메트릭에 대한 포괄적인 개요를 제공하여 클러스터 상태 및 성능 모니터링에 사용할 수 있는 데이터를 이해하는 데 도움을 줍니다.
주요 지표를 한눈에 살펴보기
다음 필수 지표를 사용하여 Elasticsearch 클러스터 상태와 성능을 모니터링하세요.
지표 카테고리 | 측정하는 것 | 우선순위 |
|---|
클러스터 상태 | elasticsearch.cluster.health
- 클러스터 전체 상태(녹색/노란색/빨간색) | 🔴 중요 |
샤드 상태 | elasticsearch.cluster.shards
- 할당되지 않았거나, 재배치 중이거나, 초기화 중인 샤드 | 🔴 중요 |
노드 가용성 | elasticsearch.cluster.data_nodes
- 클러스터의 활성 데이터 노드 | 🔴 중요 |
JVM 힙 사용량 | jvm.memory.heap.utilization
- 메모리 사용률 | 🔴 중요 |
검색 성능 | elasticsearch.node.operations.time
- 쿼리 및 가져오기 지연시간 | 🟡 중요 |
리소스 사용량 | system.cpu.utilization
, system.memory.usage
- 호스트 시스템 리소스 | 🔵 모니터링 |
완전한 참조
이 통합 기능은 클러스터, 노드, JVM 및 호스트 인프라 전반에 걸쳐 50개 이상의 메트릭을 수집합니다. 자세한 사양을 보려면 아래 섹션을 펼치십시오.
미터법 | 설명 | 속성 |
|---|
elasticsearch.cluster.health
| 클러스터의 상태입니다. | — |
elasticsearch.cluster.in_flight_fetch
| 샤드 가져오기 작업이 아직 진행 중입니다. | — |
elasticsearch.cluster.nodes
| 클러스터 노드 총 개수. | — |
elasticsearch.cluster.data_nodes
| 클러스터의 데이터 노드 수입니다. | — |
elasticsearch.cluster.shards
| 클러스터에 있는 샤드의 수입니다. | — |
elasticsearch.cluster.pending_tasks
| 실행을 기다리는 클러스터 수준 작업입니다. | — |
elasticsearch.cluster.state_update.time
| 클러스터 상태 업데이트에 소요된 누적 시간. | state
(어느)
type
(계산, 컨텍스트 구성, 커밋, 완료, 마스터 적용, 공지)
|
aggregation
(기본 파편 | 총계)
aggregation
(기본 파편 | 총계)
operation
(인덱스, 삭제, 가져오기, 쿼리, 가져오기, 스크롤, 제안, 병합, 새로 고침, 플러시, 워밍업)
aggregation
(기본 파편 | 총계)
미터법 | 설명 | 속성 |
|---|
elasticsearch.index.documents
| 색인별 문서 수, 주별로 분류됨. | state
(활성 | 삭제됨)
aggregation
(기본 파편 | 총계)
|
elasticsearch.index.operations.merge.current
| 활성 세그먼트 병합 작업. | aggregation (기본 파편 | 총계) |
elasticsearch.index.operations.time
| 인덱스 수준 작업에 소요된 시간. | operation
(인덱스, 삭제, 가져오기, 쿼리, 가져오기, 스크롤, 제안, 병합, 새로 고침, 플러시, 워밍업)
aggregation
(기본 파편 | 총계)
|
elasticsearch.index.shards.size
| 이 인덱스에 할당된 샤드의 크기입니다. |
elasticsearch.index.segments.count
| 인덱스의 세그먼트 수. |
elasticsearch.index.operations.completed
| 인덱스에 대해 완료된 작업 수입니다. |
미터법 | 설명 | 속성 |
|---|
elasticsearch.node.cache.count
| 쿼리 캐시 히트 및 노드 샤드 전반에 걸친 누락. | type (맞음 | 놓침) |
elasticsearch.node.cache.evictions
| 노드 캐시 제거. | cache_name (필드 데이터 | 쿼리) |
elasticsearch.node.cache.memory.usage
| 캐시 메모리 사용량(바이트). | cache_name (필드 데이터 | 쿼리) |
elasticsearch.node.cluster.io
| 내부 클러스터 네트워크 I/O(바이트 단위). | direction (수신됨 | 발송됨) |
elasticsearch.node.documents
| 노드에서 호스팅되는 문서입니다. | state (활성 | 삭제됨) |
elasticsearch.node.disk.io.read
| 파일 저장소별 디스크 읽기 처리량(KiB). | — |
elasticsearch.node.disk.io.write
| 파일 저장소별 디스크 쓰기 처리량(KiB). | — |
elasticsearch.node.fs.disk.available
| JVM에서 사용 가능한 디스크 공간입니다. | — |
elasticsearch.node.fs.disk.total
| 노드의 총 디스크 용량입니다. | — |
elasticsearch.node.http.connections
| 해당 노드에서 처리하는 HTTP 연결입니다. | — |
elasticsearch.node.ingest.documents.current
| 현재 문서가 수집 중입니다. | — |
elasticsearch.node.ingest.operations.failed
| 누적된 데이터 수집 실패. | — |
elasticsearch.node.open_files
| 열려 있는 파일 디스크립터가 사용 중입니다. | — |
elasticsearch.node.operations.completed
| 노드에서 완료된 작업입니다. | operation (인덱스, 삭제, 가져오기, 쿼리, 가져오기, 스크롤, 제안, 병합, 새로 고침, 플러시, 워밍업) |
elasticsearch.node.operations.current
| 현재 작업이 진행 중입니다. | operation (동일한 세트) |
elasticsearch.node.operations.get.completed
| 성공과 실패를 GET . | result (맞음 | 놓침) |
elasticsearch.node.operations.time
| 노드가 작업에 소요한 시간 | Operation (인덱스 | 삭제 | 가져오기 | 쿼리 | 가져오기 | 스크롤 | 제안 | 병합 | 새로 고침 | 플러시 | 워밍업) |
elasticsearch.node.shards.reserved.size
| 회복으로 인한 파편 증가 예측. | — |
elasticsearch.node.shards.size
| 이 노드에 할당된 샤드의 크기입니다. | — |
미터법 | 설명 | 속성 |
|---|
elasticsearch.os.cpu.load_avg.1m
| 1분 평균 OS 부하. | — |
elasticsearch.os.cpu.load_avg.5m
| 5분 평균 OS 부하율. | — |
elasticsearch.os.cpu.load_avg.15m
| 15분간의 운영체제 부하 평균. | — |
elasticsearch.os.cpu.usage
| 전체 시스템의 최근 CPU 사용량입니다. 지원되지 않는 경우 -1이 표시됩니다. | |
elasticsearch.os.memory
| Elasticsearch에서 확인한 물리적 메모리 사용량. | state (무료 | 중고) |
jvm.gc.collections.count
| 전체 가비지 컬렉션 실행 횟수. | name (수집기 이름) |
jvm.gc.collections.elapsed
| 쓰레기 수거에 소요되는 시간. | name (수집기 이름) |
jvm.memory.heap.max
| 사용 가능한 최대 힙 메모리입니다. | — |
jvm.memory.heap.used
| 현재 사용 중인 힙 메모리입니다. | — |
jvm.memory.heap.utilization
| 힙 메모리 사용량 비율. | — |
jvm.threads.count
| 활성 JVM 스레드 수. | — |
미터법 | 설명 | 속성 |
|---|
system.cpu.time
| 상태별 누적 CPU 시간. | cpu
(논리 CPU)
state
(유휴| 인터럽트| 좋은| 소프트 인터럽트| 스틸| 시스템| 사용자| 대기)
|
system.cpu.utilization
| 논리 CPU별 마지막 측정 이후 system.cpu.time의 차이를 경과 시간으로 나눈 값(값 범위는 [0,1]). | cpu
(논리 CPU)
state
(위와 동일한 세트)
|
system.cpu.load_average.1m
| 1분 시스템 부하 평균. | — |
system.cpu.load_average.5m
| 5분 시스템 부하 평균. | — |
system.cpu.load_average.15m
| 15분 시스템 부하 평균. | — |
system.memory.utilization
| 메모리 사용률. | state (사용된) |
system.memory.usage
| 사용 중인 메모리 바이트 수... | state (버퍼링됨 | 캐시됨 | 비활성 | 사용 가능 | 슬랩 회수 가능 | 슬랩 회수 불가능 | 사용됨) |
system.disk.io
| 장치별 디스크 I/O 처리량. | device
(디스크)
direction
(읽기 | 쓰기)
|
system.disk.operations
| 장치별 디스크 작업 수. | device
direction
(읽기 | 쓰기)
|
system.filesystem.usage
| 파일 시스템 용량(상태별). | device
state
(사용됨 | 사용 가능 | 예약됨)
|
system.filesystem.utilization
| 파일 시스템 사용률. | device
state
(사용됨)
|
system.network.io
| 인터페이스당 네트워크 바이트 수. | interface
direction
(수신 | 송신)
|
system.network.packets
| 인터페이스별 네트워크 패킷 수. | interface
direction
(수신 | 송신)
|
process.cpu.utilization
| 마지막 스크래핑 이후 프로세스가 사용한 총 CPU 시간의 백분율로, 0에서 1 사이의 값으로 표시됩니다. | process.pid
(PID)
process.executable.name
(이진 이름)
process.owner
(사용자)
state
(사용자 | 시스템 | 기타)
|
구현, 배포 유형별 리소스 속성
모든 Elasticsearch 지표에는 뉴렐릭에서 데이터를 구성하고 필터링하는 데 도움이 되는 리소스 속성(태그)이 포함되어 있습니다. 구체적인 속성은 구현하다, 배포하다 Elasticsearch 방법에 따라 다릅니다.
공통 속성(모든 구현, 배포)
모든 구현, 배포에는 다음과 같은 핵심 Elasticsearch 제외가 포함됩니다.
기인하다 | 설명 |
|---|
elasticsearch.cluster.name
| Elasticsearch 클러스터의 고유 이름 |
elasticsearch.node.name
| 개별 Elasticsearch 노드 식별자 |
호스트 기반 구현, 배포
호스트 또는 VM에서 직접 실행되는 Elasticsearch의 경우 추가적인 호스트 인프라 속성이 표시됩니다.
기인하다 | 설명 |
|---|
host.name
| Elasticsearch 가 실행되는 호스트명 |
os.type
| 운영 시스템(리눅스, 윈도우, 다윈) |
Kubernetes 구현, 배포
Kubernetes 구현에는 향상된 가시성을 위한 추가 컨테이너 오케스트레이션 속성이 포함됩니다.
기인하다 | 설명 |
|---|
k8s.cluster.name
| 귀하의 쿠버네티스 클러스터 이름 |
k8s.namespace.name
| Elasticsearch가 실행되는 네임스페이스 |
k8s.pod.name
| 특정 Elasticsearch 파드 이름 |
k8s.pod.uid
| 파드만의 독특한 배제 |
k8s.deployment.name
| Kubernetes 구현, 배포 이름(구성을 사용하는 경우 배포) |
리소스 속성을 효과적으로 사용하기
이러한 속성 덕분에 강력한 모니터링 시나리오를 구현할 수 있습니다.
다중 환경 관리:
- 프로덕션 환경과 스테이징 환경을 구분하기 위해 대시보드를
elasticsearch.cluster.name 으로 필터링합니다. - 클러스터별 공지사항 생성
- 다양한 환경에서의 성능 비교
인프라 상관관계:
- 인프라 모니터링과 연관시키려면
host.name 또는 k8s.pod.name 사용하십시오. - 호스트 또는 파드 수준에서 리소스 사용률을 추적합니다.
- 인프라 전반의 성능 패턴을 파악하세요
Kubernetes 관련 모니터링:
- 여러 네임스페이스에 걸쳐 Elasticsearch를 모니터링합니다.
- Pad 수명주기 이벤트 및 성능 영향 추적
- Kubernetes 구현, 배포 상태를 기반으로 알림 생성
다음 단계
이제 사용 가능한 메트릭을 이해했으므로 효과적인 Elasticsearch 모니터링을 위한 다음 단계를 살펴보겠습니다.
설치 및 설정:
- 호스트 설치 - 호스트/VM에서 실행 중인 Elasticsearch에 대한 모니터링 설정
- Kubernetes 설치 - Kubernetes에서 실행되는 Elasticsearch에 대한 모니터링 구성
모니터링 및 알림 설정:
- 데이터 보기 - 대시보드에 액세스하는 방법을 알아보고 뉴렐릭에서 Elasticsearch 지표를 탐색하세요.
- 알림 생성 - 안내 모드 또는 NRQL 사용하여 사전 모니터링 설정
- NRQL 쿼리 - Elasticsearch 성능 데이터를 분석하기 위한 사용자 지정 쿼리를 작성하세요.