[EFK 구축] Helm 차트를 이용한 EFK 구축

0

앞선 시간에 쿠버네티스의 로깅 아키텍처와 로그를 생성하는 스프링 애플리케이션을 작성했다. 이번 시간에는 Helm 차트를 이용해 EFK를 구축해 보자.

EFK란?

EFK는 Elastic Search, Flentd, Kibana의 약어로서, 로그 데이터를 수집, 저장, 분석하고 시각화하는 데 사용되는 오픈 소스 솔루션의 조합을 나타낸다.


Elasticsearch
Elasticsearch는 분산형 검색 및 분석 엔진으로, 로그 데이터를 쉽게 저장하고 검색할 수 있게 해준다. 대량의 데이터를 실시간으로 처리하며, 검색엔진으로도 널리 사용된다. 앞서 살펴본 쿠버네티스의 Cluster Level Logging Architecture에서 logging backend 역할을 담당한다.

Fluentd
Fluentd는 로그 데이터를 수집하고 분석하는 데 사용되는 오픈 소스 데이터 수집기다. 여러 소스에서 데이터를 수집하고, 다양한 출력소스로 전달할 수 있다. 앞서 살펴본 쿠버네티스의 Cluster Level Logging Architecture에서 노드마다 배포되는 logging agent 역할을 담당한다.

Kibana
Kibana는 Elasticsearch에서 데이터를 시각화하고 관리하는데 사용되는 오픈소스 도구다. 대시보드를 통해 로그 데이터를 쉽게 시각화하고, Elasticsearch에 저장된 데이터에 대한 상세 분석이 가능하다.


Fluentd vs Fluent bit

Fluentd와 Fluent Bit은 둘 다 오픈 소스 로그 수집 도구로 사용할 수 있다. Cloud Native Computing Foundation (CNCF)의 일부이며 많은 공통점이 있지만, 사용 목적과 환경에 따라 선호되는 경우가 다르다. Fluentd와 Fluentbit은 상호 배타적 관계가 아니기 때문에 같이 사용할 수 있다. Fluentbit과 Fluentd의 관계는 Beats와 Logstash의 관계와 유사하다. 따라서 아래와 같이 Fluentd 과 Fluent bit을 같이 사용하는 아키텍처도 가능하다.

출처: https://logz.io/blog/fluentd-vs-fluent-bit/


Fluent Bit과 Fluentd 비교

출처: https://docs.fluentbit.io/manual/about/fluentd-and-fluent-bit

Fluent Bit은 경량화가 중점인 로그 수집 도구로, IoT와 같이 리소스가 제한된 환경에서 사용하기 좋다. 표를 보면 Fluent Bit은 더 적은 메모리와 CPU를 사용하며, 코어 기능에 중점을 두고 있다. 기본적인 로그 처리와 전달 기능을 제공하며, 고급 필터링, 태깅, 라우팅 등의 기능을 제공한다. Fluent Bit은 제공하는 플러그인의 수가 비교적 적기는 하지만 이번 EFK 구축에 필요한 플러그인들이 이미 정의되어 있기 때문에 경량 버전인 Fluent bit을 사용하도록 하겠다.


Elastic Search 설치

Elastic Helm charts repo 등록

$ helm repo add elastic https://helm.elastic.co

repo 등록 확인

$ helm repo list
NAME        	URL
elastic     	https://helm.elastic.co

elastic repo 차트 확인

$ helm search repo elastic
NAME                     	CHART VERSION	APP VERSION	DESCRIPTION
elastic/eck-elasticsearch	0.4.0        	           	Elasticsearch managed by the ECK operator
elastic/elasticsearch    	8.5.1        	8.5.1      	Official Elastic helm chart for Elasticsearch
elastic/apm-attacher     	0.1.0        	           	A Helm chart installing the Elastic APM mutatin...
elastic/apm-server       	8.5.1        	8.5.1      	Official Elastic helm chart for Elastic APM Server
...

elastic/elasticsearch 차트 버전 확인

$ helm search repo elastic/elasticsearch --versions
NAME                 	CHART VERSION	APP VERSION	DESCRIPTION
elastic/elasticsearch	8.5.1        	8.5.1      	Official Elastic helm chart for Elasticsearch
elastic/elasticsearch	7.17.3       	7.17.3     	Official Elastic helm chart for Elasticsearch
elastic/elasticsearch	7.17.1       	7.17.1     	Official Elastic helm chart for Elasticsearch
...

values.yaml 작성

volumeClaimTemplate:
  storageClassName: ceph-filesystem
  accessModes: ["ReadWriteOnce"]
  resources:
    requests:
      storage: 10Gi
  • storageClassName을 지정해준다.

차트 설치

helm install elasticsearch elastic/elasticsearch \
-n efk \
--values values.yaml

Kibana 설치

values.yaml 작성

elastic/kibana 차트 설치

helm install kibana elastic/kibana \
-n efk \
--values values.yaml

삭제

helm uninstall kibana
kubectl delete -n efk configmaps kibana-kibana-helm-scripts
kubectl delete -n efk serviceaccounts pre-install-kibana-kibana
kubectl delete -n efk rolebindings.rbac.authorization.k8s.io pre-install-kibana-kibana
kubectl delete -n efk role pre-install-kibana-kibana
kubectl delete -n efk jobs.batch pre-install-kibana-kibana

Fluent Bit

Elastic Search와 Kibana는 기본으로 제공되는 차트의 values.yaml을 거의 수정하지 않아도 된다. 하지만 Fluent Bit의 경우 로그를 수집하고 처리하는 과정이 케이스마다 다르기 때문에 추가적인 설정이 필요하다. 해당 설정에 앞서 먼저 Fluent Bit에 대해서 알아보자.

0개의 댓글