해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 6장을 정리하여 쓴 글입니다.
로그스태시란?
일단 로그는 성능, 오류, 도작 과정 등의 중요한 정보를 담고 있다. 이러한 로그는 일반적으로 시스템 동작의 모든 행위나 이벤트를 기록해야 한다. 그리고 이 로그는 빅데이터에서는 로그 정보를 데이터 분석에 활용하기도 한다.
많은 어플리케이션에 대한 로그를 하나로 모은다고 했을때 로그는 반정형데이터라서 어플리케이션마다 설정하지 않으면 다르게 찍히게 된다.
로그 스태시는 1) 이러한 로그들을 수집, 정제하여 한눈에 보기 좋도록 만들어준다. 추가로 장애 대응 로직이나 성능 저하 요인을 쉽게 파악할 수 있는 모니터링 API, 간단한 조정으로 성능을 튜닝할 수 있는 파라미터들도 제공한다. 2) 로그스태시는 비츠, 로그스태시, 엘라스틱서치, 키바나를 이용해 데이터를 수집 - 변환 - 저장 시각화하는 서비스를 구성할 수 있다.
로그스태시 특징
- 플로그인 기반으로 확장성이 뛰어나다.
- 모든 형태의 데이터(JSON, XML 등) 처리를 한다.
- 성능 : 메모리와 파일 기반의 큐를 사용하므로 처리속도와 안전성이 좋다.
- 안정성 : 재시도 로직이나 오류가 발생한 도큐먼트를 따로 보관하는 레드 레터 큐를 내장하고 있다.
로그스태시 파이프라인
처음 로그스태시를 소개할 때 로그스태시는 수집 - 변환 - 저장 시각화하는 서비스라고 했다. 로그스태시는 로그들을 수집, 변환, 저장을 파이프라인을 통해서 해준다.
로그스태시의 파이프라인은 입력, 필터, 출력이라는 세가지 구성요소로 이뤄진다. 입력과 출력은 필수이며, 필터는 옵션이다. 입력은 소스로부터 데이터를 받아들이는 모듈, 필터는 입력으로 들어오는 데이터를 원하는 형태로 가공하는 모듈, 출력은 데이터를 외부로 전달하는 모듈이다.
입력 (Input)
로그스태시의 입력은 file, syslog, kafka, jdbc에서 입력을 받게 된다.
입력 플러그인 | 설명 |
file | 리눅스의 tail -f 명령처럼 파일을스트리밍하며 이벤트를 읽어 들인다. |
syslog | 네트워크를 통해 전달되는 시스로그를 수신한다. |
kafka | 카프카의 토픽에서 데이터를 읽어 들인다, |
jdbc | JDBC 드라이버로 지정한 일정마다 쿼리를 실행해 결과를 읽어 들인다. |
필터(Filter)
필터는 받은 데이터를 의미 있는 데이터로 구조화하는 역할을 한다. 즉, 비정형 데이터를 정형화하고 데이터 분석을 위한 구조를 잡아준다.
필터 플러그인 | 설명 |
grok | grok 패턴을 사용해 메시지를 구조화된 형태로 분석한다. grok 패턴은 일반적인 정규식과 유사하나, 추가적으로 미리 정의된 패턴이나 필드 이름 설정, 데이터 타입 정의 등을 도와준다. |
dissect | 간단한 패턴을 사용해 메시지를 구조화된 형태로 분석한다. 정규식을 사용하지 않아 grok에 비해 자유도는 조금 떨어지지만 더 빠른 처리가 가능하다. |
mutate | 필드명을 변경하거나 문자열을 처리 등 일반적인 가공 함수들을 제공한다. |
date | 문자열을 지정한 패턴의 날짜형으로 분석한다. |
출력(Output)
출력은 파이프라인의 입력과 필터를 거쳐 가공된 데이터를 지정한 대상으로 내보내는 단계다. 파이프라인의 마지막 단계이다.
출력 플러그인 | 설명 |
elasticsearch | 가장 많이 사용되는 출력 플러그인으로, bulk API를 사용해 엘라스틱서치에 인덱스을 수행한다. |
file | 지정한 파일의 새로운 줄에 데이터를 기록한다. |
kafka | 카프카 토픽에 데이터를 기록한다. |
다중 파이프라인
로그스태시는 하나의 파이프라인에서만 동작하는게 아닌 여러개의 파이프라인을 실행시키도록 다중파이프라인을 실행하도록 한다. 이러한 파이프라인은 설정에 따라 input, filter, output을 따로 놓음으로써 하나의 로그 스태시로 여러 파이프라인에 대한 로그를 출력할 수 있게한다.
사진과 같이 두개의 Filebeat를 하나의 로그스태시를 통하여 두개의 Filebeat 로그를 만들어 엘라스틱서치에 저장한다.
모니터링
로그스태시가 제공하는 API를 활용해 특정 시점의 통계 정보를 얻는 방법과 모니터링 기능을 활성화해서 지속적인 통계 정보를 수집하고, 키바나를 통해 대시보드 형태로 연속적인 모니터링을 수행할 수 있다. 모니터링 방법으로는 API를 통하여 확인하는 방법, 키바나를 통하여 확인하는 방법이 있다.
회고
로그스태시에 대해서 정리를 해보았습니다. 로그스태시를 직접적으로 사용하고 있지는 않은 상태이지만, 로그스태시를 사용한다면 어떻게 사용할 것인지 생각을 해봤는데요.
- 솔루션에 대한 각 사이트별 로그 수집
- MSA 환경내에서 A라는 클라이언트가 어떤 어플리케이션에 대해 API를 요청했는지에 대한 파이프라인 로그수집
- 로드 밸런서로 되어진 이벤트 페이지에 대해 얼마나 많은 사람이 요청을 처리했는지에 대한 로그수집
- 트랜잭션별 로그 수집
- etc
이렇게 많은 부분을 수집 할 수 있을 것 같습니다. 그리고 이러한 사용방법이 input, filter, output 과정에서 어떻게 튜닝하느냐, 어떤 플러그인을 쓰느냐에 많이 달라질 것 같습니다.
'ELK > ELK 개발부터 운영까지' 카테고리의 다른 글
비트(beat) (0) | 2022.03.28 |
---|---|
Logstash config directory 위치(brew 설치 시) (0) | 2022.03.22 |
살려줘!! HyperLogLog (2) | 2022.03.18 |
엘라스틱서치(elasticsearch) 집계 (0) | 2022.03.09 |
엘라스틱서치(elasticSearch) 검색 - 2부 (0) | 2022.03.02 |