7.6.0 릴리즈 버전 기준으로 작성

==

 

GO 언어로 개발됨.

 

두 가지 메인 컴포넌트가 존재한다.

- Harvester(이하 하베스터)

- Input(이하 인풋)

 

1. 하베스터

- 파일 하나를 읽는 역할.

- 읽기 작업은 줄 단위로 이루어짐.

- 다수의 하베스터가 존재할 수 있으며, 하나의 파일은 하나의 하베스터가 담당한다.

- 파일 open/close 를 책임진다 (하베스터가 동작 중 == 파일이 열려 있음).

- 하베스터 동작 중에 파일이 삭제되어도 Filebeat는 파일을 계속 읽는다 (하베스터가 작업을 종료하기 전까지는 해당 디스크 공간은 점유하고 있음).

- 기본적으로 close_inactive 전까지는 파일은 open 상태임.

 

하베스터의 작업 종료는 다음으로 귀결된다.

- 하베스터의 읽기 작업 중 파일이 삭제되었다면, 파일 핸들러가 닫히고 관련 리소스를 해제한다.

- 하베스터의 다음 작업은 scan_frequency가 경과해야만 시작된다 (하베스터 close -> scan_frequency 도달 -> 파일이 갱신되었음을 확인 -> 새 하베스터를 시작).

- 하베스터가 종료된 동안 파일이 삭제되었다면 하베스터는 해당 파일에 대한 작업을 재개하지 않는다.

 

- 언제 하베스터가 작업을 종료할 것인지는 close_* 설정을 통해 제어할 수 있다.

 

2. 인풋

- 예전 버전의 Filebeat 에서는 prospector였다 (이름이 바뀜).

- 하베스터를 관리하고, 하베스터가 어디에서 파일을 읽을 것인지 소스를 관리한다.

- 여러 개의 인풋이 존재할 수 있으며, 각각의 인풋을 저마다의 고루틴을 가진다.

- 대표적으로 사용되는 인풋인 log는 대상 파일에 하베스터가 작업할(읽어들일) 내용이 있는지, 이미 작업중인지, 혹은 무시할 수 있는 파일인지(ignore_older 설정) 확인한다. 하베스터의 마지막 작업 후 파일의 사이즈가 변경되었다면, 새로운 라인만을 읽도록 한다.

 

Filebeat의 파일 상태 관리 방법

- 파일의 상태를 관찰하면서, 현 상태를 디스크의 레지스트리 파일에 기록하여 보존한다.

- 상태 정보는 Filebeat가 가동 중일 때는 각 인풋의 메모리에도 보관한다.

- 보존되는 파일 상태 정보에는 하베스터가 마지막으로 읽어들인 오프셋이 포함되어, 파일의 모든 라인이 잘 작업되었는지 기록된다.

- Filebeat를 재시작하면 레지스트리 파일에서 상태 정보를 메모리로 읽어들여 하베스터가 마지막으로 작업한 부분에서부터 다시 작업을 시작할 수 있도록 한다.

- Logstash 혹은 엘라스틱서치과 같은 output(이하 아웃풋)이 연결 불가 상태이면, Filebeat은 마지막으로 전송한 라인 정보를 보존하고 있다가 아웃풋으로의 연결이 확인되는 즉시 파일 읽기 작업을 재개한다.

- Filebeat는 각 인풋에 대해 작업한 파일을 식별할 수 있는 고유 식별 정보를 따로 보관한다 (파일 경로가 아님).

- 작업 파일이 많아질수록 파일 상태를 기록하는 레지스트리 파일이 커지게 된다. 레지스트리 파일이 비대해지는 현상에 대한 조치는 별도 설정을 통하여햐 한다.

 

Filebeat가 데이터 전송을 보장하는 방법

- Filebeat는 각 이벤트의 전송 상태도 레지스트리 파일에 기록한다.

- Filebeat가 아웃풋으로 이벤트 전송이 불가능하거나, 전송 확인 응답을 받지 못하면, 확인 응답을 받을 때까지 계속 전송을 시도한다.

- 이벤트 전송 중 Filebeat 프로세스가 정지되면, 아웃풋으로부터의 확인 응답을 기다리지 않고 즉시 정지된다.

- 전송 후 확인 응답을 받지 못한 상태로 남은 이벤트는 Filebeat 프로세스가 재시작되면 다시 전송 시도된다.

- 위 동작 방식으로, 각 이벤트는 최소 한 번은 아웃풋으로 전송될 것을 보장한다. 동시에, 한 이벤트는 중복으로 전송될 수 있다.

- shutdown_timeout 옵션을 통해 Filebeat 프로세스 정지 시 대기 시간을 설정할 수 있다.

'ELK+Filebeat' 카테고리의 다른 글

Filebeat 설정 파일 분리하기 (inputs, modules)  (0) 2020.02.15
Filebeat 공통 옵션  (0) 2020.02.15
Filebeat Log input 설정  (0) 2020.02.13
ELK-Filebeat 연동 기본 설정  (0) 2020.02.12

+ Recent posts