프로젝트-X 두번째 멘토링을 하며 멘토님께서 ELK에 대해 설명해주셨다.
그래서 ELK에 대해 정리해보려 한다.
- ElasticSearch는 Lucene 기반으로 개발한 분산 검색엔진으로, Logstash를 통해 수신된 데이터를 저장소에 저장하는 역할을 담당한다.
- 데이터를 중심부에 저장하여 예상되는 항목을 검색하고 예상치 못한 항목을 밝혀낼 수 있다.
- 정형, 비정형, 위치정보, 메트릭 등 원하는 방법으로 다양한 유형의 검색을 수행하고 결합할 수 있다.
- 오픈소스 서버측 데이터 처리 파이프라인으로, 다양한 소스에서 동시에 데이터를 수집하고 변환하여 stash 보관소로 보낸다.
- 수집할 로그를 선정해서, 지정된 대상 서버(ElasticSearch)에 인덱싱하여 전송하는 역할을 담당하는 소프트웨어
- 데이터를 시각적으로 탐색하고 실시간으로 분석 할 수 있다.
- 시각화를 담당하는 HTML + Javascript 엔진이라고 보면 된다.
가격
ELK는 Elastic이라는 회사에서 제공하는 오픈소스이다. ELK 자체는 무료이기 때문에 다른 시스템에 비해 가격적인 측면에서 장점을 가진다.
접근성 & 사용성
ELK는 오픈소스를 내려받아 설치하는 것으로 구축이 완료된다. 그 외의 별도의 추가적인 개발 과정이 필요 없기 때문에 접근성이 뛰어나다. 또한 다른 유사 시스템들에 비해 사용성이 쉬운 편이다.
속도
ELK 중 데이터 보관 및 분석 역할을 담당하는 Elasticsearch는 거의 실시간 (Real-Time)에 가깝게 데이터를 처리할 수 있다.
유연성
ELK는 세 가지의 모듈을 함께 구축한다. 해당 기능을 담당할 수 있다면 얼마든지 모듈을 유연하게 변경할 수 있다. Logstash를 쓰지 않아도 데이터 수집 역할만 할 수 있다면 경우에 따라 다른 것으로 대체할 수 있다.
기존에 보유한 데이터를 엘라스틱 서치로 이관하는 경우 심각한 성능 저하 문제 발생, 많은 양의 데이터 이관 용도로는 사용이 힘들다.
커널의 cgroup에 해당하는 변수를 참조하는 내용이 있어 해당 변수가 없는 커널의 경우 오류가 발생할 수 있다. 또한 커널 컴파일 환경에 따라 불필요한 커널 변수로 인해 프로그램이 중단되는 문제도 야기시킬 수 있다.
3개의 스택(로그스태시->엘라스틱서치->키바나)로 데이터가 넘어가는 과정에서 시간대 일관성이 깨지는 문제가 있다. 3개 솔루션 모두 기본 시간대가 UTC라는 점을 인지하고, 시간대 설정이 가능한 경우 일관성을 유지하려는 노력으로 극복할 수는 있다.