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
댓글