= 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 > _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は、正規表現を利用してログを解析し、タグ(属性)をつけて保存することができる。 {{{ type tail path /var/log/nova/nova-api.log pos_file /var/log/td-agent/nova-api.log.pos tag nova-api.log format /^(?\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3}) (?[^ ]*) (?[^ ]*) (?[^ ]*) \[(?[^]]*)] (?.*)$/ type file path /var/log/td-agent/openstack.log }}} /var/log/td-agent/openstack.log.xxx ファイルにログが書き出されるようになる。 スタックトレースなど、複数行に渡るログを正しく取得するには、format multilineを利用する。 {{{ type tail path /var/log/nova/nova-api.log,/var/log/nova/nova-manage.log pos_file /var/log/td-agent/os.log.pos tag os.control format multiline format_firstline /\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3} / format1 /^(?