본문 바로가기
개발의 기록/Server

Fluentd를 이용한 로그 수집 서버 구성

by prographer J 2015. 11. 13.
728x90

서버를 Scale out하기 위해서는 가각 서버의 데이터를 통합해야 할 필요성이 있다. 그래서 로그를 수집하고 통합하는 로그 서버를 구성하게 되었다.


구성에 앞서 여러가지 제품을 찾아봤지만 Fluentd가 가장 좋은듯(?) 하여 테스트를 해 보았다.


구성은 다음과 같이 구성을 하였다.




서버는 자바로 구정되어서 자바 플러그인 메이븐이나 그래들을 이용하면 간단하게 설치가 된다.(repository)


1. 서버 설치

   서버에 Fluentd를 설치하기전에 환경 설정을 해줄 것이 있다. 

   NTP설정, ulimit 사이즈 조절, 네트워크 파라메터 조절등이 있는데 http://docs.fluentd.org/articles/before-install 여기를 보면서 설정 하면 된다 ㅋ


  환경 설정이 끝나면 sh을 다운 받아 설치하면되는데 그전에 yum을 업그레이드 한번 해주다. 이걸 안할경우 설치가 안될경우가 생기더라...

$ yum upgrade


//설치

$ curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh



2. 환경설정

  설치가 완료되면 /etc/td-agent/td-agent.conf라는 환경 파일이 기본 셋팅이 되고 이 부분을 수정해서 사용하던가 다시 만들어서 사용하면 된다.


  chkconfig td-agent on


 를 이용하여 실행 등록도 해주자 ㅋ



이제 본격적으로 연결을 해보자.


- java 서버의 api 사용방법

//static 변수 설정
private static FluentLogger viewCountLogger = FluentLogger.getLogger("s3.logs.ad");

//함수에서 
viewCountLogger.log("view", ObjectUtil.toMap(adData));

//tag값이 s3.logs.ad.view로 설정된다. 이 태그 값은 match에 설정시 사용한다.

- Java와 같은 머신에 있는 Fluentd 환경 설정

<source>
  type forward
  port 24224
</source>

<match s3.logs.ad.*>
  type forward

  <server>
    name logserver
    host xxx.xxx.xxx.xxx
    port 24224
  </server>

  #환경설정은 http://docs.fluentd.org/articles/out_forward 에서 확인 가능
  flush_interval 1
  send_timeout 60
  heartbeat_type udp
  heartbeat_interval 1
  recover_wait 10
  hard_timeout 60
  expire_dns_cache nil
  phi_threshold 16
  phi_failure_detector true

</match>

- Log Server Fluentd 환경 설정

<source>
  type forward
  port 24224
  bind 0.0.0.0
</source>

<match s3.logs.ad.*>
  type s3

  aws_key_id xxxxxxxxxxxx
  aws_sec_key xxxxxxxxxxxxxx
  s3_bucket bucket_name

  path ad/
  buffer_path /var/log/td-agent/s3/ad

  time_slice_format %Y%m%d%H
  time_slice_wait 10m
  timezone "Asia/Seoul"
  buffer_chunk_limit 256m
</match>

여기서 주의 할 점은, 로그서버에서 주의할 점은 udp로 heart bit을 체크하기 때문에 24224번 udp 포트를 방화벽에서 열어줘야 한다.

728x90

댓글