Elastic Search 50

Ch13. 클러스터 성능 측정 - 키바나를 이용한 성능 모니터링

엘라스틱서치 6.0 이상을 설치하고 같은 버전의 키바나를 설치하면, 모니터링 기능을 활성화할 수 있다.(키바나의 Monitoring 탭)키바나에서 모니터링 기능으로 제공하는 지표는 매우 다양하며, 색인속도나, 검색 속도, GC가 일어나는 패턴, CPU, 메모리 매우 다양하다.Search Rate클러스터에서 얼마큼의 검색 요청이 있는지 실시간 차트를 볼 수 있다. 클러스터에 존재하는 프라이머리 샤드와 레플리카 샤드에서 처리 중인 검색 요청 수를 모아 초당 평균 몇 건이 처리되는지 숫자로 계산해서 보여준다.(전체 샤드에서 실행되는 초당 검색 요청 수)x축: 현재 시간을 나타낸다.y축: 초당 처리 건수를 나타낸다.Search Latency클러스터에서 다수의 검색 요청이 들어오면 순서대로 큐에 쌓이고 처리량에 ..

Elastic Search 2025.11.05

Ch13. 클러스터 성능 측정 - Rally를 이용한 클러스터 부하 테스트

Rally 설치Rally는 파이썬으로 만들어진 애플리케이션으로 정상적으로 동작하기 위해서는 파이썬 3.4 이상이 설치돼 있어야 한다.python: 3.4 이상pip: 파이썬 패키지를 설치하고 관리하는 툴git: 1.9이상JDK: 8 이상pip3 install esrallyRally를 설치한다.esrally configureRally 환경설정최초 한 번은 환경설정 필요Rally Tracks 옵션esrally list tracks트랙은 부하 테스트를 진행할 때 사용하는 데이터이다.벤치마크 사이트에서 제공하는 분석 데이터를 그대로 사용할 수도 있다.Rally는 실행할 때 부하테스트에 사용할 트랙(색인 데이터)을 선택해야 한다.트랙 조회랠리를 실행할 때 --track 옵션을 이용해 원하는 트랙 이름을 지정하면 ..

Elastic Search 2025.11.05

Ch13. 클러스터 성능 측정 - 엘라스틱서치를 위한 벤치마크 툴

루씬 벤치마킹 유틸리티루씬에는 성능 측정을 위해 Luceneutil이라는 벤치마크 유틸리티가 제공된다.(깃허브에 소스코드 공개)https://github.com/mikemccand/luceneutil GitHub - mikemccand/luceneutil: Various utility scripts for running Lucene performance testsVarious utility scripts for running Lucene performance tests - mikemccand/luceneutilgithub.com이 유틸리티를 이용해 특정 데이터를 반복 테스트해서 벤치마킹 결과를 실시간으로 확인할 수 있게 사이트를 공개하고 있다.https://benchmarks.mikemccandless...

Elastic Search 2025.11.03

Ch12. 안정적인 클러스터 운영 노하우 - 안정적인 클러스터 운영을 위한 주요 체크포인트

클러스터 상태 측정GET _cluster/healthcluster health API를 이용하면, 클러스터의 상태를 실시간으로 확인할 수 있다.green: 정상yellow: 하나 이상의 레플리카 샤드가 할당되지 않았거나 누락됐을 경우대부분 시간이 지나면 green으로 변하지만 일정 기간이 지나도 변하지 않는다면 원인 분석이 필요하다.red: 하나 이상의 프라이머리 샤드에 손상이 발생했을 경우데이터가 정상적이지 않은 상태로 검색 시 누락된 데이터가 결과로 제공되기에 신속히 복구가 필요하다.red가 지속될 경우 색인도 정상적으로 이뤄지지 않을 가능성이 높다.모니터링 해야할 지표들cluster.health.status:클러스터 상태(green/yellow/red)cluster.health.number_of_n..

Elastic Search 2025.10.21

Ch12. 안정적인 클러스터 운영 노하우 - 클러스터 관리 API

런타임에 환경 설정 변경elasticsearch.yml 파일을 편집하는 것이 가장 편한 방법이지만, 엘라스틱서치 인스턴스를 재설치 해야하는 문제가 있다._cluster API를 이용하면 런타임에 클러스터 환경설정이 가능하다.PUT /_cluster/settings{ "persistent": { "indices.recovery.max_bytes_per_sec": "50mb" }}// 일시적인 설정/*PUT /_cluster/settings?flat_settings=true{ "transient": { "indices.recovery.max_bytes_per_sec": "50mb" }}*/persistent 속성을 사용하면, 영구적으로 엘라스틱서치 설정값을 수정할 수 있다.transient..

Elastic Search 2025.10.21

Ch12. 안정적인 클러스터 운영 노하우 - 마스터 노드와 데이터 노드 분리

