ELK/ELK 개발부터 운영까지

비트(beat)

Flambee 2022. 3. 28. 23:37
해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 7장을 정리하여 쓴 글입니다.

 

비트

가볍고 사용하기 쉬운 데이터 수집기이다. 고 프로그래밍 언어로 작성된 경량 프로그램이기 때문에 시스템에 큰 부담을 주지 않으며 로그스태시, 엘라스틱서치와 연계해 다양한 시스템의 이벤트를 수집할 수 있게 도와준다.

 

비트는 수집한 데이터를 엘라스틱으로 실어 나르기 위한 최전방에 위치한 소프트웨어이다.

 

비트와 로그스태시와 유사해 보일 수 있으나 차이점이 있다. 로그스태시는 다양한 플러그인을 포함해 범용성이 높은 만큼 무겁게 움직인다. 비트는 범용성을 포기하고 특정 목적만 수행하도록 가볍게 구성되어 애플리케이션의 성능에 영향을 미치지 않고 필요한 이벤트를 수집할 수 있다.

 

하지만, 비트와 로그스태시를 따로 사용하지는 않는다. 대부분 같이 사용된다. 즉, 로그스태시에는 입력 -> 필터 -> 출력 순으로 데이터를 가공하는데 비트는 그렇지 않다. 비트를 사용했을 때 위의 그림과 같이 곧바로 엘라스틱서치에다가 보내도 되지만, 만약에 비트를 통하여 보내지는 데이터가 매우 복잡할 경우에는 로그스태시를 통하여 데이터를 정제하고 엘라스틱서치에 보낼 수 있다.

 

이러한 비트의 종류에는 파일비트, 하트비트, 매트릭비트, 패킷비트, 오딧비트, 저널비트, 펑션비트, 윈로그비트, 커스텀 비츠가 있다.

 

비트명 설명
파일비트 로그 파일을 실시간으로 읽어들여 전송한다.
하트비트 서비스가 살아 있는지 확인하고 모니터링한다.
메트릭비트 운영체제를 포함하여 서비스로부터 주기적으로 통계 지표를 수집한다.
패킷비트 네트워크 패킷 분석기로 네트워크 데이터를 수집한다.
오딧비트 리눅스 시스템 보안 정보를 감시하는 auditd에서 생성하는 로그를 수집한다.
저널비트 리눅스 systemd로 실행되는 서비스에 대한 로그를 수집한다.
펑션비트 클라우드의 서버리스 환경에서 사용할 수 있고 아마존의 큐 데이터 등을 수집한다.
윈로그비트 윈도우에서 발생하는 이벤트 로그를 수집한다.
커스텀 비츠 오픈소스 커뮤니티에서 만든 비츠다.

이러한 비츠의 동작 과정은 총 5개의 과정으로 되어 있다.

 

1. 비트를 다운로드 한다. -> 2. 비트 설정 파일을 수정한다. -> 3. 엘라스틱서치와 키바나 대시보드를 사용할 수 있게 설정한다. -> 4. 비트를 시작한다. -> 5. 키바나 대시보드에서 데이터를 확인한다.

 

필수적인 단계는 1,2,4번이 있지만, 3,5번은 키바나에서 비츠 대시보드나 시각화를 이용하기위하여 필요하다.

 

 이제 비트 중에 파일 비트를 소개하려고 한다. 해당 책에서는 많은 비트들 중에서 파일 비트를 소개하고 있다. 나머지 비트에 대해서는 추후에 파일비트를 익히면 사용하는데 어렵지 않다고 한다.


파일비트

파일비트는 로그 파일을 쉽게 수집하도록 도와주며 궁극적으로 엘라스틱과 키바나를 이용해 로그를 추적하고 통계를 만들어 활용할 수 있게 도와준다.

 

파일비트는 고 언어로 작성되어 있고 JVM 같은 무거운 런타임 라이브러리가 따로 필요핟지 않아서 가볍기 때문에 수집할 시스템에 부담 없이 부설치 될 수 있다.

 

 

파일비트는 입력, 하베스터, 스풀러로 구성되어 있다. 

 

구성요소 내용
입력 설정 파일에서 하베스터에 대한 입력 소스를 정한다.
하베스터 입력에 명시된 파일을 직접 수집하는 주체다
스풀러 하베스터가 수집한 이벤트를 엘라스틱서치나 로그스태시 같은 장소로 전달한다.

파일비트에 입력 된 로그 파일에 대해서 하베스터가 해당 로그 파일에 대한 데이터를 수집하고, 수집한 데이터를 스풀러를 통해 엘라스틱서치나 로그스태시로 보내는 구조로 되어진다.

 

파일비트는 로그 파일뿐만 아닌, 컨테이너, s3, 카프카에서 데이터를 가지고 올 수 있다.

