fluentdやnorikraを使った データ集約基盤への取り組み紹介

32
FluentdNorikraを使った データ集約基盤への取り組み紹介 Hadoop Conference Japan 2014 LT 添田健輔 そえだけんすけ

Upload: recruit-technologies

Post on 31-May-2015

7.612 views

Category:

Technology


3 download

DESCRIPTION

Hadoop Conference Japan 2014 LTの資料になります。

TRANSCRIPT

Page 1: FluentdやNorikraを使った データ集約基盤への取り組み紹介

FluentdやNorikraを使った データ集約基盤への取り組み紹介

Hadoop Conference Japan 2014 LT

添田健輔 そえだけんすけ

Page 2: FluentdやNorikraを使った データ集約基盤への取り組み紹介

    そえだ けんすけ

!  添田 健輔

!  Twitter:@soestudio

!  所属:リクルートテクノロジーズ

!  イクメンエンジニア

自己紹介

Page 3: FluentdやNorikraを使った データ集約基盤への取り組み紹介

資料の要約

データ集約にはFluentdを、 自動復旧にmonitを、 データ可視化にelasticsearch, kibanaを、 異常値検知にNorikraを、 ポータビリティのためにdockerを使った話し。

データ集約基盤を作った話し

Page 4: FluentdやNorikraを使った データ集約基盤への取り組み紹介

資料の要約

データ集約基盤を作った話し

※Hadoopほとんど関係ない

Page 5: FluentdやNorikraを使った データ集約基盤への取り組み紹介

データ集約といえば

Page 6: FluentdやNorikraを使った データ集約基盤への取り組み紹介

Fluentd!

Page 7: FluentdやNorikraを使った データ集約基盤への取り組み紹介

http://docs.fluentd.org/articles/architecture

Page 8: FluentdやNorikraを使った データ集約基盤への取り組み紹介

Fluentd

http://docs.fluentd.org/articles/architecture

Page 9: FluentdやNorikraを使った データ集約基盤への取り組み紹介

Fluentd ! 超定番のログコレクタ / アグリゲータ。

! 各種データソースを各種データストアに出力可能。

!  Inputデータはタグで管理可能。

!  Json形式でデータを扱う。

! プラグインで自由に拡張可能。

Page 10: FluentdやNorikraを使った データ集約基盤への取り組み紹介

どのように使っているか?

Page 11: FluentdやNorikraを使った データ集約基盤への取り組み紹介

http://docs.fluentd.org/articles/architecture

Page 12: FluentdやNorikraを使った データ集約基盤への取り組み紹介

Beaconログ S3 Redshift

Page 13: FluentdやNorikraを使った データ集約基盤への取り組み紹介

やっていることは超シンプル!

データをかき集めて貯めるだけ。

※一部加工処理もあり

Page 14: FluentdやNorikraを使った データ集約基盤への取り組み紹介

•  データ集約 = Fluentd

•  自動復旧 = monit

•  データ可視化 = elasticsearch, kibana

•  異常値検知 = Norikra

•  ポータビリティ = docker

データ集約基盤の中身

Page 15: FluentdやNorikraを使った データ集約基盤への取り組み紹介

データ集約基盤の中身

•  データ集約 = Fluentd

•  自動復旧 = monit

•  データ可視化 = elasticsearch, kibana

•  異常値検知 = Norikra

•  ポータビリティ = docker

Page 16: FluentdやNorikraを使った データ集約基盤への取り組み紹介

•  fluent-plugin-record-reformer

•  fluent-plugin-secure-forward

•  fluent-plugin-flowcounter

•  fluent-plugin-dstat

•  fluent-plugin-elasticsearch

•  fluent-plugin-s3

•  fluent-plugin-redshift

Fluentdで使っているPlugin

Page 17: FluentdやNorikraを使った データ集約基盤への取り組み紹介

getconfig() サービスの起動時にカジュアルに設定ファイルをダウンロード。

