[TIL] ELK Stack
ELK Stack은 Elasticsearch, Logstash, Kibana로 이루어진 Observability 툴이다. 로그 관제 시스템을 구축할 수 있게 도와준다.
Logstash로 로그를 수집하고, Elastic Search에 저장하고 검색하며 Kibana로 로그를 시각화한다.
ELK
Logstash
실시간 파이프라인 기능을 제공하는 데이터 수집 엔진이다. Logstash의 출력을 Elasticsearch로 물려 데이터를 Elasticsearch로 흘려보내는 역할을 한다.
Elasticsearch
inverted index에 기반한 실시간 데이터 저장/검색 솔루션이다. 빠르게 단어들을 검색할 수 있는 기능을 제공한다.
Kibana
로그를 검색하고 시각화할 수 있는 대시보드 프론트엔드 서비스이다. Elasticsearch의 프론트엔드 역할을 한다.
최근에는 Beats를 추가해 Elastic stack이라고 부르기도 하는 것 같다.
향후 공부 방향
처음에는 ELK를 가볍게 구축해보고 테스트 해보려고 했으나 각각의 서비스가 생각보다 간단하지 않아서 차근차근 공부하며 정리해 나가야 할 것 같다.
서비스를 간단한 것부터 하나씩 사용해보며 익힌 후, docker-compose를 활용해 ELK Stack을 띄우고 사용해보는 실습까지 진행해보려 한다.
Fluentd도 elasticsearch를 지원한다(https://docs.fluentd.org/output/elasticsearch). Java 기반으로 개발을 하지 않는 내 입장에서는 Fluentd나 Fluent-bit를 활용하는 것이 나을 수 있다.
참고
Fluentd는 Logstash보다 가볍다. Logstash는 Java 런타임을 필요로 하는 JRuby로 되어 있다. Fluentd는 CRuby로 되어 있다.
한편 Fluentd보다 Fluent Bit는 더 가볍고, C로 되어 있다. 서버에서 Forwarder만 필요로 하는 것이라면 Fluent Bit를 사용하는 게 맞다.
[참고: EFK Stack, 그 중에 Fluentd와 Fluent Bit]
내가 실습으로 구성할 프로젝트
- 서버 간단히 Go로 구성한다. Log를 남긴다.
- Forwarder Fluent Bit를 사용한다.
- Elasticsearch
- Kibana
실습 순서
- Go로 로그를 생성하는 간단한 서버 만들기
- fluent-bit 연동
- elasticsearch 도입
- kibana 도입
참고자료
https://suyeon96.tistory.com/38
https://velog.io/@holidenty/ELK-ELK-Stack-이란-무엇일까