Fluentd
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
]
開始行:
[[Docker]]~
[[Docker/Apache起動イメージ]]~
#contents
** Fluentd とは[#g67c83d3]
[[Docker/Apache起動イメージ]]のログ集約を行うのに Fluentd...
~
Fluentd は Ruby ベースのログ集約ツールです。~
http://www.fluentd.org/
ログをすべて JSON として扱い、~
プラグイン構造で様々な種類のログを読み込み、~
ファイルに書き出したり DB に書き込んだり SaaS(Software a...
~
全てのログを Fluentd で方向整理して管理できるので、~
docker で複数のコンテナを起動してサービスを行い必要がなく...
といった場合に全コンテナ上の Apache のログを一カ所に集め...
~
** 想定状況 [#w82d8425]
コンテナを起動すると Apache が立ち上がる docker イメージ...
Fluentd で収集し mongodb に保存します。~
~
この想定状況で可能な方法は以下のようなものが考えられます。~
~
1. Fluentd もコンテナ内で動作させ、コンテナ内で Fluentd ...
ネットワーク経由で別サーバ上の Fluentd に送信、~
受け取った別サーバ上の Fluentd が mongodb に保存する。~
~
2. コンテナ内の Apache のログが書き込まれる PATH をホスト...
ホストOS上の Fluentd でログファイルを読み込んで mongodb ...
~
~
1. の方法では送信側と受信側の二つの Fluentd をそれぞれサ...
2. の方法では一つの Fluentd がファイルを読んで nosql に書...
~
** install [#h4b39001]
今回は docker のコンテナ内もホストOSも CentOS6 を使用して...
公式サイトの~
[[rpmパッケージからFluentdをインストールする:http://docs....
に従ってインストールします。~
~
上記ドキュメント内にあるように、Fluentd 開発元の treasure...
td-agent という名前でインストールされます。~
docker コンテナ内へのインストールは Dockerfile を使わず、~
Docker/Apache起動イメージ を detach 状態にしないで起動し ...
$ sudo docker run -i -t -p 80:80 centos:apache
bash-4.1# curl -L http://toolbelt.treasuredata.com/sh/in...
インストール完了後動作するか確認を行います。
bash-4.1# /etc/init.d/td-agent start
Starting td-agent: [ OK ]
設定はまだ行っていませんが正常に起動することを確認できた...
bash-4.1# /etc/init.d/td-agent stop
Stopping td-agent: [ OK ]
この後設定ファイルを編集し bash を抜けてコンテナを終了さ...
docker commit で Fluentd をインストールした状態をイメージ...
~
ホストOS上へのインストールは、 docker コンテナ操作の部分...
**設定ファイル [#z82c2efd]
Fluentd の設定ファイルは~
/etc/td-agent/td-agent.conf
です。~
~
ログの入力元は Sourceディレクティブ~
<source>
.....
</source>
ログの出力先は Matchディレクティブ~
<match>
...
</match>
として記述します。
**1. コンテナ内とリモートサーバ上の Fluentd によるログ記...
コンテナ内の送信側 Fluentd の設定は以下のようになります。
<source>
type tail
path /var/log/httpd/access_log
tag apache.access
pos_file /var/log/td-agent/httpd-access_log.pos
format apache2
</source>
<match apache.access>
type forward
send_timeout 60s
recover_wait 30s
heartbeat_interval 1s
<server>
name fluentd-receiver
host 192.168.0.204
port 24224
</server>
</match>
Apache のアクセスログを読み込んでリモートサーバの Fluentd...
この設定で
$ sudo docker run -d -p 80:80 -p 24224:24224 -p 24224:24...
のように Apache と Fluentd で使用する port を forward し...
~
受信側サーバ(上記例では 192.168.0.204) の Fluentd 設定...
<source>
type forward
port 24224
</source>
<match apache.access>
type mongo
host localhost
port 27017
database fluentd
collection apache
flush_interval 10s
</match>
forward されてきたログを mongodb に保存します。~
保存されたログを確認すると以下のように Apache のログが JS...
$ mongo
> show dbs
fluentd 0.203125GB
local 0.078125GB
proj_20140314 0.203125GB
> use fluentd
switched to db fluentd
> show collections
apache
system.indexes
> db.apache.find()
{ "_id" : ObjectId("53a8e94314cbd22e4e000012"), "host" :...
{ "_id" : ObjectId("53a8e94314cbd22e4e000013"), "host" :...
{ "_id" : ObjectId("53a8e94314cbd22e4e000014"), "host" :...
{ "_id" : ObjectId("53a8e98514cbd22e4e000015"), "host" :...
{ "_id" : ObjectId("53a8e98514cbd22e4e000016"), "host" :...
{ "_id" : ObjectId("53a8e98514cbd22e4e000017"), "host" :...
{ "_id" : ObjectId("53a8e98514cbd22e4e000018"), "host" :...
>
**2. ホストOS上の Fluentd によるログ記録 [#td43fd54]
docker コンテナ内では Fluentd を動作させず、~
コンテナを動かしているホストOS上の Fluentd でコンテナ内の...
コンテナ内で Apache のログが書かれるディレクトリを以下の...
ホストOS上にマウントしてコンテナを起動します。~
$ sudo docker run -d -p 80:80 -v /var/log/httpd/:/var/lo...
この状態でコンテナを起動しホストOS上の /var/log/td-agent/...
コンテナ内の Apache のログを読むことができます。~
~
この Apache ログを読み込んで mongodb へ保存する Fluentd ...
<source>
type tail
path /var/log/td-agent/httpd/access_log
tag apache.access
pos_file /var/log/td-agent/httpd-access_log.pos
format apache2
</source>
<match apache.access>
type mongo
host localhost
port 27017
database fluentd
collection apache
flush_interval 10s
</match>
match ディレクティブの設定内容を変更すれば、~
ファイルに書き出すこともリモートサーバー上の Fluentd へ送...
** 更新履歴 [#e981fc69]
2014/06/24 初稿公開 ~
RIGHT:Satoshi OTSUKA
終了行:
[[Docker]]~
[[Docker/Apache起動イメージ]]~
#contents
** Fluentd とは[#g67c83d3]
[[Docker/Apache起動イメージ]]のログ集約を行うのに Fluentd...
~
Fluentd は Ruby ベースのログ集約ツールです。~
http://www.fluentd.org/
ログをすべて JSON として扱い、~
プラグイン構造で様々な種類のログを読み込み、~
ファイルに書き出したり DB に書き込んだり SaaS(Software a...
~
全てのログを Fluentd で方向整理して管理できるので、~
docker で複数のコンテナを起動してサービスを行い必要がなく...
といった場合に全コンテナ上の Apache のログを一カ所に集め...
~
** 想定状況 [#w82d8425]
コンテナを起動すると Apache が立ち上がる docker イメージ...
Fluentd で収集し mongodb に保存します。~
~
この想定状況で可能な方法は以下のようなものが考えられます。~
~
1. Fluentd もコンテナ内で動作させ、コンテナ内で Fluentd ...
ネットワーク経由で別サーバ上の Fluentd に送信、~
受け取った別サーバ上の Fluentd が mongodb に保存する。~
~
2. コンテナ内の Apache のログが書き込まれる PATH をホスト...
ホストOS上の Fluentd でログファイルを読み込んで mongodb ...
~
~
1. の方法では送信側と受信側の二つの Fluentd をそれぞれサ...
2. の方法では一つの Fluentd がファイルを読んで nosql に書...
~
** install [#h4b39001]
今回は docker のコンテナ内もホストOSも CentOS6 を使用して...
公式サイトの~
[[rpmパッケージからFluentdをインストールする:http://docs....
に従ってインストールします。~
~
上記ドキュメント内にあるように、Fluentd 開発元の treasure...
td-agent という名前でインストールされます。~
docker コンテナ内へのインストールは Dockerfile を使わず、~
Docker/Apache起動イメージ を detach 状態にしないで起動し ...
$ sudo docker run -i -t -p 80:80 centos:apache
bash-4.1# curl -L http://toolbelt.treasuredata.com/sh/in...
インストール完了後動作するか確認を行います。
bash-4.1# /etc/init.d/td-agent start
Starting td-agent: [ OK ]
設定はまだ行っていませんが正常に起動することを確認できた...
bash-4.1# /etc/init.d/td-agent stop
Stopping td-agent: [ OK ]
この後設定ファイルを編集し bash を抜けてコンテナを終了さ...
docker commit で Fluentd をインストールした状態をイメージ...
~
ホストOS上へのインストールは、 docker コンテナ操作の部分...
**設定ファイル [#z82c2efd]
Fluentd の設定ファイルは~
/etc/td-agent/td-agent.conf
です。~
~
ログの入力元は Sourceディレクティブ~
<source>
.....
</source>
ログの出力先は Matchディレクティブ~
<match>
...
</match>
として記述します。
**1. コンテナ内とリモートサーバ上の Fluentd によるログ記...
コンテナ内の送信側 Fluentd の設定は以下のようになります。
<source>
type tail
path /var/log/httpd/access_log
tag apache.access
pos_file /var/log/td-agent/httpd-access_log.pos
format apache2
</source>
<match apache.access>
type forward
send_timeout 60s
recover_wait 30s
heartbeat_interval 1s
<server>
name fluentd-receiver
host 192.168.0.204
port 24224
</server>
</match>
Apache のアクセスログを読み込んでリモートサーバの Fluentd...
この設定で
$ sudo docker run -d -p 80:80 -p 24224:24224 -p 24224:24...
のように Apache と Fluentd で使用する port を forward し...
~
受信側サーバ(上記例では 192.168.0.204) の Fluentd 設定...
<source>
type forward
port 24224
</source>
<match apache.access>
type mongo
host localhost
port 27017
database fluentd
collection apache
flush_interval 10s
</match>
forward されてきたログを mongodb に保存します。~
保存されたログを確認すると以下のように Apache のログが JS...
$ mongo
> show dbs
fluentd 0.203125GB
local 0.078125GB
proj_20140314 0.203125GB
> use fluentd
switched to db fluentd
> show collections
apache
system.indexes
> db.apache.find()
{ "_id" : ObjectId("53a8e94314cbd22e4e000012"), "host" :...
{ "_id" : ObjectId("53a8e94314cbd22e4e000013"), "host" :...
{ "_id" : ObjectId("53a8e94314cbd22e4e000014"), "host" :...
{ "_id" : ObjectId("53a8e98514cbd22e4e000015"), "host" :...
{ "_id" : ObjectId("53a8e98514cbd22e4e000016"), "host" :...
{ "_id" : ObjectId("53a8e98514cbd22e4e000017"), "host" :...
{ "_id" : ObjectId("53a8e98514cbd22e4e000018"), "host" :...
>
**2. ホストOS上の Fluentd によるログ記録 [#td43fd54]
docker コンテナ内では Fluentd を動作させず、~
コンテナを動かしているホストOS上の Fluentd でコンテナ内の...
コンテナ内で Apache のログが書かれるディレクトリを以下の...
ホストOS上にマウントしてコンテナを起動します。~
$ sudo docker run -d -p 80:80 -v /var/log/httpd/:/var/lo...
この状態でコンテナを起動しホストOS上の /var/log/td-agent/...
コンテナ内の Apache のログを読むことができます。~
~
この Apache ログを読み込んで mongodb へ保存する Fluentd ...
<source>
type tail
path /var/log/td-agent/httpd/access_log
tag apache.access
pos_file /var/log/td-agent/httpd-access_log.pos
format apache2
</source>
<match apache.access>
type mongo
host localhost
port 27017
database fluentd
collection apache
flush_interval 10s
</match>
match ディレクティブの設定内容を変更すれば、~
ファイルに書き出すこともリモートサーバー上の Fluentd へ送...
** 更新履歴 [#e981fc69]
2014/06/24 初稿公開 ~
RIGHT:Satoshi OTSUKA
ページ名:
BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。