엘라스틱서치 노드의 종류클러스터를 구성하는 노드들은 다양한 역할을 하며, 하나의 노드가 모든 기능을 수행하면 처리속도나, 메모리 관리 측면에서 큰 손해를 본다.클러스터 규모가 클수록 클러스터를 관리하거나 데이터를 저장하는 역할로 노드를 분리하는 것이 좋다.엘라스틱서치는 클러스터를 구성하는 노드들이 해당 역할로만 동작할 수 있게 모드를 지원한다.elasticsearch.yml 파일에 노드 관련 속성이 제공되며, 이 속성을 조합해서 특정 모드로 설정하는 것이 가능하다.master: 마스터 기능 활성화 여부data: 데이터 기능 활성화 여부ingest: ingest 기능 활성화 여부remote.connect: 외부 클러스터 접속 가능 여부Single Node 모드elasticsearch.ymlnode. mas..

Elastic Search 2025.10.21

Ch12. 안정적인 클러스터 운영 노하우 - 노드 부트스트랩 과정의 이해

엘라스틱서치는 부트스트랩 과정이 있어, 노드를 최초 실행 시 부트스트랩 체크 과정을 거친다.부트스트랩 과정이 필요한 이유엘라스틱서치를 처음 운영할 때는 데이터가 적어 최적화 여부 차이가 크지 않지만, 데이터가 누적되고 클러스터가 커질수록 다양한 문제를 경험하게 된다.과거에는 로그를 출력하는 방식으로 잘못된 설정 정보나, 리소스 할당 문제를 알려주었으나, 현재는 부트스트랩 체크 과정을 통해 이를 확인할 수 있다.해당 설정이 잘못될 경우 엘라스틱서치를 강제 종료해 필수 설정이 완료되어야만 엘라스틱서치가 실행되도록 강제한다.간단한 테스트를 위해 재설치시에도 해당 과정을 실행해야 하는 문제를 해결하기 위해 DEV/운영 모드를 지원한다.개발 모드 vi ./elasticsearch.ymlnetwork.host: l..

Elastic Search 2025.10.21

Ch11. 장애 방지를 위한 실시간 모니터링 - Cat API를 이용해 콘솔에서 모니터링 하기

Cat API와 Rest API 차이_cluster API로 클러스터를 관리하기 위한 대부분의 기능을 제공하지만, 결과를 JSON 형태로 제공하기 때문에 프로그램 환경에서 파싱 해서 사용하기 편리하다. 리눅스 쉘 환경에서는 콘솔 형태로 사용하는데, 이는 JSON 포맷과 친화적이지 못하다.엘라스틱서치는 콘솔 사용자를 위해 _cat API를 제공하며, 콘솔과 친화적인 응답을 출력할 수 있다.curl http://localhost:9200/_cat/master?v콘솔 친화적인 응답값을 받을 수 있다.Cat API 공통 파라미터1) v 파라미터curl http://localhost:9200/_cat/master?v_cat API는 기본적으로 반환되는 결과에는 헤더 라인이 빠져있다.v 파라미터를 추가하면, 헤더라..

Elastic Search 2025.10.15

Ch11. 장애 방지를 위한 실시간 모니터링 - 클러스터에 대한 실시간 모니터링

클러스터 레벨의 실시간 모니터링GET _cluster/stats_cluster/stars API를 이용하면, 클러스터 전체에서 통계를 검색 할 수 있다.클러스터를 구성하는 물리적인 노드의 정보(역할, 운영체제 정보, 메모리 사용량, CPU 사용량)를 알 수 있다.클러스터 인덱스 정보count: 클러스터에 존재하는 인덱스의 갯수를 나타낸다.shards: 클러스터에 존재하는 샤드의 정보를 나타낸다.docs: 클러스터에 색인된 문서의 개수를 나타낸다.store: 클러스터 내부에 가지고 있는 문서가 차지하는 디스크 크기를 나타낸다.fielddata: 클러스터가 fielddata를 위해 생성한 메모리 크기를 나타낸다.query_cache: 동일한 검색 요청 시 빠른 응답을 위해 검색 결과를 메모리에 올려 캐시한다..

Elastic Search 2025.10.15

Ch11. 장애 방지를 위한 실시간 모니터링 - 물리적인 클러스터 상태 정보 조회

엘라스틱서치는 실행 시, Config 디렉터리에 설정된 환경설정 정보를 바탕으로 노드를 인스턴스화한다. 이때 사용가능한 리소스를 적절히 분산해 각 모듈에서 나눠서 사용할 수 있도록 자동으로 리소스를 분배한다. 모든 노드가 인스턴스화되어 클러스터가 구성되면 물리적인 노드가 실제로 어떤 설정을 가지고 있으며, 사용 중인 리소스가 어떤지를 상태 정보 API를 통해 확인할 수 있다.(_cluster/state API) 클러스터 레벨의 물리 상태 조회GET _cluster/state클러스터 관점에서 제공되는 상태 정보 및 설정 내역을 상세하게 살펴볼 수 있다.metadata 정보, routing_table 정보, Restore/Snapshot 정보등을 한눈에 확인 가능노드 레벨의 물리 상태 조회GET _nodes..

Elastic Search 2025.10.15