fluentdやnorikraを使った データ集約基盤への取り組み紹介
DESCRIPTION
Hadoop Conference Japan 2014 LTの資料になります。TRANSCRIPT
![Page 1: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/1.jpg)
FluentdやNorikraを使った データ集約基盤への取り組み紹介
Hadoop Conference Japan 2014 LT
添田健輔 そえだけんすけ
![Page 2: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/2.jpg)
そえだ けんすけ
! 添田 健輔
! Twitter:@soestudio
! 所属:リクルートテクノロジーズ
! イクメンエンジニア
自己紹介
![Page 3: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/3.jpg)
資料の要約
データ集約にはFluentdを、 自動復旧にmonitを、 データ可視化にelasticsearch, kibanaを、 異常値検知にNorikraを、 ポータビリティのためにdockerを使った話し。
データ集約基盤を作った話し
![Page 4: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/4.jpg)
資料の要約
データ集約基盤を作った話し
※Hadoopほとんど関係ない
![Page 5: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/5.jpg)
データ集約といえば
![Page 6: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/6.jpg)
Fluentd!
![Page 7: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/7.jpg)
http://docs.fluentd.org/articles/architecture
![Page 8: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/8.jpg)
Fluentd
http://docs.fluentd.org/articles/architecture
![Page 9: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/9.jpg)
Fluentd ! 超定番のログコレクタ / アグリゲータ。
! 各種データソースを各種データストアに出力可能。
! Inputデータはタグで管理可能。
! Json形式でデータを扱う。
! プラグインで自由に拡張可能。
![Page 10: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/10.jpg)
どのように使っているか?
![Page 11: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/11.jpg)
http://docs.fluentd.org/articles/architecture
![Page 12: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/12.jpg)
Beaconログ S3 Redshift
![Page 13: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/13.jpg)
やっていることは超シンプル!
データをかき集めて貯めるだけ。
※一部加工処理もあり
![Page 14: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/14.jpg)
• データ集約 = Fluentd
• 自動復旧 = monit
• データ可視化 = elasticsearch, kibana
• 異常値検知 = Norikra
• ポータビリティ = docker
データ集約基盤の中身
![Page 15: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/15.jpg)
データ集約基盤の中身
• データ集約 = Fluentd
• 自動復旧 = monit
• データ可視化 = elasticsearch, kibana
• 異常値検知 = Norikra
• ポータビリティ = docker
![Page 16: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/16.jpg)
• 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を使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/17.jpg)
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を使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/18.jpg)
データ集約基盤の中身
• データ集約 = Fluentd
• 自動復旧 = monit
• データ可視化 = elasticsearch, kibana
• 異常値検知 = Norikra
• ポータビリティ = docker
![Page 19: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/19.jpg)
サービスやプロセスを監視し、 自動メンテナンスや復旧を行うためのOSS
http://mmonit.con/monit/ monit
![Page 20: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/20.jpg)
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を使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/21.jpg)
データ集約基盤の中身
• データ集約 = Fluentd
• 自動復旧 = monit
• データ可視化 = elasticsearch, kibana
• 異常値検知 = Norikra
• ポータビリティ = docker
![Page 22: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/22.jpg)
elasticsearch + kibana fluent-plugin-elasticsearchで超簡単に可視化
データ可視化
![Page 23: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/23.jpg)
データ集約基盤の中身
• データ集約 = Fluentd
• 自動復旧 = monit
• データ可視化 = elasticsearch, kibana
• 異常値検知 = Norikra
• ポータビリティ = docker
![Page 24: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/24.jpg)
SQLでスキーマレスなストリーム処理ができるOSS
Norikra http://norikra.github.io/
![Page 25: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/25.jpg)
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を使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/26.jpg)
データ集約基盤の中身
• データ集約 = Fluentd
• 自動復旧 = monit
• データ可視化 = elasticsearch, kibana
• 異常値検知 = Norikra
• ポータビリティ = docker
![Page 27: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/27.jpg)
OSSのコンテナ管理ツール
docker http://www.docker.com/
![Page 28: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/28.jpg)
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を使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/29.jpg)
• データ集約 = Fluentd
• 自動復旧 = monit
• データ可視化 = elasticsearch, kibana
• 異常値検知 = Norikra
• ポータビリティ = docker
まとめ データ集約基盤の中身
![Page 30: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/30.jpg)
• td-agentは安定していて運用が楽。
• これまでに特に大きな障害もなし。
• データ可視化はes & kibanaが楽ちん。
• Norikraは他にも使い道はいろいろありそう。
• docker超便利。
どうだったか。
![Page 31: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/31.jpg)
• td-agent2に置き換えていきたい。
• Bigqueryなどにも本格的に貯めていきたい。
• Treasure Agent Monitoring Serviceも試していきたい。
• Norikraはリアルタイム集計用途で他サービスへも展開していきたい。
• dockerは今後も各種アプリやプロセスの配布に使っていきたい。
今後どうしていきたいか。
![Page 32: FluentdやNorikraを使った データ集約基盤への取り組み紹介](https://reader033.vdocuments.pub/reader033/viewer/2022052212/556a7053d8b42ab0468b52aa/html5/thumbnails/32.jpg)
最後に