ELK 12

클러스터(Cluster)와 노드(Node) 구성

Split Brain 문제를 피하기 위해서 마스터 후보 노드 개수는 항상 홀수로 하고 가동을 위한 최소 마스터 후보 노드 설정은 (전체 마스터 후보 노드)/2+1로 설정해야한다.해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 7장을 정리하여 쓴 글입니다. 엘라스틱서치의 클러스터 엘라스틱서치에서의 클러스터(Cluster) ? 엘라스틱서치의 클러스터는 노드들로 구성되어 있다. 노드들을 통하여 필요한 작업을 나눠서 수행하는 분산 처리를 지원하여 대량의 데이터를 다룰 수 있다. 컴퓨팅 시스템에서의 클러스터(Cluster) ? 여러 대의 컴퓨터를 병렬로 연결해 하나의 시스템으로 구성한다. 시스템 장애를 대비한 고가용성(high availability)을 높이는 동시에 시스템 성능을 높일 수가 있다. 엘라스틱..

elasticsearch function_score(전체 데이터 스코어에 대한 글)

elasticsearch에서 쓰이는 질의어 match / filter / bool / should / must 등 질의 쿼리와 tie_breaker, filter에 ^3 등을 붙이는 부스팅 쿼리(boosting) 가중치를 부여할 수 있다. 이러한 가중치는 검색 결과에 대한 가중치를 말한다. 하지만, 이번에는 검색 결과에 대한 가중치가 아닌, 질의어를 쓰기 전에 특정 필드에 가중치를 우선 주고 시작하는 방법에 대해 포스팅하려고 한다. 왜? 무엇때문에 필요했나? - 전체적인 데이터 중 특정 데이터를 우선적으로 보여주고 싶다. 왜냐면 질의어를 써서 검색을 하면 특정 질의어에 관련된 목록들만 나오기 때문이다. 무엇을 사용했는가? - function_score를 사용하여 전체적인 데이터에 대해서 특정 데이터 필드..

ELK 2022.04.01

비트(beat)

해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 7장을 정리하여 쓴 글입니다. 비트 가볍고 사용하기 쉬운 데이터 수집기이다. 고 프로그래밍 언어로 작성된 경량 프로그램이기 때문에 시스템에 큰 부담을 주지 않으며 로그스태시, 엘라스틱서치와 연계해 다양한 시스템의 이벤트를 수집할 수 있게 도와준다. 비트는 수집한 데이터를 엘라스틱으로 실어 나르기 위한 최전방에 위치한 소프트웨어이다. 비트와 로그스태시와 유사해 보일 수 있으나 차이점이 있다. 로그스태시는 다양한 플러그인을 포함해 범용성이 높은 만큼 무겁게 움직인다. 비트는 범용성을 포기하고 특정 목적만 수행하도록 가볍게 구성되어 애플리케이션의 성능에 영향을 미치지 않고 필요한 이벤트를 수집할 수 있다. 하지만, 비트와 로그스태시를 따로 사용하지는 않는다..

Logstash config directory 위치(brew 설치 시)

엘라스틱 스택 개발부터 운영까지에 대한 책에서 Logstash에 대한 실습은 윈도우 환경에서 하게 된다. 맥 사용자는 혼동이 일어날 수가 있다. 저 같은 경우에는 brew로 Logstash를 설치하는 바람에, config directory 위치를 못찾아서 헤맸습니다. brew로 설치 된 Logstash 위치 logstash --help를 통하여 logstash 설치 위치를 알 수 있다. 이 위치에 대해서 차근차근 들어가면 libexec 안에 config 폴더가 있다. 하지만 이 config 폴더는 /usr/local/etc/logstash에 적용되어 있다. 정확한 위치를 알았으니 다음에는 /usr/local/etc/logstash을 통하여 config directory를 수정하면 된다.

로그스태시(LogStash)

해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 6장을 정리하여 쓴 글입니다. 로그스태시란? 일단 로그는 성능, 오류, 도작 과정 등의 중요한 정보를 담고 있다. 이러한 로그는 일반적으로 시스템 동작의 모든 행위나 이벤트를 기록해야 한다. 그리고 이 로그는 빅데이터에서는 로그 정보를 데이터 분석에 활용하기도 한다. 많은 어플리케이션에 대한 로그를 하나로 모은다고 했을때 로그는 반정형데이터라서 어플리케이션마다 설정하지 않으면 다르게 찍히게 된다. 로그 스태시는 1) 이러한 로그들을 수집, 정제하여 한눈에 보기 좋도록 만들어준다. 추가로 장애 대응 로직이나 성능 저하 요인을 쉽게 파악할 수 있는 모니터링 API, 간단한 조정으로 성능을 튜닝할 수 있는 파라미터들도 제공한다. 2) 로그스태시는 비츠, 로..

