Elastic Stack 1 - 기본
엘라스틱 스택 기본
1. 엘라스틱 스택의 구성요소
엘라스틱 스택은 일반적인 빅데이터 파이프라인을 구성하기 위한 데이터 수집, 가공, 저장, 분석, 시각화에 필요한 모든 SW를 갖추고 있다.
비츠와 로그스태시는 데이터를 수집하고 가공하는 역할
엘라스틱서치는 저장하고 분석하는 역할
키바나는 엘라스틱 서치에 저장된 데이터를 시각화하고 모니터링 하는 역할을 수행한다.
- Elastic Search(분산 검색 엔진)
- 엘라스틱 서치는 모든 레코드를 JSON 도큐먼트 형태로 입력하고 관리한다.
- 일반적인 DB와 마찬가지로 쿼리한 결과에 대해 일치하는 원본 도큐먼트를 반환한다.
- 텍스트외에도 숫자, IP, 날짜, 지리정보 등 다양한 데이터 타입에 대해 최적화 되어 있다.
- 일종의 NoSQL DB 이며, 다른 MongoDB와 같은 NoSQL 기반 제품들 보다 압조저긴 검색기능과 성능이 특징이다.
- 검색엔진으로서 엘라스틱서치의 중요 특징으로는
Scoring
즉 연관도에 따른 정렬이 있으며 이는 아파지 루씬에서 비롯되었다. - 엘라스틱 서치는 검색 선능을 극대화 하기 위해 몇몇 단점이 있다.(저장공간 압축률 낮음, 시스템 리소스 많이 사용, DSL(Domain Specific Language)사용, 인덱스의 불변 구조로 자료 수정 및 삭제시 비용이 저렴하지 않음 등.)하지만 이러한 단점은 댕요량 데이터에 대한 빠른 검색과 집계가 필요한 경우 용인되는 제약들이다.
- 장점으로는 분산 시스템을 채용해 복수의 루씬 인스턴스를 병렬로 배치하고 분산처리해 검색 속도를 무한히 확장할 수 있도록 했다. 또한, 노드간 복제 기능으로 일부 노드가 다운되더라도 정상적으로 서비스 할 수 있으며, 모든 통신을 RESTAPI로 해 프로그래밍 언어와 무관하게 사용자가 쉽게 접근 할 수 있다.
- Kibana(시각화와 엘라스틱 서치 관리도구)
- 엘라스틱 서치의 시각화 도구
- logstash(이벤트 수집과 정제를 위한 도구)
- 데이터 수집과 가공 기능을 제공하는 도구로 로그, 매트릭, 웹 어플리케이션 등 다양한 소스로 부터 로그를 수집할 수 있다.
- 필터 기능을 통해 비정형이나 반정형 데이터를 분석하기 쉬운 형태로 정제할 수 있고 엘라스틱 서치 외에 다양한 플랫폼으로 정제된 대이터를 내보낼 수 있다.
- (비츠, 파일, DB 카프카) -> 로그스태시(입력-필터-출력) -> 카프라, 엘라스틱 서치, S3
- beats(엣지 단에서 동작하는 경량 수집 도구)
- 로그 스태시는 다양한 필터와 설정을 지원하는만큼 무겁다. 따라서 엘라스틱 스택에서는 파일비트, 메트릭비트 등 비츠라고 부르는 경량 수집기가 있다.
2. 엘라스틱 스택의 용도
- 전문(Full text) 검색 엔진
- 전문을 빠르고 정확하게 검색하기 위해 전문을 용어(terms) 단위로 분석해 인덱싱해 두고 이를 기반으로 검색을 수행하는 역인덱싱 기법을 많이 사용한다.
- 로그 통합 분석
- 보안 이벤트 분석
- SIEM(Security Infomation and Event Management) 나 ESM(Enterprise Security Management)등으로 불리는 다양한 장비들로 부터 보안 이벤트를 수집하고 분석하는 솔루션 역할
- 어플리케이션 성능 분석
- 머신러닝
3. 설치 및 실행
- 엘라스틱 서치 및 키바나 모두 압축 파일을 받고 압축 해제 후 bin폴더 아래 .bat 파일을 열어 실행할 수 있다.
./bin/elasticsearch.bat
./bin/kibana.bat
엘라스틱 서치 작동 확인
- 엘라스틱 서치는 기본 설정으로 9200 포트를 사용한다.
- 윈도우 기본 내장 tool인 curl으로 확인한다.
curl -X GET "localhost:9200/?pretty"
키바나 실행 확인
- 키바나는 기본 설정으로 5601 포트를 사용한다.
- 브라우저에서
localhost:5601
으로 접속하면 키바나 데시보드 확인할 수 있다.
4. 엘라스틱 서치 요청과 응답
엘라스틱서치는 모든 요청과 응답을 RESTAPI 형태로 제공한다. REST란 웹상의 모든 리소스에 URI를 부여하고 활용하는 아키텍쳐 이다. REST를 도입하면 모든 리소스를 일관된 규칙으로 접근할 수 있어 애플리케이션을 모듈이나 기능별로 분리하기 쉬워진다. REST API는 이러한 REST의 기본 사상을 고수하는 API 형태이다.
REST(Respressentational State Transfer)의 약자로 웹(HTTP)의 장점을 이용해 리소스를 주고받는 형태이며 REST API는 REST 기반으로 APT를 서비스하는 것을 의미한다.
- POST : 해당 리소스를 추가한다.
- GET : 해당 리소스를 조회한다.
- PUT : 해당 리소스를 수정한다.
- DELETE : 해당 리소스를 삭제한다.