Riak2.0과 Fluentd의 협력

모두가 하는 Riak Advent Calendar 8일째.
일주일에 기본 조작을 마쳤으므로, 점점 진행하자!
이번은 첫 응용편.
대인기의 Fluentd 제휴다.

이번에 하고 싶은 일



하나의 개발 환경에서 apache 액세스 로그를 riak에 넣습니다.
즉 이것을 시도하고 싶다.


Ruby, Fluentd 및 fluent-plugin-riak 설치



덧붙여서 지금까지 계속 쓰고 잊었지만, CentOS 6.4.
[vagrant@localhost ~]$ wget http://www.dnsbalance.ring.gr.jp/archives/lang/ruby/2.0/ruby-2.0.0-p353.tar.gz
[vagrant@localhost ~]$ tar zxvf ruby-2.0.0-p353.tar.gz
[vagrant@localhost ~]$ cd ruby-2.0.0-p353
[vagrant@localhost ruby-2.0.0-p353]$ /configure
[vagrant@localhost ruby-2.0.0-p353]$ make
[vagrant@localhost ruby-2.0.0-p353]$ sudo make install
[vagrant@localhost ~]$ curl -L http://toolbelt.treasuredata.com/sh/install-redhat.sh | sh
[vagrant@localhost ~]$ sudo service td-agent start
Starting td-agent:                                         [  OK  ]
[vagrant@localhost ~]$ sudo /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-riak

riak과 fluentd의 설정을 한다.
fluent-plugin-riak 설정은 README을 참조하십시오.
또, plugin적으로 Riak의 백엔드는 eLeveldb에 한정된다.
그 설정도 함께 실시한다.
설정 변경 후에는 riak의 재기동을 잊지 않는 것.
[vagrant@localhost ~]$ cat /etc/td-agent/td-agent.conf
<source>
      type tail
      format apache
      path /var/log/httpd/access_log
      tag riak.apache
</source>
<match riak.**>
      type riak
      buffer_type memory
      flush_interval 10s
      retry_limit 5
      retry_wait 1s
      buffer_chunk_limit 256m
      buffer_queue_limit 8096
      nodes 127.0.0.1:8087
</match>

[vagrant@localhost riak]$ sed -e 's/storage_backend = bitcask/storage_backend = eleveldb/' \
> -i rel/riak/etc/riak.conf

[vagrant@localhost riak]$ rel/riak/bin/riak restart
ok

그리고 localhost에 curl하고 riak에서 그것을 볼 수 있다면 fluentd에서 riak로 로그를 저장할 수 있습니다.
fluent-plugin-riak에 의해 fluentlog라는 bucket에 uuid를 key로 해 저장된다.
따라서 먼저 유효한 key를 찾아서 value를 살펴보자.
[vagrant@localhost]$ sudo chmod g+rx /var/log/httpd
[vagrant@localhost]$ curl localhost

[vagrant@localhost]$ curl http://localhost:8098/buckets/fluentlog/keys?keys=true
{"keys":["2013-12-08-02db1782-ea02-4549-addf-94816f42acb9"]}

[vagrant@localhost ~]$ curl http://localhost:8098/buckets/fluentlog/keys/2013-12-08-02db1782-ea02-4549-addf-94816f42acb9
[{"host":"::1","user":"-","method":"GET","path":"/","code":"403","size":"5039","referer":"-","agent":"curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2","time":"2013-12-08T13:14:30Z","tag":"riak.apache"}]

향후 전망



이제 apache에 대한 로그 데이터를 riak에 넣을 수있었습니다.
물론 넣어 끝이 아니라 다음은 해석을 생각한다.
이것에는 여러 가지 방법이 있습니다.
  • Yokozuna
  • 2i를 사용하여 MapReduce

  • 있을 것입니다.
    Yokozuna는 요전날의 어드벤트 캘린더에서도 만난 Riak2.0의 새로운 전문 검색 기능.
    fluentd로부터의 로그는 JSON이 되어 riak에 들어가지만, 그 JSON에 solr풍의 레인지 쿼리를 걸 수도 있는 것 같다.
    이것이 빠르고 강력한 조작을 할 수 있는 방법일 것이다.

    2i는 2차 인덱스로서 백엔드에 eLevelDB를 지정하는 것으로 사용 가능하게 되는 인덱스이다.
    기회가 있으면, 향후의 엔트리로 Riak에 있어서의 MapReduce를 접할지도 모르기 때문에 거지 기대!
    아니면 당신이 쓰는거야!

    요약



    Riak은 데이터베이스입니다.
    데이터를 넣어 활용하여 처음으로 용을 이룬다.
    점점 넣자! 점점 검색하자!
    번거로운 일은 모두 Riak에게 맡기고, 우리는 본질에 집중하자!

    추신



    덧붙여서 이번 주 12/11은 Riak SCR이 개최된다.
    아직 약간의 테두리가 있으므로, 흥미가 있는 사람은 부담없이 참가해 보자!

    사과



    실은… 8월에 내가 블로그에 쓴 자료
    가필 수정판이라고 하는 것으로 부탁합니다…

    좋은 웹페이지 즐겨찾기