본문 바로가기

데이터베이스/ELK

(18)
Elastic APM 1. APM APM은 Application Performance Monitoring의 약어로, Application에 대한 성능 정보 및 발생한 에러 정보 그리고 Application이 동작중인 서버의 기본적인 Metric 정보를 수집할 수 있는 기능을 지원한다. 또한, MicroService 환경에서 서비스를 구성하는 여러 Application 간의 Request를 하나의 Trace로 묶어서 추적할 수 있는 분산 Tracing(distribute tracing)에 대한 기능도 지원한다. APM은 위와 같이 수집된 여러 데이터를 바탕으로 하여 Application에 지연이 발생하였을때, 지연에 대한 병목 구간을 찾아 낼 수 있는 모니터링 서비스 이다. 2. APM 시스템 아키텍처 Elastic APM은 ..
[ElasticSearch] ILM 기능으로 인덱스 주기 관리 이번에는 며칠동안 삽질했던 ILM 정책을 수립하는 과정에 대해서 기록하려고 한다. 환경은 3개의 클라우드 서버 환경에서 각 1개의 노드를 설정하였다. 또한, 노드의 옵션을 hot, warm, cold로 두어서 로그를 효율적으로 관리하려고 한다. 물론 master로 설정된 노드는 키바나가 설치되어 있어야 한다. (로그스태시는 자유) 마스터 노드가 있는 서버에서 키바나 Dev Tools로 접속을 한다. # 모든 인덱스 조회 GET _cat/indices?v # 모든 노드 조회 GET _cat/nodes?v # 각 노드의 Roles 조회 GET _cat/nodeattrs?v&s=name GET _nodes?filter_path=nodes.*.name,nodes.*.roles 위의 명령어를 통해서 각 인덱스와 ..
[ElasticSearch] node 종류와 옵션 ILM 정책을 수립을 하는 도중에 hot-warm-cold 세 개로 노드를 나누어서 multi-tier 노드 아키텍처를 설정하려고 한다. 그러기 위해서는 노드의 종류와 각 노드들의 옵션이 무엇인지 알아야 하기 때문에 글을 정리하려고 한다. ElasticSearch 노드 종류 (1) Master 노드 node.master를 true로 지정하며 클러스터의 컨트롤을 통해 마스터 노드로 선택될 자격을 가지게 된다. 마스터 노드는 클러스터에서 인덱스를 만들고 지우는 행위, 클러스터에서 노드들을 트래킹하고 각각의 노드를 샤드를 할당할건지 결정한다. 데이터를 인덱싱하고 찾고 하는 작업은 CPU, Memory, I/O 자원을 많이 사용하기 때문에 큰 규모에서는 data node와 master node를 구별한다. (2..
[Elasticsearch] (error) vm.max_map_count 값 변경하기 3개의 노드를 하나의 클러스터로 연동하면서 수 많은 에러를 발견하였다. 그 중에 하나가 vm.max_map_count에 대한 에러이다. 본인이 구글링과 함께 실제로 해본 내용을 바탕으로 글을 작성할 것이다. 1. 에러 elasticsearch | ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch. elasticsearch | bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at..
[Elasticsearch] 다른 서버에서 클러스터 구성 (노드 연동) with. docker-compose 요구사항에서 3개의 서버의 엘라스틱서치 서버를 구동하고 각 엘라스틱서치 서버에는 싱글 노드로 운영되고 있다. 3개의 서버 엘라스틱서치의 각 노드들을 하나의 클러스터로 묶어서 수명 주기 정책을 적용하려고 한다. 그러기 위해서는 먼저 각각의 싱글노드 3개를 하나의 클러스터로 연동시켜야 하는데, 여러 에러를 많이 만났다. 이러한 에러를 사전에 방지하고 실수를 회고하고자 글을 쓰려고 한다. 먼저, 본인은 3개의 엘라스틱서치 서버를 열어야 하지만 연동 테스트하기 위해서 먼저 두 개의 서버를 먼저 연동시키려고 한다. 클라우드 환경은 GCP를 이용하였고, 서비스 출시를 목표로 하는 것이기 때문에 docker-compose를 이용하였다. 여러 서버에서 하나의 클러스터로 실행하기 위해서는 엘라스틱서치 포트에 대해서 이해..
[ElasticSearch] 엘라스틱서치의 내부 구조 및 cluster, index, replica, shard 프로젝트를 진행하면서 노드를 수명 주기 관리로서 해결해야할 요구사항이 생겼기에 엘라스틱 서치의 내부 구조와 용어에 대한 이해가 필요하다고 절실히 느꼈다. 어떤 좋은 티스토리에서 어떠한 문장을 봤는데 'ES 성능은 shard 개수보다 replica 개수에 영향을 준다'라는 문장이었다. 본인은 아직 shard와 replica에 대한 개념이 잡히지 않아서 왜 그런지, 내부는 어떻기에 이런지에 대한 의문이 생겨 공부하기로 했다. 1. 내부 구조 먼저 ES의 내부 구조를 살펴보면.. 엘라스틱서치는 여러 개의 클러스터로 구성될 수 있다. 위의 구조처럼 하나의 클러스터를 가정을 둘 때, 하나의 클러스터에는 여러 개의 노드들이 묶여져 있는 구조를 볼 수 있다. (물론 하나의 노드도 가능) 그리고 각 노드에 데이터를 저..
[ElasticSearch] 인덱스 수명 주기 관리 (Hot, Warm, Cold) 1. ILM 란? ILM란 인덱스 수명 주기 관리 (Index Lifecycle Management)라고 불린다. 인덱스 수명 주기 관리(IML)은 ElasticSearch 6.7버전에서 출시되었으며, 인덱스 관리를 효율적으로 관리할 수 있도록 설계되었다. 인덱스 수명주기 관리 (ILM) API는 시간이 지남에 따라 인덱스를 관리하는 방법을 자동화 할 수 있다. 정해진 일정에 따라 인덱스에 대한 관리 작업을 수행하는 대신 샤드 크기 및 성능 요구 사항과 같은 다른 요소를 기반으로 작업을 수행할 수 있다. 인덱스를 생성하는 데 사용된 인덱스 템플릿에 수명 주기 정책을 연결하여 인덱스가 처리되는 방식을 제어한다. 2. Hot-Warm-Cold Hot-warm-cold 아키텍처는 로깅 또는 메트릭과 같은 시계..
[ELK] ELK의 REST API이해 Elasticsearch는 http 프로토콜 접근이 가능한 REST API를 지원한다. 자원별로 고유 URL로 접근이 가능하며 http 메서드 PUT, POST, GET, DELETE를 이용해서 자원을 처리한다. 즉 RESTful 한 시스템이라고 한다. https://esbook.kimjmin.net/04-data/4.1-rest-api 4.1 REST API - Elastic 가이드북 Elasticsearch는 http 프로토콜로 접근이 가능한 REST API를 지원합니다. 자원별로 고유 URL로 접근이 가능하며 http 메서드 PUT, POST, GET, DELETE 를 이용해서 자원을 처리합니다. 이런 특성을 가진 시스템을 esbook.kimjmin.net 굉장히 정리가 잘 되어있음.. 1. 유닉스..