로그는 시스템이나 애플리케이션 상태 및 행위와 관련된 풍부한 정보를 포함.
일반적으로 로그를 처리하려면 필요한 정보를 수집하고 추출, 분석하는 과정이 필요
로그스태시는 주로 ETL(Extract, Transform, Load) 엔진으로 사용
로그 = 타임스탬프 + 데이터
로그스태시는 오픈소스 데이터 수집 엔진으로, 실시간 파이프라인 기능을 갖춤
로그스태시 핵심 특징
- 플러그형 데이터 파이프라인 아키텍처 : 플러그인은 데이터 처리를 위한 파이프라인 구축에 있어 다양한 입력, 필터, 출력을 혼합, 일치, 조율하는 데 사용
- 확장성 : JRuby 언어로 작성된 로그스태시는 플러그형 파이프라인 아키텍처를 지원하므로 사용자 요구 사항에 따라 맞춤형 플러그인을 손쉽게 구축
- 중앙 집중형 데이터 처리 : 로그스태시가 제공하는 여러 입력 플러그인을 사용해 서로 다른 자원에 위치한 데이터를 손쉽게 가져온 후, 데이터를 가공하고 변환해 다른 목적지로 보낼 수 있다.
- 다양성 및 볼륨 : 아파치 또는 엔진엑스 로그, 시스템 로그, 윈도우 이벤트 로그와 같이 모든 로그 타입을 처리할 수 있으며, TCP와 UDP를 기반으로 다양한 애플리케이션 플랫폼에서 로그를 수집할 수 있다. 기존의 관계형 데이터베이스와 NoSQL, Kafka, RabbitMQ 등 여러 큐에서 소비하는 데이터를 지원
로그스태시의 파이프라인은 입력, 필터, 출력이라는 세가지 구성요소로 이뤄진다. 입력과 출력은 필수이며, 필터는 옵션이다. 입력은 소스로부터 데이터를 받아들이는 모듈, 필터는 입력으로 들어오는 데이터를 원하는 형태로 가공하는 모듈, 출력은 데이터를 외부로 전달하는 모듈이다.
로그스태시는 기본적으로 파이프라인 단계(입력 → 필터, 필터 → 출력)마다 이벤트를 버퍼에 담기 위해 인메모리 바운드 큐를 사용.
(불안정한 상태로 종료되면 인메모리에 저장된 이벤트는 손실. 데이터 손실 방지를 위해 영구 큐를 사용해 실행중인 이벤트를 디스크에 유지할 수 있음)
(영구 큐는 ‘로그스태시 설치경로/config’ 디렉터리 아래에 있는 logstash.yml 파일에서 queue.type: persisted 속성을 설정하면 활성화 할 수 있다.)
(기본적으로 로그스태시의 힙 크기는 1GB를 사용하므로 ‘로그스태시 설치경로/config’ 디렉터리 아래에 있는 jvm.options 파일에서 Xms와 Xmx 속성을 사용해 변경)
입력 (Input)
로그스태시의 입력은 file, syslog, kafka, jdbc에서 입력을 받게 된다.
입력 플러그인 설명
file | 리눅스의 tail -f 명령처럼 파일을 스트리밍하며 이벤트를 읽어 들인다. |
syslog | 네트워크를 통해 전달되는 시스로그를 수신한다. |
kafka | 카프카의 토픽에서 데이터를 읽어 들인다, |
jdbc | JDBC 드라이버로 지정한 일정마다 쿼리를 실행해 결과를 읽어 들인다. |
필터(Filter)
필터는 받은 데이터를 의미 있는 데이터로 구조화하는 역할을 한다. 즉, 비정형 데이터를 정형화하고 데이터 분석을 위한 구조를 잡아준다.
필터 플러그인 설명
grok | grok 패턴을 사용해 메시지를 구조화된 형태로 분석한다. grok 패턴은 일반적인 정규식과 유사하나, 추가적으로 미리 정의된 패턴이나 필드 이름 설정, 데이터 타입 정의 등을 도와준다. |
dissect | 간단한 패턴을 사용해 메시지를 구조화된 형태로 분석한다. 정규식을 사용하지 않아 grok에 비해 자유도는 조금 떨어지지만 더 빠른 처리가 가능하다. |
mutate | 필드명을 변경하거나 문자열을 처리 등 일반적인 가공 함수들을 제공한다. |
date | 문자열을 지정한 패턴의 날짜형으로 분석한다. |
Geoip | 로그 정보를 강화 하는데, 사용 IP주소 있을때 Geoip 필터를 활요해 IP 주소의 위치 정보 추가 가능 |
출력(Output)
출력은 파이프라인의 입력과 필터를 거쳐 가공된 데이터를 지정한 대상으로 내보내는 단계다. 파이프라인의 마지막 단계이다.
출력 플러그인 설명
elasticsearch | 가장 많이 사용되는 출력 플러그인으로, bulk API를 사용해 엘라스틱서치에 인덱스을 수행한다. |
file | 지정한 파일의 새로운 줄에 데이터를 기록한다. |
kafka | 카프카 토픽에 데이터를 기록한다. |
코덱 플러그인 : 로그스태시에 나가고 들어오는 이벤트를 인코딩하거나 디코딩하는 데 사용
로그스태시 실행 시 -r 옵션을 지정하면 설정을 변경하고 저장할 때마다 자동으로 환경 설정 파일을 다시 로드.
'Engineering WIKI > Docs' 카테고리의 다른 글
DAO, DTO, VO, Entity 개념 뿌수기! (3) | 2023.09.21 |
---|---|
Reverse Proxy, Forward Proxy 개념 뿌수기! (1) | 2023.08.19 |
CIDR / 사이더 개념 뿌수기! (2) | 2023.08.18 |
@Retention 어노테이션 개념 뿌수기 (RetentionPolicy SOURCE vs CLASS vs RUNTIME) (0) | 2023.08.17 |
Gradle 개념 (0) | 2023.05.29 |
SOLID 5가지 설계 원칙 (0) | 2023.05.27 |
퍼사드 패턴 (Facade Pattern) 개념 및 코드 예제 (0) | 2022.12.30 |
Redis 뿌수기! (0) | 2022.12.30 |