코딩하고자용 블로그

ElasticStack에 대한 정리 본문

Computer Science/Server

ElasticStack에 대한 정리

코딩하고자용 2023. 4. 22. 22:23

본 글은 elastic 공식 홈페이지의 내용을 인용하여 정리하였음을 알려드립니다.

더 정확한 내용을 확인하기 위해서는 공식 홈페이지를 확인해주세요.

https://www.elastic.co/kr

🍎 Elastic stack vs ELK stack

Logstash, Kibana와 함께 사용되면서 한동안 ELK Stack(Elasticsearch, Logstash, Kibana)이라고 널리 알려지게 된 Elastic은 2013년에 Logstash, Kibana 프로젝트를 정식으로 흡수하여 한 지붕 아래에서 함께 개발 중이다. 2015년도에는 Filebeat를 추가하며 ELK Stack 대신 제품명을 Elastic Stack이라고 정식으로 명명하면서 모니터링, 클라우드 서비스, 머신러닝 등의 기능을 계속해서 개발, 확장해나가고 있다.

🍊 Filebeat

Filebeat는 경량 로그 수집기 즉, 보안 장치, 클라우드, 컨테이너, 호스트 등등에서 로그와 파일을 경량화된 방식으로 전달하고 중앙 집중화하여 작업을 보다 간편하게 만들어 주는 역할을 한다.

kubernetes, docker, 클라우드 배포 시 filebeat를 함께 배포하여 모든 로그 스트림을 추적할 수 있다.

backpressure-sensitive 프로토콜을 사용하기에, 읽기, 전송 속도를 알아서 조정한다.

자세히 생각하자면, 어떤 백엔드 프로젝트가 있고 k8s로 구성하여 pod가 여러 개 띄워져 있다고 하자. 해당 pod로 접근하는 client들이 있을 것이고 각각마다 접근 관련 log가 생겨날 때 이 log를 어디선가 한번에 보고싶을텐데, 이를 위해 Filebeat가 경량화된 방식으로 전달하고 중앙 집중화를 해주는 것이다.

로그를 모아 logstash로 전달

🍌 Logstash

Logstash의 주업무는 데이터 집계, 변환, 저장이다.

다양한 소스에서 데이터를 수집하여 변환 후 자주 사용하는 저장소(Elasticsearch 등...)로 전달한다.

필드 익명화, 제외 등 전반적인 처리를 해준다.

자세히 생각하자면, 위 Filebeat에서 받은 로그들이 Logstash로 받아오고, 이에 대한 Filtering을 해주고, 저장을 위해 Elasticsearch로 보낸다고 생각하면 될 것 같다.

Elastic Stack의 기본 방식

어? 어차피 Elasticsearch로 보내는거 그냥 서버마다 Filebeat가 아닌 Logstash를 두면 해결되는거 아닌가?

대충 보면 틀린 말은 아니다. 결국 질문은 Filebeat가 늦게지만 생겨난 이유와 관련되는데, 이유는 바로 부하 때문이다.

Logstash는 자원이나 메모리 부분에서 무겁기 때문에, Filebeat를 활용하여 수집과 가공을 분리시켜준 것이다.

🥝 Elasticsearch

분산형 RESTful 검색 및 분석 엔진이며, Logstash에서 온 데이터를 저장하여 빠른 검색, 정확도, 강력한 분석을 제공한다.

정형 데이터, 비정형 데이터, 위치 정보, 메트릭 등 다양한 유형의 데이터를 사용자가 원하는 방식대로 검색할 수 있다.

Elastic Stack을 통해 가능한 솔루션들

🫐 Kibana

Elasticsearch 데이터를 시각화하고 Elastic Stack을 탐색하게 해주는 무료 오픈 소스 인터페이스이다.

차트, 지도, 필터를 모두 가져와 한 곳에서 데이터의 전체 그림을 볼 수 있는 대시보드를 생성해준다.

쿼리 작업량 추적, 앱을 통한 요청 흐름 방식 파악 등 다양한 용도로 사용할 수 있다.

Kibana의 예시

🍇 마치며

결국 Elastic Stack의 목표는 로그다. 로그가 없다면 서버에 에러가 나도 인지할 수 없게 되는 것이기에 당연히 서버는 로깅을 해야한다.

이를 잘 관리, 확인 할 수 있게 ELK Stack에 능숙해지도록 하자.

'Computer Science > Server' 카테고리의 다른 글

Docker docs 정리 (2) - Get Started  (0) 2022.08.24
Docker docs 정리 (1) - Overview  (0) 2022.08.22