Nginxのログを外部のFluentdに転送する検証をしてみます。

log_format  ltsv  'time:$time_iso8601\t'
                      'remote_addr:$remote_addr\t'
                      'request:$request\t'
                      'request_method:$request_method\t'
                      'request_length:$request_length\t'
                      'request_uri:$request_uri\t'
                      'uri:$uri\t'
                      'query_string:$query_string\t'
                      'status:$status\t'
                      'bytes_sent:$bytes_sent\t'
                      'body_bytes_sent:$body_bytes_sent\t'
                      'referer:$http_referer\t'
                      'useragent:$http_user_agent\t'
                      'forwardedfor:$http_x_forwarded_for\t'
                      'request_time:$request_time\t'
                      'upstream_response_time:$upstream_response_time';
access_log  /var/log/nginx/access.log ltsv;


ログファイルのフォーマットは上記のようにtabで区切られたltsv形式を採用します。
WEBサーバのアクセスログに適しているようです。

[root@nginx01 ~]# less /var/log/nginx/access.log



time:2016-04-06T00:58:33+09:00  remote_addr:172.17.9.91 request:GET / HTTP/1.1  request_method:GET      request_length:402      request_uri:/   uri:/index.html query_string:-  status:304      bytes_sent:180  body_bytes_sent:0       referer:-       useragent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0      forwardedfor:-  request_time:0.000      upstream_response_time:-

このようなログになります。

[root@nginx01 ~]# cat /etc/yum.repos.d/treasuredata.repo
[treasuredata]
name=TreasureData
baseurl=http://packages.treasure-data.com/redhat/$basearch
gpgcheck=0

[root@nginx01 ~]# yum --enablerepo=treasuredata install td-agent



インストール:
  td-agent.x86_64 0:1.1.21-0

依存性関連をインストールしました:
  compat-libtermcap.x86_64 0:2.0.8-49.el6                compat-readline5.x86_64 0:5.2-17.1.el6
  openssl098e.x86_64 0:0.9.8e-18.el6_5.2                 td-libyaml.x86_64 0:0.1.4-1


完了しました!

公式のレポジトリを使用してnginx側にもfluentdをインストールします。

[root@nginx01 ~]# chkconfig td-agent on
[root@nginx01 ~]# /usr/lib64/fluent/ruby/bin/fluent-gem update


サービスの起動設定、fluentdプラグインのインストールを行ないます。

[root@nginx01 ~]# vi /etc/td-agent/td-agent.conf

<source>
    type tail
    path /var/log/nginx/access.log
    pos_file /var/log/td-agent/buffer/access.log.pos
    format none
    tag nginx.access
</source>

<match *.**>
  type forward
  retry_limit 5
  flush_interval 5s
  <server>
    host 192.168.200.2
    port 24224
  </server>
</match>


nginxのログファイルを外部のfluentdサーバに転送する設定ファイルを作成します。

[root@nginx01 ~]# mkdir /var/log/td-agent/buffer
[root@nginx01 ~]# touch /var/log/td-agent/buffer/access.log.pos
[root@nginx01 ~]# chmod 777 /var/log/td-agent/buffer/access.log.pos


posファイルは自動的に作成されないので、この時点で作成します。