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

==

 

Filebeat는 lumberjack 프로토콜(over TCP)을 통해 Logstash(이하 로그스태시)로 다이렉트로 이벤트 전송이 가능하다.

 

로그스태시를 아웃풋으로 두려면 엘라스틱서치 아웃풋은 사용하지 않아야 한다. 그리고 아래와 같이 로그스태시 url을 설정한다.

output.logstash:
  hosts: ["127.0.0.1:5044"]

이 설정을 위해서는 반드시 엘라스틱서치 인덱스 템플릿을 로드해야 한다. 인덱스 템플릿을 자동으로 불러오는 옵션은 엘라스틱서치 아웃풋일 때만 작동한다.

 

 

옵션

아래 옵션들은 filebeat.yml 의 logstash 섹션에 지정한다.

 

 

enabled (디폴트: true)

이 아웃풋을 활성화하는지 지정한다. 아웃풋을 사용하지 않으려면 false로 세팅한다.

 

 

hosts

Filebeat가 연결할 로그스태시 서버 주소를 설정한다. 로드밸런싱 적용 시 둘 이상의 호스트를 설정한다. 디폴트 포트는 5044가 된다.

 

 

compression_level (디폴트: 3, 사용안함: 0)

gzip 압축 레벨을 설정한다. 압축을 사용하지 않으려면 0 을 세팅한다. 세팅 범위는 1~9이다. 값이 낮을수록 압축률은 떨어지고 속도는 올라간다. 높을수록 네트워크 사용량을 줄어들지만 cpu 사용률이 올라간다.

 

 

escape_html (디폴트: false)

HTML 문자열 이스케이핑 설정. true로 세팅하면 이스케이핑을 활성화한다.

 

 

worker

logstash로 이벤트를 전송하는 워커의 수를 설정한다. 설정되는 수는 host 당 워커의 수이다. 2개의 호스트를 설정하고 worker 값이 3이라면 총 워커의 수는 6이 된다.

 

 

loadbalance (디폴트: false)

다수의 호스트를 설정하고 이 옵션을 true로 세팅하면 로드밸런싱을 활성화한다. 어떤 호스트로 이벤트를 전송할지는 랜덤으로 결정되며, 우선순위는 없다. 다수의 호스트를 설정하더라도 이 옵션값이 false이면 로드밸런싱은 적용되지 않고, 설정된 호스트 중 오직 한 호스트로만 모든 이벤트를 전송한다 (이 때의 대상 호스트도 랜덤으로 결정). 그리고 그 호스트의 응답이 없을 경우 다른 호스트로 전송을 시도한다.

예:

output.logstash:
  hosts: ["localhost:5044", "localhost:5045"]
  loalbalance: true
  index: filebeat

호스트로의 로드밸런싱은 커넥션 레벨에서 이루어진다. 이벤트 레벨이 아니다. 이벤트는 한 번 맺어진 커넥션으로만 고정적으로 전송되며, 로드밸런싱은 로그스태시로의 기존 커넥션이 끊어지고 커넥션을 다시 맺을 때 어떤 호스트로 커넥션을 맺을지 결정하는 과정에 적용된다.

 

 

ttl (디폴트: 0 (사용안함))

로그스태시 호스트로의 커넥션 유지 시간을 설정한다. 로드밸런싱을 적용할 때 유용하다. 로그스태시로의 커넥션은 sticky하기 때문에, 로드밸런싱의 목적인 커넥션의 분산이 고르지 못하게 이루어질 수 있다. 이 옵션을 설정함으로써 일정 시간 후 커넥션을 끊었다가 다시 맺도록 하여, 커넥션이 고루 분산되도록 할 수 있다.

 

이 옵션은 async 로그스태시 클라이언트에는 아직 지원되지 않는다 ("pipelining" 옵션).

 

 

pipelining (디폴트: 2, 사용안함: 0)

