Elastic stack의 전반적인 틀과 그 구성 요소들
1. Elasticsearch
- Elastic stack(ElasticSearch, Kibana, Logstash)을 이용하면 전체 텍스트 검색보다 훨씬 더 많은 것을 처리, 구조 데이터 및 집계 데이터를 매우 빠르게 처리할 수 있음
- 단순 검색을 위한 것이 아닌 모든 유형의 구조 데이터를 처리하며 로그 집계 등에 자주 사용함
- 신기한 것은, Hadoop이나 Spark, Flink와 같은 솔루션보다 훨씬 빠른 것(리얼 신기함...)
- Elasticsearch의 그래프 시각화, 머신러닝과 같은 새로운 기능들은 Elastic stack의 큰 장점임
- 적절하게 사용하면 elasticsearch는 검색 이외에도 강력한 도구가 될 수 있을 것
- ElasticSearch는 표면적으로 화려한 UI나 그래픽 인터페이스를 사용하지 않으며 그냥 JSON 요청을 처리
- 다시 말하자면 Elasticsearch는 JSON 요청을 처리하고 JSON 데이터를 반환하는 서버일 뿐 ( = 사용자에 따라 어떤 작업을 할지 달라진다)
2. Kibana
- 보기 편한 UI를 제공
- Kibana를 사용해 데이터를 검색하거나 검색 인덱스를 그래픽으로 시각화할 수 있음. Kibana는 매우 복잡한 데이터 집계 데이터 그래프와 차트 작성, 로그 분석 등에 자주 사용됨
- 따라서 구글 분석(Google Analytics)와 같은 작업을 자주 사용한다면 Elasticsearch와 Kibana의 조합을 사용해 대규모 구글 분석을 수행할 수 있음
3. Logstash
- Beats 프레임워크에서는 Logstash라는 도구를 사용해 Elasticsearch에 데이터를 실시간 스트리밍 형식으로 게시할 수 있음
- Ex) 간이 지남에 따라 검색 인덱스에 자동으로 입력하려는 웹 서버 로그가 있다면 FileBeat으로 웹 서버에서 새로운 로그 파일을 찾아 구문을 분석하고 Elasticsearch에서 요구하는 방식으로 구조화해 들어오는 Elasticsearch 클러스터에 넣을 수 있음
- Logstash는 우리들의 서버와 Elasticsearch 사이에서 데이터를 푸시하는 데 사용할 수 있지만, 대부분의 경우 중간 단계로 사용
- 용량이 적은 FileBeat 클라이언트를 웹 서버에 배치하고 Logstash로 데이터를 수집해 시간이 지남에 따라 데이터를 Elasticsearch로 보낼 수 있음
- 이는 로그 파일이나 Elasticsearch, 웹 서버에만 사용이 제한되지 않고 서로 다른 시스템을 연결하고 데이터를 이동시킬 수 있는 시스템임
Kibana 까지 사용은 해봤는데, 이렇게 다양한 기능을 제공하는진 몰랐다. elasticsearch도 그냥 검색용으로만 생각했는데 생각보다 성능도 좋고 잘만 쓰면 진짜 좋은 프로그램일듯.