ToasT1ng 기술 블로그

[EFK] 0. 로그 관제 시스템? EFK? 본문

로깅시스템

[EFK] 0. 로그 관제 시스템? EFK?

ToasT1ng 2021. 8. 16. 23:42

로그 관제 시스템?

규모가 어느 정도 있는 시스템이라면 로그 관리를 효율적으로 할 필요성이 있다. 어떤 문제가 터졌을 때, 개발자가 일일이 온프레미스 환경 내지는 클라우드 환경의 서버에 접속해 직접 로그를 확인하고 문제점을 파악하는 것은 규모가 아주 작은 시스템에서만 가능한 일이다. 큰 시스템에서는 로그를 통합-관제할 수 있는 시스템이 반드시 구축되어야만 한다.

 

 

그렇다면 로그를 통합-관제하는데 있어서 필요한 요소들이 뭐가 있을까?

 

1. 일단 로그를 만들어내는 어떠한 Service 가 존재할 것이다.

2. 다중 Service 에서 발생하는 엄청난 양의 로그를 수집하는 일종의 Collector 가 있어야 할 것이다.

3. 이들을 받아서 저장하는 Storage 가 있어야한다.

4. Storage 에서 로그를 뽑아볼 수 있는 Viewer 가 있어야한다.

대부분의 로그 관리 툴들이 이를 다 구현해두었다.

하지만 다~ 만들어져 있고 사용자가 그냥 쓰기만 하면 되게 만들어져 있는 것들은 보통 유료 플랜으로 제공된다.

로그를 통합-관제하는 것은 정말 중요한 일이지만... 이를 그렇게 많은 돈을 들여가며 관리하고 싶지는 않다고 생각할 때, 우리는 자연스럽게 무료 오픈소스 툴을 찾게 된다.

 

 

 

어떤 오픈소스가 좋을까?

1. ELK

오픈소스 로그 관리 툴 중 제일 많이 언급되는 것은 ELK이다. Elasticsearch + Logstash + Kibana 를 일컫는 말로, 각 프로덕트의 앞 글자를 따서 ELK라고 부른다.

 

ELK 는 부분 유료화되어있어, 더 좋은 기능을 쓰기 위해서는 비용을 들여야 한다. 하지만 필자가 사용해본 결과 무료 플랜으로도 충분히 쓸만하다. 수많은 회사에서 이 툴을 채택해 사용하고 있다.

 

필자가 사용해보고 느낀 장점은 다음과 같다.

- 기능이 많아서 사용자가 자기 입맛에 맞춰서 원하는 대로 시스템을 구축하기에 용이하다.

- Elastic 사에서 제공해주는 레퍼런스가 아주 잘되어 있다.

- 많은 사람들이 사용하기 때문에 다양한 사례에 대한 레퍼런스가 풍부하다.

- 무료일 때도 Basic Authentication ( ID / PW ) 기능을 제공한다.

 

단점은 다음과 같다.

- 무겁다. 제대로 쓰려면 많은 양의 컴퓨팅 파워를 필요로 한다.

 

 

 

2. Graylog

Graylog 는 ELK Stack 과 비슷하다. MongoDB + Elasticsearch + Graylog Server 로 구성되어 있다. ELK 에서 Kibana 의 역할을 Graylog Server 가 대신하는 듯하다. 

장점

- 자체 개발한 GELF Format 을 사용해 빠르고, 용량 부담이 적다.

- Syslog 수집에 최적화되어 있다.

 

단점

- Graylog Server 가 무겁다. Java 로 이루어져 있기 때문이다.

- 레퍼런스가 거의 없다. 검색을 하면 잘 나오지 않는다..

 

 

 

3. 기타

위에 기술한 것 외에도 Datadog, Splunk 등의 다양한 로그 관리 툴들이 존재하지만, 대부분 유료로 제공된다...

 

체험판 이후로 제공되는 무료 라이센스는 쓰레기 실제로 사용하기엔 성능이 너무 떨어진다.

 

 

 

그러니까 결론은, 내가 아는 범위 내에서는 쓸만한 무료 로그 관리 툴은 ELK 밖에 없다.

 

그런데 제목에는 ELK 가 아니라 EFK 라고 적어두었다. EFK 가 뭘까?

 

 

 

EFK 란?

EFK 는 Elasticsearch + Fluentd + Kibana 조합이다. ELK 에서 Logstash 대신 Fluentd 를 사용한다.

 

 

개발자들이 Logstash 대신 Fluentd 를 사용하려는 이유는 크게 두 가지이다.

1. 더 가볍다. 그런데 성능은 비슷하다.

2. 시스템이 Kubernetes 환경을 사용한다. 

 

Kubernetes 와 Fluentd 의 회사는 같다. 호환이 잘된다. 그렇기 때문에 많은 사람들이 Kubernetes 환경에서 로그 수집기로 Fluentd 를 사용하고 있다.

 

 

다른 Elastic 프로덕트와의 호환성은 Logstash 가 훨씬 더 뛰어나다. 그럴 수밖에 없을 것이다.

하지만 필자가 실제로 사용해봤을 때, Logstash 대신 Fluentd 를 사용해도 딱히 불편한 점이 없었다.

 

 

  Elastic 과의 호환성 Kubernetes 와의 호환성 용량
Logstash 더 좋음 덜 좋음 무거움
Fluentd 덜 좋음 더 좋음 가벼움

Logstash vs Fluentd

 

 

Logstash 와 Fluentd 중 뭘 쓸지 고르는 것은 정말 단순히 본인의 선택인 것 같다. 어떤 것을 쓰든 호환이 다 잘된다. ( 단지 어떤게 어떤거랑 조금 덜, 조금 더 호환이 잘 된다 뿐이지 호환은 다 잘 된다. )

 

필자는 항상 더 가벼운 것을 선호하기 때문에 Logstash 대신 Fluentd 를 선택했다.

 

Logstash 를 사용하다 Fluentd 를 사용했을 때 체감상 1.5배 이상 더 가벼워진 느낌이었다. 로깅 시스템을 가볍게 구축하고 싶은 분들께 Fluentd 사용을 적극 추천드리고 싶다.

 

 

 

끝으로...

처음 로그 관제 시스템을 구축하려고 열심히 찾아볼 때도 로그 관리 오픈소스 툴이 이렇게나 없구나... 생각했는데 반년이 지난 지금도 여전하다. Elastic Stack 의 독주를 막아낼 수 있는 오픈소스가 더 많이 나와줬으면 좋겠다는 생각이 든다. Graylog 써보고 싶은데 레퍼런스가 너무 없어서 제대로 사용해볼 엄두가 안 난다... 

 

 

 

이번 포스팅에서는 로깅 시스템과 EFK 에 대해서 다뤄보았다. 

 

다음 포스팅부터 본격적으로 EFK 구축하는 법에 대해 다루어볼 예정이다.

Comments