Centos7 nginxのログをltsvに変更

centos7

通常形式のログはログ解析、集計をするときに区切りがスペース所によりダブルクォートだったりして、なかなかスムーズに解析できないので、ltsv形式に変更したときのメモ。

ltsvとは何かと言うと簡単に言えば、各項目の区切りをタブにしただけのものでそんな難しいものではないです。

まず、ログの出力フォーマットを定義します。具体的に何があるのかについては本家(英語)を参照。request_bodyはPOSTされてきた値を見るときに便利。ただし、画像などの場合はログが膨大になるので、デバッグなど必要時だけ入れるのがオススメ。

# vi /etc/nginx/nginx.conf

http {
    log_format  ltsv  'time:$time_iso8601\t'
                      'host:$remote_addr\t'
                      'method:$request_method\t'
                      'uri:$request_uri\t'
                      'status:$status\t'
                      'size:$body_bytes_sent\t'
                      'reqtime:$request_time\t'
                      'apptime:$upstream_response_time\t'
                      'referer:$http_referer\t'
                      'ua:$http_user_agent\t';
                      #'request_body:$request_body\t';

次に設定を入れたいサービス(ドメイン)に設定を反映します。以下はドメインwww.ukkari-san.net の場合。上が元々の設定で、下が変更後。

# vi /etc/nginx/conf.d/www.ukkari-san.net
    #access_log  /var/log/nginx/iitan.jp.access.log  main;
    access_log  /var/log/nginx/iitan.jp.access.log  ltsv;

保存したら設定チェックの後にリロードして完了。

# nginx -t
# service nginx reload

コメント

タイトルとURLをコピーしました