dockerでfluentdを試す

systemdからFluentdにデータを流し込む - Qiita
http://qiita.com/kiyoto/items/a11b49333dc587e0526a
経由でCentOS7対応入ったとかなので2.1.3で試してみる。
ただし、systemd用ファイルはまだ入っていないみたい。

<blockquote class="twitter-tweet" lang="ja"><p>適当訳：あ、rpmについて言っとくの忘れてた。新規対応した7用のrpmだけど、systemd関連ファイル入ってないから。自分で書いてね！そのうちデフォで入れるつもりだけどまぁもうちっと待っててね。フィードバックよろ！ <a href="http://t.co/4o9VjIJAej">http://t.co/4o9VjIJAej</a> <a href="https://twitter.com/hashtag/fluentd?src=hash">#fluentd</a></p>&mdash; ymko_diary (@ymko_diary) <a href="https://twitter.com/ymko_diary/status/547392522532573184">2014, 12月 23</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

# CentOS7環境の構築

```bash
$ docker run -p 24224:24224/tcp -p 24224:24224/udp -p 9292:9292 -p 8888:8888 -i -t centos:centos7 /bin/bash
```

設定さえできていれば一行です。まじ便利dockerさん。
ポートの解説
・24224 fluentdに送り込むポートudpもいるらしい
・9292  fluentd-uiのポート。ブラウザで簡単設定
・8888　httpから送り込むテスト用

# fluentdのインストール

```bash
bash-4.2# curl -O http://packages.treasuredata.com.s3.amazonaws.com/2/redhat/7/x86_64/td-agent-2.1.3-0.x86_64.rpm
bash-4.2# rpm -ivh td-agent-2.1.3-0.x86_64.rpm
warning: /data/td-agent-2.1.3-0.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID a12e206f: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:td-agent-2.1.3-0                 ################################# [100%]
adding 'td-agent' group...
adding 'td-agent' user...
Installing default conffile...
prelink detected. Installing /etc/prelink.conf.d/td-agent-ruby.conf ...
Configure td-agent to start, when booting up the OS...

bash-4.2# yum install initscripts
bash-4.2# /usr/sbin/td-agent-ui start
```

# fluentdの設定（ブラウザで簡単）

ブラウザで「http://"IPアドレス":9292」へ。
・アカウント名は"admin"
・パスワードは"changeme"

設定
右三角開始

# ログを送ってみる：Perl

・左ペインから「ソースと出力先の追加」
・出力－標準出力（ログ） 
・Matchの入力BOXに”fluentd.test.**”と入力。Output typeはjsonのまま
・設定する

```bash
$ cpanm Fatal
$ cpanm Fluent::Logger
$ cat test.pl
use Fluent::Logger;
my $logger = Fluent::Logger->new(
    host => '127.0.0.1',
    port => 24224,
    tag_prefix => 'fluentd.test',
);
$logger->post("follow", { "entry1" => "value1", "entry2" => 2 });
```

```txt:ログ
2014-12-23 15:19:45 +0000 fluentd.test.follow: {"entry1":"value1","entry2":2}
```

このように出力が出れば成功。

# ログを送ってみる：http

初期設定で8888ポートで受け付けているのでcurlで１コマンド

```bash
$ curl -X POST -d 'json={"test":"test via http."}' http://localhost:8888/debug.http
```

```txt:ログ
2014-12-23 15:22:36 +0000 debug.http: {"test":"test via http."}

```

このように出れば成功

# 所感

思ったよりセッティングは簡単な印象。
ドキュメントも公式でしっかりしてるので、あとはDBに入れてなんとかとかも行けそう。

Quickstart Guide | Fluentd
http://docs.fluentd.org/articles/quickstart

td-agent-uiとかいうのが/usr/sbinに入っていたのでなんだこれはとみてみたら、Fluentd Advent Calendar 2014で紹介されてました。かなり便利ですね。

fluentd-ui を改めて使ってみる - Qiita
http://qiita.com/inokappa/items/ad0580d5bb54991f45dc


# 参考

CoreOS docker のコマンド - わすれないうちにメモしよう
http://d.hatena.ne.jp/kt_hiro/20140809/1407545821

Dockerを使う際、コンテナから状態を持つファイルを分離する方法 - Qiita
http://qiita.com/nyarla/items/e1eebd5a0b7b23905c42

dockerでfluentdを動かすときはudpも意識しましょう - Qiita
http://qiita.com/devneko/items/d598df1ba7a38bbdf730

fluentdの簡単な使い方、設定方法一覧 - Hive Color
http://hivecolor.com/id/37

fluentd-ui を改めて使ってみる - Qiita
http://qiita.com/inokappa/items/ad0580d5bb54991f45dc

fluentd を使ってみる - いますぐ実践! Linuxシステム管理 / Vol.253
http://www.usupi.org/sysad/253.html

クイックスタートガイド | Fluentd
http://docs.fluentd.org/ja/articles/quickstart

Data Import from Perl Applications | Fluentd
http://docs.fluentd.org/ja/articles/perl