로그스태시로부터의 ACK를 기다리는 동안 비동기로 전송할 이벤트 묶음(batch)의 수를 설정한다. 아웃풋은 많은 수의 pipelining 묶음이 한 번 작성될 때 블로킹된다.

 

 

proxy_url

로그스태시로 연결 시 SOCKS5 프록시를 사용할 URL을 설정한다. 설정 URL은 반드시 socks5:// 스킴을 포함해야 한다. 로그스태시로의 연결은 HTTP 기반이 아니기 때문에, web-proxy는 사용할 수 없다.

 

SOCKS5 프록시가 클라리언트 인증을 요구하는 경우, username, password는 아래와 같이 URL에 포함시킬 수 있다.

프로시를 사용할 때는 호스트 이름은 클라이언트가 아닌, 프록시 서버로 리졸빙되어야 한다. 이 설정은 proxy_use_local_resolver 옵션으로 설정한다.

 

예:

output.logstash:
  hosts: ["remost-host:5044"]
  proxy_url: socks5://user:password@socks5-proxy:2233

 

 

proxy_usr_local_resolver (디폴트: false)

프록시를 사용할 때, 로그스태시 호스트 이름이 로컬에서 리졸빙되도록 설정한다. 디폴트는 false로, 즉 프록시를 사용하면서 호스트 이름의 리솔루션은 프록시 서버에서 수행한다는 의미이다.

 

 

index

이벤트에 작성할 인덱스 루트 이름을 설정한다. 디폴트는 Beat 이름이 된다.

 

 

ssl

로그스태시 연결을 위한 SSL 파라미터 옵션을 설정한다 (예: root CA). SSL을 사용하려면 반드시 로그스태시의 비트 인풋 플러그인 설정을 통해 SSL/TLS를 사용해야 한다.

 

 

timeout (디폴트: 30 (초))

로그스태시 서버와의 타임아웃을 시간을 초 단위로 설정한다. 여기에 설정된 시간동안 로그스태시 호스트로부터 응답이 없으면 타임아웃.

 

 

bulk_max_size (디폴트: 2048, 사용안함: value <= 0 )

로그스태시로의 한 번의 요청에 담길 수 있는 이벤트의 최대 개수를 설정한다. Beat가 보내는 하나 하나의 이벤트들은 모아져서 묶음이 되는데, Beat가 bulk_max_size의 값을 넘어서는 이벤트 묶음을 발행하면 이 묶음을 쪼갠다.

 

이벤트 묶음을 더 크게 설정하면, 이벤트 전송 횟수가 줄어들고, 결국 이벤트 전송 시 발생하는 오버헤드가 줄어들어 성능을 향상시킬 수 있다. 하지만 동시에, 큰 이벤트 묶음은 처리 시간을 늘어나게 할 수 있는데, 이는 API 에러, 커넥션의 끊어짐, 요청 타임아웃 등의 원인이 되어 결과적으로 처리량에 악영향을 미치게 된다.

 

bulk_max_size에 0 보다 작거나 같은 값을 설정하여 이 기능을 비활성화하면, 한 이벤트 묶음에 포함될 이벤트의 수는 큐가 결정하게 된다.

 

 

slow_start (디폴트: false)

true로 설정 시, 트랜잭션 당 한 이벤트 묶음의 부분 집합만을 전송한다. 에러가 없다면 전송되는 이벤트의 수는 최대 bulk_max_size까지 증가한다. 에러 발생 시 전송되는 이벤트의 수는 다시 줄어든다.

 

 

backoff.init (디폴트: 1s)

네트워크 에러 발생 후 로그스태시로의 재연결을 시도하기까지 대기하는 시간을 초 단위로 설정한다. 재연결 시도가 실패하면 대기 시간은 재연결 시도 횟수에 비례하여 증가하는데, 최대 backoff.max까지 증가한다. 연결에 성공하면 타이머는 리셋된다.

 

 

backoff.max (디폴트: 60s)

네트워크 에러 발생 후 로그스태시로의 재연결을 시도하기까지 대기하는 시간의 최대치를 설정한다.

 

+ Recent posts