살려줘!! HyperLogLog

엘라스틱서치 스터디를 하던 중 HyperLogLog에 대한 이야기가 나왔다. HyperLogLog에 대해 이야기하기 전에 일단 왜 HyperLogLog가 나왔는지에 대해서부터 알아야 한다. 엘라스틱서치에서는 집계 쿼리를 이용하여 통계 데이터를 만든다. 이러한 통계 데이터를 만드는 종류 중에 필드의 유니크한 수를 만들기 위한 데이터를 만들 수가 있다. 그런데, 내가 써놓고서도 필드의 유니크한 수가 뭔지 모르겠다. 필드의 유니크한 수....??? 필드의 유니크한 수.. 필드의 유니크한 수는 바로 중복된 값을 제외한 데이터의 수를 말한다. 예를 들어, 필드에 월/화/수/목/금/월/화/수/목/금/토/일 데이터가 있다면 여기서 중복된 값을 제외하면 월/화/수/목/금/토/일이 나오게 된다. 원래 12개의 필드가 중..

엘라스틱서치(elasticsearch) 집계

해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 5장을 정리하여 쓴 글입니다. 엘라스틱서치도 데이터를 날짜별로 묶거나 특정 카테고리별로 묶어 그룹별 통계를 내는 집계 개념(aggregation)이 있다. 집계? 데이터를 그룹핑하고 통계값을 얻는 기능이다. 집계 기능은 강력한 검색 성능과 맞물려 엘라스틱서치를 고성능 집계 엔진으로 사용할 수 있도록 한다. 대표적인 예로 키바나가 있다. 집계의 종류는 메트릭 집계, 버킷 집계, 파이프라인 집계가 있다. 집계의 Request와 Response Request 집계의 Requset는 aggs로 시작을 한다. aggs는 집계 요청을 하겠다는 의미, my_aggs는 사용자가 지정하는 집계 이름이다. agg_type은 집계 타입을 의미한다. 집계 타입에 대해서는 ..

엘라스틱서치(elasticSearch) 검색 - 2부

해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 4장을 정리하여 쓴 글입니다. 1부에 이어서 2부에서는 전문 쿼리, 매치 쿼리, 용어 쿼리, 멀티 매치 쿼리, 범위 쿼리, 논리 쿼리, 패턴 쿼리에 대해서 알아보려고 한다. 엘라스틱서치는 검색 쿼리로써 리프 쿼리, 복합 쿼리로 나눌 수 있다. 리프 쿼리 ? 특정 필드에서 용어를 찾는 쿼리로 match, term, range 등이 있다. 복합 쿼리 ? bool 쿼리 등이 있다. 전문 쿼리 (Full Text Query)와 용어 수준 쿼리 (Term level Query)를 자세히 보고 복합 쿼리인 논리 쿼리로 개념을 확장하려고 한다. 전문 쿼리와 용어 수준 쿼리 전문 쿼리 ? 전문 검색을 하기 위해 사용되며, 전문 검색을 할 필드는 인덱스 매핑 시 텍스..

엘라스틱서치(elasticSearch) 검색 - 1부

해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 4장을 정리하여 쓴 글입니다. 엘라스틱서치는 전문 검색 기능을 시작으로 꾸준히 성장했으며, 다양한 검색 쿼리를 지원하고 있다. 1부에서는 쿼리 컨텍스트와 필터 컨텍스트의 차이, 쿼리 스트링과 쿼리 DSL의 차이점 그리고 유사 스코어를 계산법에 대해서 알아본 후 2부에서 전문 쿼리, 매치 쿼리, 용어 쿼리, 멀티 매치 쿼리, 범위 쿼리, 논리 쿼리, 패턴 쿼리에 대해서 알아보려고 한다. 쿼리 컨텍스트와 필터 컨텍스트 쿼리 컨텍스트 ? 질의에 대한 유사도를 계산해 이를 기준으로 정확한 결과를 먼저 보여줌. 필터 컨텍스트 ? 유사도를 계산하지 않고 일치 여부에 따른 결과만을 반환한다. 질의에 대한 유사도의 결과 반환에 따라 다르다고 나와있다. 쿼리 컨텍스트..

엘라스틱서치(elasticSearch) 기본 - 2부

해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 3장을 정리하여 쓴 글입니다. 벌크 데이터 POST _bulk {"index":{"_index":"test", "_id":"1"}} {"field":"value one"} {"index":{"_index":"test", "_id":"2"}} {"field":"value two"} {"delete":{"_index":"test", "_id":"2"}} {"create":{"_index":"test", "_id":"3"}} {"field":"value three"} {"update":{"_index":"test", "_id":"1"}} {"doc":{"field":"value two"}} 여러개의 Document를 각각 API를 불러서 요청하는 것보다 B..