인풋 타입 설명
log 파일시스템의 지정한 경로에서 로그 파일을 읽어 들인다.
container 도커 같은 컨테이너 로그를 수집하기 위한 입력으로 파일을 읽어 들인다는 점에서 log와 유사
s3 아마존 웹 서비스의 S3 버킷에 위치한 파일을 읽어 들인다.
kafka 다른 타입과는 다르게 파일을 읽어 들이는 대신 카프카의 토픽을 읽어 들인다.

 

가지고 온 데이터에 대해서는 어떻게 내보낼 수 있을까? 파일비트는 엘라스틱서치로 보내는 것 뿐만 아닌, 로그스태시, 카프카, 콘솔을 통하여 내보내기도 가능하다.

 

아웃풋 타입 설명
elasticsearch 가장 많이 사용되는 타입, 수집한 이벤트를 엘라스틱서치로 직접 인덱싱한다.
logstash 복잡한 로그를 다시 필터링 하여 사용하기 위하여 로그스태시로 보내서 단순한 로그로 만들 수 있다.
kafka 파일비트에서 1차적으로 수집한 이벤트를 카프카로 보낼 수 있다.
console 수집한 이벤트를 시스템 콘솔에 출력한다.

 

인풋과 아웃풋에 대해서 설정되어진 파일비트가 과연 단순히 로그만 보낼 수 있을까? 파일비트는 로그를 보내기 위하여 몇가지 설정으로 적게나마 필터링처리하여 로그를 보낼 수 있다.

 

필터링 옵션 설명
ignore_older 새로운 파일 탐색 시 오래된 파일은 읽어 들이지 않고 무시하기 위한 설정
include_lines 특정 라인을 정규 표현식을 이용하여 필터링하고 매칭된 라인만 비츠에서 수용한다.
exclude_lines 특정 라인을 정규 표현식을 이용하여 필터링하고 매칭된 라인은 비츠에서 제외한다. 
multiline 패턴을 주어서 로그를 한줄로 이어지게 만든다.

지금까지 파일비트에 대한 설정을 알아보았다. 그러나 설정 하나하나를 다 입력하기에는 시간이 걸리고, 관리 포인트도 늘어난다. 이러한 이슈에 대해서 엘라스틱은 모듈이라는 것을 지원한다.


모듈

모듈은 많이 사용되고 잘 알려진 시스템 데이터를 수집하기 위한 일반적인 설정을 사전 정의해 놓은 것이다. 모듈에 대해서도 각 비트에 대해 많이 존재하지만, 책에서는 파일비트와 마찬가지로 모듈도 파일비트 모듈만 설명을 하고 있다.


파일비트 모듈

파일비트 모듈은 aws, cef, cisco, elasticsearch, googleclud, logstash 여러가지 모듈들이 있다.

모듈 설명
aws aws의 cloudWatch, cloudTrail 같은 서비스에서 발생하는 로그들을 수집할 수 있다.
cef 시스로그를 통해 cef(common event format) 이벤트를 입력받을 수 있다.
cisco 시스코사의 네트워크 장비에서 발생되는 이벤트를 수집한다.
elasticsearch 엘라스틱서치의 클러스터, GC, 감사로그 등을 수집할 때 사용한다.
googleclude 구글 클라우드 플랫폼의 VPC 플로우, 방화벽 로그 등을 수집할 수 있다.
logstash 로그스태시에서 발생한 로그들을 수집할 수 있다.

이러한 파일비트 모듈의 동작 과정도 파일비트 과정과 비슷하다. 과정은 아래와 같다.

 

1. 비트를 다운로드 한다. -> 2. 비트 설정 파일을 수정한다. -> 3.모듈을 활성화하고 모듈 설정 파일을 수정한다. -> 4. 엘라스틱서치와 키바나 대시보드를 사용할 수 있게 설정한다. -> 5. 비트를 시작한다. -> 6. 키바나 대시보드에서 데이터를 확인한다.

 

모듈에 대한 것은 설정 없이 간단하게 비트를 사용하려는 목적으로 출발했기 때문에 실제 설정 파일 작성은 매우 간단하다. 즉 모듈을 이용하면 손쉽게 비트를 동작시켜 파일을 수집할 수 있다.

 

파일비트 모듈에 대해서는 짧게 소개만으로 끝낸다. 이상입니다.


회고

 지난 시간에는 로그스태시에 대해서 알아보았고, 요번에는 파일비트에 대해서 알아보았습니다. 방대한 로그스태시와 다르게 빠르게 로그 및 수집기를 간단하게라도 수집하기 위하여 사용하면 매우 좋다고 생각합니다. 즉, 비트의 소개에서 첫 말인 경량 로그 수집기라는 부분이 맞는 것 같습니다.

 

 궁금한 점은 비트를 통하여 카프카로 이벤트를 보내는 경우는 어떤 경우가 있는지가 궁금해지고, 어플리케이션을 통하여 카프카로 이벤트를 보내는게 아닌, 비트를 통하여 그리고 로그 스태시를 통하여 이벤트를 보낼 때 무슨 이점이 있는지 궁금합니다.