fluentdやnorikraを使った データ集約基盤への取り組み紹介
DESCRIPTION
Hadoop Conference Japan 2014 LTの資料になります。TRANSCRIPT
FluentdやNorikraを使った データ集約基盤への取り組み紹介
Hadoop Conference Japan 2014 LT
添田健輔 そえだけんすけ
そえだ けんすけ
! 添田 健輔
! Twitter:@soestudio
! 所属:リクルートテクノロジーズ
! イクメンエンジニア
自己紹介
資料の要約
データ集約にはFluentdを、 自動復旧にmonitを、 データ可視化にelasticsearch, kibanaを、 異常値検知にNorikraを、 ポータビリティのためにdockerを使った話し。
データ集約基盤を作った話し
資料の要約
データ集約基盤を作った話し
※Hadoopほとんど関係ない
データ集約といえば
Fluentd!
http://docs.fluentd.org/articles/architecture
Fluentd
http://docs.fluentd.org/articles/architecture
Fluentd ! 超定番のログコレクタ / アグリゲータ。
! 各種データソースを各種データストアに出力可能。
! Inputデータはタグで管理可能。
! Json形式でデータを扱う。
! プラグインで自由に拡張可能。
どのように使っているか?
http://docs.fluentd.org/articles/architecture
Beaconログ S3 Redshift
やっていることは超シンプル!
データをかき集めて貯めるだけ。
※一部加工処理もあり
• データ集約 = Fluentd
• 自動復旧 = monit
• データ可視化 = elasticsearch, kibana
• 異常値検知 = Norikra
• ポータビリティ = docker
データ集約基盤の中身
データ集約基盤の中身
• データ集約 = Fluentd
• 自動復旧 = monit
• データ可視化 = elasticsearch, kibana
• 異常値検知 = Norikra
• ポータビリティ = docker
• 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
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の設定反映
データ集約基盤の中身
• データ集約 = Fluentd
• 自動復旧 = monit
• データ可視化 = elasticsearch, kibana
• 異常値検知 = Norikra
• ポータビリティ = docker
サービスやプロセスを監視し、 自動メンテナンスや復旧を行うためのOSS
http://mmonit.con/monit/ monit
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
自動復旧
データ集約基盤の中身
• データ集約 = Fluentd
• 自動復旧 = monit
• データ可視化 = elasticsearch, kibana
• 異常値検知 = Norikra
• ポータビリティ = docker
elasticsearch + kibana fluent-plugin-elasticsearchで超簡単に可視化
データ可視化
データ集約基盤の中身
• データ集約 = Fluentd
• 自動復旧 = monit
• データ可視化 = elasticsearch, kibana
• 異常値検知 = Norikra
• ポータビリティ = docker
SQLでスキーマレスなストリーム処理ができるOSS
Norikra http://norikra.github.io/
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)" } ]
キューやバッファ溢れ対策など
データ集約基盤の中身
• データ集約 = Fluentd
• 自動復旧 = monit
• データ可視化 = elasticsearch, kibana
• 異常値検知 = Norikra
• ポータビリティ = docker
OSSのコンテナ管理ツール
docker http://www.docker.com/
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するだけでどっかーの環境でも再現可能に!!
• データ集約 = Fluentd
• 自動復旧 = monit
• データ可視化 = elasticsearch, kibana
• 異常値検知 = Norikra
• ポータビリティ = docker
まとめ データ集約基盤の中身
• td-agentは安定していて運用が楽。
• これまでに特に大きな障害もなし。
• データ可視化はes & kibanaが楽ちん。
• Norikraは他にも使い道はいろいろありそう。
• docker超便利。
どうだったか。
• td-agent2に置き換えていきたい。
• Bigqueryなどにも本格的に貯めていきたい。
• Treasure Agent Monitoring Serviceも試していきたい。
• Norikraはリアルタイム集計用途で他サービスへも展開していきたい。
• dockerは今後も各種アプリやプロセスの配布に使っていきたい。
今後どうしていきたいか。
最後に