Elastic Search (1) ES 시작

백선호·2021년 9월 25일
0
post-thumbnail

ELK 스택

  • 이전에는 Elasticsearch, Kibana, Logstash 3개의 프로그램을 ELK 스택이라고 하였지만 현재는 Elastic 스택이라고 한다.
  • Full-text search engine으로 처음 개발되었지만, ES는 검색엔진을 넘어 보안, 로그분석, 전문(Full-text)분석 등 다양한 영역에서 중요한 역할을 하고 있다.

ELK의 장점

  • 무료 오픈 소스이다.
  • 쉽고 빠른 설치
  • 유연성 있는 커스터마이징 가능한 실시간 데이터 수집 플랫폼
  • 아주 깔끔하고 세련된 키바나 대시보드 제공
  • 수 억, 수십억 건까지 커버 가능한 월등한 성능
  • 간단한 분산 네트워크 환경
  • 함께 사용 가능한 다양한 제품군

ELK 데이터 분석 과정

일반적인 데이터 분석 과정은 웹과 시스템 로그 데이터를 만든 뒤, 로그를 수집하고 저장 및 전처리, 분석과 시각화를 차례대로 진행한다.
ELK스택은 로그 집계에는 Logstash검색에는 Elasticsearch데이터를 시각화하고 분석하는 Kibana를 사용하여 데이터 색인, 검색 및 분석을 위한 강력한 플랫폼을 제공

  • 확장성이 뛰어난 오픈 소스 전체 텍스트 검색 및 분석 엔진
  • 대량의 데이터를 신속하고 거의 실시간으로 저장, 검색 및 분석
  • 일반적으로 복잡한 검색 기능과 요구 사항이 있는 응용 프로그램을 구동하는 기본 엔진 / 기술

핵심 개념

  • Near Realtime (NRT) : Elasticsearch는 거의 실시간 검색 플랫폼, 문서를 색인할 때부터 검색 가능할 때까지 약간의 대기 시간 (일반적으로 1 초)이 매우 짧다.
  • 클러스터 (Cluster) : 전체 데이터를 함께 보유하고 모든 노드에서 연합 인덱싱 및 검색 기능을 제공하는 하나 이상의 노드 (서버) 모음, 클러스터는 기본적으로 "elasticsearch"라는 고유 한 이름으로 식별, 이 이름은 노드가 이름으로 클러스터에 참여하도록 설정된 경우 노드가 클러스터의 일부일 수 있기 때문에 중요하다.
  • 노드 (Node) : 노드는 클러스터의 일부이며 데이터를 저장하고 클러스터의 인덱싱 및 검색 기능에 참여하는 단일 서버, 단일 클러스터에서 원하는 만큼의 노드를 소유 가능, 현재 네트워크에서 실행중인 다른 Elasticsearch 노드가 없는 경우 단일 노드를 시작하면 기본적으로 elasticsearch라는 새로운 단일 노드 클러스터가 형성된다.
  • 색인 (Index) : 색인은 다소 유사한 특성을 갖는 문서의 콜렉션, 색인은 이름(모두 소문자 여야 함)로 식별되며 이 이름은 색인 된 문서를 색인 작성, 검색, 갱신 및 삭제할 때 색인을 참조하는 데 사용된다.
  • Type : 사용자가 하나의 유형, 블로그 게시물을 다른 유형과 같이 여러 Type의 문서를 동일한 색인에 저장할 수 있도록 색인의 논리적 범주 / 파 티션으로 사용되는 유형
  • Documents : 문서는 색인을 생성 할 수있는 기본 정보 단위, JSON (JavaScript Object Notation)으로 표현
  • RESTFul API : URI를 사용한 동작이 가능, HTTP 프로토콜로 JSON 문서의 입출력과 다양한 제어가 가능하다.

설치

https://www.elastic.co/kr/downloads/elasticsearch 직접 설치도 가능하지만 필자는 나의 환경설정에 맞는 버전에 링크 주소 복사를 하여 설치하였다. 물론 맥을 사용하신다면 homebrew로 설치가 가능하다.

