wiki:linux/Fluentd

Version 3 (modified by yuna, 3 years ago) (diff)

--

Fluentでログ管理

CentOSにFluentdをインストール

下記のコマンドを叩くと、Fluentd開発元のTreasuredata謹製のFluentdがインストールされる。

$ curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh

プロキシ経由でWebにアクセスする場合は、/etc/yum.confにプロキシの設定を記述する。

/etc/init.d/td-agent start

でFluentdのエージェントが起動。

使ってみる

HTTP経由でログ出力、

$ curl -X POST -d 'json={"post":"message"}' http://localhost:8888/debug.post

fluent-catを利用してログ出力

$ echo '{"cat":"message"}' |/opt/td-agent/embedded/bin/fluent-cat  --json debug.cat

/var/log/td-agent/td-agent.logにログが出力される。

2015-11-07 12:53:46 +0900 debug.post: {"post":"message"}
2015-11-07 12:54:18 +0900 debug.cat: {"cat":"message"}

OpenStackのログを管理してみる

例えば、こんな感じのログがあるとする。

2014-05-21 13:01:55.215 6322 INFO nova.osapi_compute.wsgi.server [-] (6322) accepted ('192.168.66.128', 42247)
2014-05-21 13:01:55.968 6322 DEBUG nova.api.openstack.wsgi [-] No Content-Type provided in request get_body /usr/lib/python2.7/dist-packages/nova/api/openstack/wsgi.py:835
2014-05-21 13:01:55.998 6322 DEBUG nova.api.openstack.wsgi [-] Calling method <bound method Versions.multi of <nova.api.openstack.compute.versions.Versions object at 0x3908150>> _process_stack /usr/lib/python2.7/dist-packages/nova/api/openstack/wsgi.py:962
2014-05-21 13:01:56.286 6322 INFO nova.osapi_compute.wsgi.server [-] 192.168.66.128 "GET /v237da0ad900aa4119bc743d59975e1bce/images/detail HTTP/1.1" status: 300 len: 486 time: 0.6088369

Fluentdは、正規表現を利用してログを解析し、タグ(属性)をつけて保存することができる。

<source>
  type tail
  path /var/log/nova/nova-api.log
  pos_file /var/log/td-agent/nova-api.log.pos
  tag nova-api.log
  format /^(?<date>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3} \d{4}) (?<level>[^ ]*) (?<class>[^ ]*) \[(?<tag>[^ ]*)] (?<message>.*)$/
</source>

<match nova-api.log>
  type file
  path /var/log/td-agent/openstack.log
</match>

/var/log/td-agent/openstack.log.xxx ファイルにログが書き出されるようになる。他のマシンにログを転送する場合は、fowardを設定する。

<match nova-api.**>
  type forward
  host logserver
</match>

転送されたログサーバで、matchルールを記述すれば、ログに出力できる。