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

Post on 31-May-2015

7.612 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

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 <ksoeda@r.recruit.co.jp> 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は今後も各種アプリやプロセスの配布に使っていきたい。

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

最後に

top related