Fluentd Test
728x90

CPU 사용량을 확인해 보려고 Test를 해봤다.

테스트 툴 Jmeter(인위적 request)

테스트 총 flush_thread, request 수 : 1개 , 10000 request

테스트 시 사용한 url : Test할 url

사용한 config 설정

<source>
 @type tail
 @log_level warn
 <parse>
  @type none
 </parse>
 path <path>
 pos_file <path>/<fileName>.log.pos
 tag access
</source>

<match access>
 @type azurestorage

 azure_storage_account    <azure storage account>
 azure_storage_access_key <azure storage key>
 azure_container          platformlogs
 azure_storage_type       blob
 store_as                 text
 auto_create_container    true
 path                     <path>
 azure_object_key_format  %{path}%{time_slice}_%{index}.%{file_extension}
 time_slice_format        %Y-%m-%d
 # if you want to use ${tag} or %Y/%m/%d/ like syntax in path / s3_object_key_format,
 # need to specify tag for ${tag} and time for %Y/%m/%d in <buffer> argument.
 <buffer tag,time>
   @type file
   flush_mode interval
   flush_at_shutdown true
   flush_thread_count 1
   chunk_limit_size 1m
   flush_interval 60
   path <path>
   timekey 1h # 1시간 주기로 chunk 파일 생성 timekey 60: ["12:00:00", ..., "12:00:59"] default 10m
   timekey_wait 1m
   timekey_use_utc true # use utc
 </buffer>
</match>

전과 달라진 buffer 설정

<buffer tag,time>
   @type file
   flush_mode interval
   flush_at_shutdown true
   flush_thread_count 1
   chunk_limit_size 1m
   flush_interval 60
   path /var/log/fluent/access/azurestorageappendblob
   timekey 1h # 1시간 주기로 chunk 파일 생성 timekey 60: ["12:00:00", ..., "12:00:59"] default 10m
   timekey_wait 1m
   timekey_use_utc true # use utc
 </buffer>

flush_mode interval : interval 모드를 쓰면 밑에 설정한 flush_interval 의 시간이 흐르면 flush 를 해버림

flush_thread_count 1 : flush를 하는데 사용할 스레드 수

chunk_limit_size : chunk 파일의 제한 용량을 정함. 정한 용량을 넘어가면 자동으로 flush

flush_interval : 설정한 시간 10m, 10분 씩 지날 때 마다 자동으로 flush 함.

timekey :  1시간 마다 로그를 chunk 파일로 묶음

timekey_wait : time_key에서 설정한 시간이 지나고 flush 요청이 갈 때 몇 분 정도 기다렸다가 flush 할지의 시간

이러한 설정을 한 이유 :

time_key 나 flush_interval의 경우는 default인 시간이 있기 때문에(10분, 1분) 설정을 하지 않은 채로 만들면 10분마다 chunk 파일을 flush 하고 1분마다 flush 요청을 보내므로 CPU 사용률이 올라간다.

그리고 chunk_limit_size를 줘서 default 설정인 8MB를 하면 azure storage에 쌓이는 시간이 오래 걸릴 것이라고 생각이 되어( 1만건 정도 하는데 1400KB정도 되는 용량이 10분 정도 걸림) 1MB로 설정 하였다.

Request 보내기 전 CPU 사용률 ( COMMAND ruby를 보면 된다.)

10kb의 chunk_limit_size를 줬을 때 사용률( COMMAND ruby를 보면 된다.)

이 상태에서 2만건 정도의 요청을 하면 CPU 사용률은 78퍼센트까지 뛰어오른다.

그 반면에 1MB 정도의 사이즈의 chunk_limit_size 와 interval 모드 , interval 1분 , timekey 1h 를 했을 때의 사용률은 평소와 거의 변동이 없다.

 

728x90

'Fluentd > 적용' 카테고리의 다른 글

Fluentd + Azure Loganalytics  (0) 2022.07.25
Fluentd Installation ( ruby gem )  (0) 2022.07.25
Fluentd access log 500 에러만 남기기  (0) 2022.06.23
Fluentd + MongoDB  (0) 2022.05.10
Fluentd + Newrelic  (0) 2022.04.29