$wget"링크주소 복사"
$tar xfz "압축 해제 파일명"
$ elasticsearch

설치가 완료되고 구동도 시켰다면 Web Browser에서 http://localhost:9200으로 접속하면 결과 화면을 확인할 수 있다. 아래와 비슷한 결과를 반환한다면 정상 구동이다.

elasticsearch 설정 수정

압축을 푼 뒤, 해당 폴더에서 config/elasticsearch.yml 설정 파일을 수정하면 설정을 변경할수 있다. 대부분 주석 처리 되어있는게 기본 설정이다.

  • cluster.name : "<클러스터명>" ES의 노드들은 클러스터명이 동일하면 같은 클러스터로 묶이고 그렇지 않으면 물리장비나 네트워크 구성과 상관없이 서로 다른 클러스터로 바인딩된다. 충돌 방지를 위해 클러스터명은 반드시 고유한 이름으로 설정하도록 한다.
  • node.name : "<노드명>" 노드 이름으로 실행 중인 각 ES 노드들을 구분할 수 있다.
  • node.attr.: "" : 노드별 속성 부여를 위한 네임스페이스를 지정한다.
  • path.data : ["<경로>"] 색인된 데이터를 저장하는 결로를 지정한다. 배열 형태로 여러개의 경로값의 입력이 가능
  • path.logs : "<경로>"ES 실행로그를 저장하는 경로를 지정한다.
  • bootstrap.memory_lock : true ES가 사용중인 힙메모리 영역을 다른 자바 프로그램이 간섭 못하도록 점유한다. 항상 ture를 권장함.
  • network.host : <ip 주소> ES가 실행되는 서버의 ip 주소. default= loopback(127.0.0.1), 주석처리 or 루프백인 경우 개발 모드로 실행, 실제 IP 주소로 변경 시 운영모드로 실행된다.
  • http.port : <포트 번호> 클라이언트와 통신하기 위한 http 포트, default=9200
  • transport.port : <포트 번호> 노드들끼리 통신하기 위한 tcp 포트, default=9300
  • discovery.seed_hosts : [ "<호스트-1>", "<호스트-2>", ... ] 클러스터 구성을 위해 바인딩할 원격 노드의 IP 또는 도메인 주소를 배열형태로 입력한다.
  • cluster.initial_master_nodes : [ "<노드-1>", "<노드-2>" ] 클러스터가 최초 실행 될 때 명시된 노드들을 대상으로 마스터 노드를 선출한다.

Kibana

  • Kibana는 Elasticsearch와 함께 작동하도록 설계된 오픈 소스 분석 및 시각화 플랫폼
  • Kibana를 사용하여 Elasticsearch 색인에 저장된 데이터를 검색, 보기 및 상호 작용
  • 고급 데이터 분석을 쉽게 수행하고 다양한 차트, 테이블 및 맵에서 데이터를 시각화
  • 간단한 브라우저 기반의 인터페이스를 통해 실시간으로 Elasticsearch 쿼리의 변경 사항을 표시하는 동적 대시 보드를 신속하게 만들고 공유 가능
  • 간단한 설치가 가능하다.

설치

https://www.elastic.co/kr/downloads/kibana 원하는 버전을 선택 후 elasticsearch와 동일하게 설치해 준다. Kibana는 동일한 버전의 Elasticsearch 노드에 대해 실행되도록 구성되어야 한다.

$wget"링크주소 복사"
$tar xfz "압축 해제 파일명"
$ kibana

kibana는 포트 5601을 통해 구동을 확인할 수 있다. 기본적으로 Kibana는 localhost에서 실행 중인 Elasticsearch 인스턴스에 연결한다. 만약 다른 Elasticsearch 인스턴스에 연결하려면 kibana.yml 구성 파일에서 Elasticsearch URL을 수정 후 재시작해야 한다.

profile
baik9261@gmail.com

0개의 댓글