getconfig(){ echo -n "Getting config file:” /usr/lib64/fluent/ruby/bin/ruby /etc/td-agent/download_config_file.rb RETVAL=$? if [ $RETVAL -eq 0 ]; then success else failure fi echo return $RETVAL }

td-agent.confの設定反映

Page 18: FluentdやNorikraを使った データ集約基盤への取り組み紹介

データ集約基盤の中身

•  データ集約 = Fluentd

•  自動復旧 = monit

•  データ可視化 = elasticsearch, kibana

•  異常値検知 = Norikra

•  ポータビリティ = docker

Page 19: FluentdやNorikraを使った データ集約基盤への取り組み紹介

サービスやプロセスを監視し、 自動メンテナンスや復旧を行うためのOSS

http://mmonit.con/monit/ monit

Page 20: FluentdやNorikraを使った データ集約基盤への取り組み紹介

monit Monitを使用して、万が一td-agentが  ダウンした際に自動復旧。

check process td-agent with pidfile /var/run/td-agent/td-agent.pid start program = "/etc/init.d/td-agent start" stop program = "/etc/init.d/td-agent stop" if 5 restarts within 5 cycles then timeout

自動復旧

Page 21: FluentdやNorikraを使った データ集約基盤への取り組み紹介

データ集約基盤の中身

•  データ集約 = Fluentd

•  自動復旧 = monit

•  データ可視化 = elasticsearch, kibana

•  異常値検知 = Norikra

•  ポータビリティ = docker

Page 22: FluentdやNorikraを使った データ集約基盤への取り組み紹介

elasticsearch + kibana fluent-plugin-elasticsearchで超簡単に可視化

データ可視化

Page 23: FluentdやNorikraを使った データ集約基盤への取り組み紹介

データ集約基盤の中身

•  データ集約 = Fluentd

•  自動復旧 = monit

•  データ可視化 = elasticsearch, kibana

•  異常値検知 = Norikra

•  ポータビリティ = docker

Page 24: FluentdやNorikraを使った データ集約基盤への取り組み紹介

SQLでスキーマレスなストリーム処理ができるOSS

Norikra http://norikra.github.io/

Page 25: FluentdやNorikraを使った データ集約基盤への取り組み紹介

Norikra td-agentのキューやバッファが溢れていないかを一定間隔でチェック

"queries": [ { "name": "view.monitor_agent.per_5min", "group": null, "expression": "SELECT * FROM monitor_agent.win:ext_timed_batch(timestamp * 1000, 300 sec)" } ]

キューやバッファ溢れ対策など

Page 26: FluentdやNorikraを使った データ集約基盤への取り組み紹介

データ集約基盤の中身

•  データ集約 = Fluentd

•  自動復旧 = monit

•  データ可視化 = elasticsearch, kibana

•  異常値検知 = Norikra

•  ポータビリティ = docker

Page 27: FluentdやNorikraを使った データ集約基盤への取り組み紹介

OSSのコンテナ管理ツール

docker http://www.docker.com/

Page 28: FluentdやNorikraを使った データ集約基盤への取り組み紹介

FROM centos MAINTAINER Kensuke Soeda <[email protected]> ADD gpg-key/GPG-KEY-td-agent /tmp/GPG-KEY-td-agent RUN rpm --import /tmp/GPG-KEY-td-agent ADD yum.repos.d/td.repo /etc/yum.repos.d/td.repo RUN yum install -y td-agent RUN sed -i 's/ulimit/# ulimit/' /etc/init.d/td-agent RUN cat /dev/null > /var/log/td-agent/td-agent.log RUN chown td-agent. -R /var/log/td-agent/ RUN chkconfig td-agent on EXPOSE 8888 EXPOSE 24224

docker runするだけでどっかーの環境でも再現可能に!!

Page 29: FluentdやNorikraを使った データ集約基盤への取り組み紹介

•  データ集約 = Fluentd

•  自動復旧 = monit

•  データ可視化 = elasticsearch, kibana

•  異常値検知 = Norikra

•  ポータビリティ = docker

まとめ データ集約基盤の中身

Page 30: FluentdやNorikraを使った データ集約基盤への取り組み紹介

•  td-agentは安定していて運用が楽。

•  これまでに特に大きな障害もなし。

•  データ可視化はes & kibanaが楽ちん。

•  Norikraは他にも使い道はいろいろありそう。

•  docker超便利。

どうだったか。

Page 31: FluentdやNorikraを使った データ集約基盤への取り組み紹介

•  td-agent2に置き換えていきたい。

•  Bigqueryなどにも本格的に貯めていきたい。

•  Treasure Agent Monitoring Serviceも試していきたい。

•  Norikraはリアルタイム集計用途で他サービスへも展開していきたい。

•  dockerは今後も各種アプリやプロセスの配布に使っていきたい。

今後どうしていきたいか。

Page 32: FluentdやNorikraを使った データ集約基盤への取り組み紹介

最後に