본문 바로가기
카테고리 없음

Fluentd

by Younji! 2017. 7. 28.

Fluentd is an open source data collector for unified logging layer.



API 서버에서 수집할 데이터와 DB 에 있는 데이터를 조합해 분석해야할 일이 생겨 Kafka 이벤트를 생성해 DB 로 Request 를 보내는 작업이 필요했는데, Fluentd 에서 제공하는 plugin이 있어 이를 활용했다. 다른 로그 수집기인 Logstash를 ElasticSearch 와 Kibana를 연동하기 위해 적용했었는데, 

Logstash는 아키텍쳐 적응에 대한 유연성과 연동 솔루션에 대한 호환성을 강조하고 있기 때문에 타 솔루션과 연동이 강하고 반면, Fluentd는 아키텍쳐의 단순성과 이를 기반으로 한 안정성을 초점을 두고 있다. 그래서 아키텍쳐 구성이나 설정이 간단하다.


라는 차이점이 있다고 한다. 해당 내용은 아래 참조 블로그에서 확인할 수 있다.


아주 간단했다. 물론 처음엔 로컬에서 테스트하는 것부터 전전긍긍하긴 했지만 



<match mysql.input>
  @type mysql_bulk
  host localhost
  database test_app_development
  username root
  password hogehoge
  column_names id,user_name,created_at,updated_at
  table users
  on_duplicate_key_update true
  on_duplicate_update_keys user_name,updated_at
  flush_interval 60s
</match>


fluentd 는 일단 tag 로 이벤트를 핸들링하는데 데이터를 수집하다가 buffer 태그에 flush_interval 이나 buffer 를 추가해야할 것이 있어 아래 간단하게 포스팅한다. 

https://docs.fluentd.org/v0.12/articles/buffer-plugin-overview


데이터 또는 로그를 fluentd 로 보내면 chunk 가 생성되는데 flush_interval 이나 buffer_chunk_limit 이 초과되면 큐로 해당 데이터가 보내진다.



플러그인 사용은 막상 간단하였는데, 도커 이미지로 빌드하려 올리는데 필요한 라이브러리들을 찾느라 애썼는데..


apt-get install default-libmysqlclient-dev && apt-get install libgssapi-krb5-2


두 라이브러리만 설치하면 이상 없다. 자세한 건 fluentd docker 파일 참조하면 아주 자세하게 작성되어 있다. 


회사 블로그에 포스팅한 URL: https://dailyhotel.io/fluentd%EC%99%80-%ED%95%A8%EA%BB%98%ED%95%98%EB%8A%94-%EA%B2%80%EC%83%89-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%88%98%EC%A7%91-b76932a8dc2a





참조 URL : 

https://logz.io/blog/fluentd-logstash/

http://bcho.tistory.com/search/logstash

https://www.fluentd.org/plugins

https://github.com/tagomoris/fluent-plugin-mysql

댓글