ELK 스택은 E(Elasticsearch), L(Logstash), K(Kibana)라는 데이터 처리 및 활용에 유용한 세가지 오픈소스 프로젝트로 구성된 스택을 의미하는 약어로 시작했으며 2015년 이후 데이터 수집에 유용한 Beats가 Stack에 추가되어 함께 ELK Stack이라고 불립니다.
원래는 별개의 프로젝트였지만 Elastic 측에서 데이터 검색 및 분석 기능에 대한 유연성을 제공하기 위해 스택으로 통합되었으며 이후에 업데이트 또한 함께 버전업이 되어 릴리즈됩니다.
각각의 Stack에 대한 설명은 아래에서 진행하도록 하겠습니다.
Beats는 로그 스태시와 같이 데이터 전송 역할을 하는 플랫폼입니다.
기존에 수집을 담당하는 Logstash와 다른 점은 FileBeat, MetricBeat와 같이 각 역할에 해당하는 단순한 전송 기능을 수행하는 경량화된 플랫폼이라는 점입니다.
로그 스태시를 사용한다면 데이터 소스의 종류/RDB의 SQL별로 프로세스가 따로 구동되어야 하기 때문에 다양한 데이터 소스를 필요로 하는 시스템에서는 데이터 성격에 맞는 비츠를 구성하여 서비스를 구성하는 것이 더욱 효율적입니다.
File을 수집하는 FileBeats는 다양한 형식의 로그파일을 수집하는 기능을 제공합니다.
서버에서 발생하는 다양한 정보를 수집하는 기능을 제공합니다.
CPU 사용률, 메모리 사용률, 네트워크 I/O, 디스크 I/O 등 다양한 정보를 수집하여 엘라스틱 서치로 전송합니다.
자바 기반으로 만들어진 데이터 ETL(Extract, Transform, Load) 제품으로 간단하면서도 다양한 데이터 조회, 변환, 등록 설정을 제공합니다.
하지만 ETL대상마다 Logstash 프로세스를 생성해야하는 단점이 있습니다.
ELK Stack 중 데이터 저장소 역할을 하며 분산 환경으로서 하둡과 같이 자유롭게 Scale out을 지원하며, 데이터 적재 시 수행되는 인덱싱 처리와 메모리 캐싱을 통한 빠른 검색 가능, 사용자 접근이 쉽도록 RESTFUL 방식을 이용한 데이터 접근 등의 특징이 있습니다.
Elasticsearch가 빅테이터 플랫폼으로 활용될 수 있는 가장 큰 이유이며 하둡 에코 시스템과 같이 자유롭게 Scaleout이 가능하여 데이터 용량에 제한 없이 필요에 따라 자유로이 스토리지, 자원, 서버등을 확장할 수 있기 때문에 빅데이터의 처리가 가능합니다.
Elasticsearch는 데이터 적재 시 기본적으로 인덱싱하는 과정을 거칩니다.
인덱싱된 데이터는 모두 Document라는 단위의 데이터로 생성되고, 다른 비슷한 인덱싱 프로세스를 가진 솔루션과 달리 이들이 메모리에도 캐싱되어서 고속 검색이 가능합니다.
HTTP 프로토콜을 이용한 RESTFUL API 방식으로 데이터 접근이 가능하기 때문에 플랫폼의 제약 없이 데이터 CRUD 작업이 가능하며 Bulk 모드를 통해 대량 건을 한 번에 적재할 수 있는 기능 또한 가능하다.
Elasticsearch는 데이터 적재 및 관리를 위해 JSON 형식을 사용합니다.
이러한 JSON 타입이 속도 측면에서 빠르다고 할 순 없지만
Key/Value형태인 JSON으로 데이터를 명확하게 관리할 수 있다는 점이 큰 장점이며
RDB의 NULL 개념과는 달리 필요한 데이터만 Field로 생성하기 때문에 불필요한 영역을 사용하지 않습니다.
ELK Stack에서 시각화를 담당하는 도구입니다.
GUI를 통해 간단하게 데이터 시각화, 차트 구성, 대시보드 생성 등이 가능한 강력한 도구입니다.
Elasticsearch에 적재된 인덱스로 키바나에서 인덱스 패턴 객체를 생성하면 Discover를 통해 데이터 적재 현황을 파악할 수 있습니다.
JSON 필드별로 목록 화면을 조정할 수 있는 기능과 필드별 통계 기능 또한 제공합니다.
Kibana는 사용자가 직접 데이터를 시각화하고 대시보드를 구성하며 필요에 맞게 분석을 할 수 있는 기능을 제공합니다.
다양한 형식의 차트, 테이블 등을 활용하여 시각화가 가능합니다.
오픈 스트리트 맵을 비롯한 몇 가지 오픈소스를 활용하여 전세계 지도를 서비스하고, 그 위에 국가, 지역 등을 구분할 수 있는 폴리곤 정보 등을 조합하여 Elastic Maps라는 맵 서비스로 구성하여 서비스하고 있습니다.
앞선 Visualize를 통해 생성된 시각화 자료들을 활용하여 하나의 Dashboard로 조합이 가능합니다.
이렇게 생성된 대시보드는 외부에서 확인이 가능하도록 Export가 가능하며 타 시스템에 임베디드가 가능하도록 iframe 형대로도 Export가 가능합니다.
다음 게시물에서는 ELK Stack을 활용하여 간단한 로그 분석 시스템 구축과 알림 기능을 하는 시스템을 구축해보겠습니다.