Ubuntu
fluentd
docker

Docker&Ubuntu初心者がfluentdを使ってみた

fluentdとは

fluentdはオープンソースのデータコレクターやデータログ収集ツールでデーモンとして動作します。デーモンとはUnix系のOSでいつも常駐しているプログラムのことです。今のところfluentdはLinux上での動作が主に想定されています。読み方ですが フルエントディーです。プラグインでGoogleのBigqueryが使えるので近いうちに導入しようと思います。

環境

macOs
Docker for mac
ローカル環境をぶっ壊すのがとても怖いので、Docker上でやることにしました。
Dockerのインストールは こちらへ
https://www.docker.com/docker-mac

$ docker --version
Docker version 18.06.0-ce, build 0ffa825

dockerがインストールされたことが確認できました。

Ubuntu:xenialのイメージを取得する。

とても簡単です。1行で終わります。

$ docker pull ubuntu:xenial

取得したイメージは以下で確認できます。

$ docker images

REPOSITORY   TAG      IMAGE ID     CREATED      SIZE
ubuntu      xenial   7aa3602ab41e 11 days ago   115MB

このイメージをもとに、Containerを起動しましょう
root@06b0ca1235f9:#
のようになれば成功です

$ docker run --name fdtest01 -it ubuntu:xenial /bin/bash

CONTAINER ID  IMAGE             COMMAND      CREATED              STATUS      PORTS     NAMES
06b0ca1235f9 ubuntu:xenial  "/bin/bash"  About an hour ago   Up About an hour         fdtest01

起動しました。

あとあと必要なコマンドが使えるようにしておきます。

# apt-get update 
# apt-get install sudo
# apt-get install curl 
# apt-get install vim

fluentdをインストールする。

いよいよfluentdのインストールです。
ここら辺は公式を見てあげればいいと思います。fluentdですが、td-agentというものをインストールします。以後もこれがよく出てくるんので一緒に覚えておくといいと思います。

https://docs.fluentd.org/v1.0/articles/install-by-deb#step-2:-launch-daemon

# curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-xenial-td-agent3.sh | sh

これでfluentdがUbuntu上にインストールされました。

td-agent(fluentd)の起動やストップ、再起動は以下のようにします

# /etc/init.d/td-agent start
# /etc/init.d/td-agent stop
# /etc/init.d/td-agent restart

スタートしてあげたのちに、設定ファイルを確認しましょう。
諸々の設定ファイルは、
/etc/td-agent にあります。conf.d , plugin, td-agent.conf らです。
td-agent.confをvimコマンドで見てあげると、http通信は

# HTTP input
# POST http://localhost:8888/<tag>?json=<json>
# POST http://localhost:8888/td.myapp.login?json={"user"%3A"me"}
# @see http://docs.fluentd.org/articles/in_http
<source>
  @type http
  @id input_http
  port 8888
</source>
## live debugging agent
<source>
  @type debug_agent
  @id input_debug_agent
  bind 127.0.0.1
  port 24230
</source>

とありますね。curlコマンドを使って、POSTメソッドでlocalhost:8888でhttp通信して見ます。

# curl -X POST -d 'json={"test":"hello fluentd"}' http://localhost:8888/debug.test

試しに、ログを確認してみましょう。
ログは  /var/log/td-agentにある td-agent.logに出力されています。

2018-08-07 08:40:44.262606600 +0000 debug.test: {"test":"hello fluentd"}

ログに出力がされていました。
何か間違いや訂正等ありましたらご連絡ください。